我在2D空间中有两个点,我们可以在图中看到,从蓝点移动到红点,我们可以使用等式(1)。其中b是用于限制对数螺线形状的常数,l是−1,1中的随机数,用于控制移动的缩进效果,D表示蓝点与当前点之间的距离
我需要另一个运动,可以从蓝点移动到红点,如图所示
发布于 2021-08-11 19:31:14
你可以使用正弦模型。
对于起点(X0, Y0)
和终点(X1,Y1)
,我们有矢量end- start,确定它的点之间的长度-距离L
,以及矢量Fi
的角度(使用atan2
)。
然后为一些标准情况生成正弦曲线-例如,沿OX轴,具有幅度A
,N
周期用于距离2 * Pi * N
使用参数t
缩放中间点中的正弦波,其中t
在0..1
范围内(t=0对应于起点(X0,Y0)
)
X(t) = t * L
Y(t) = A * Sin(2 * N * Pi * t)
然后使用上面计算的X
和Y
来平移和旋转正弦波
X_result = X0 + X * Cos(Fi) - Y * Sin(Fi)
Y_result = Y0 + X * Sin(Fi) + Y * Cos(Fi)
Python代码示例:
import math
x0 = 100
y0 = 100
x1 = 400
y1 = 200
nperiods = 4
amp = 120
nsteps = 20
leng = math.hypot(x1 - x0, y1 - y0)
an = math.atan2(y1 - y0, x1 - x0)
arg = 2 * nperiods* math.pi
points = []
for t in range(1, nsteps + 1):
r = t / nsteps
xx = r * leng
yy = amp * math.sin(arg * r)
rx = x0 + xx * math.cos(an) - yy * math.sin(an)
ry = y0 + xx * math.sin(an) + yy * math.cos(an)
points.append([rx, ry])
print(points)
绘制点:
https://stackoverflow.com/questions/68748973
复制相似问题