我在python中工作,我有上一个(x_prev,y_prev) = (1.5, 3)
坐标和当前的(x,y) = (2, 3.2)
坐标,它们之间有angle
差异,我希望下一个坐标与当前的(x,y)
坐标在一定距离d
处,方向相同。我试过使用旋转和平移公式,但没有给出正确的答案。这是迄今为止我尝试的代码
d = 0.5
angle = np.arctan2((y - y_prev), (x - x_prev))
x_ = x * np.cos(angle) - y * np.sin(angle) + (d * np.sinc(angle_/2)* np.cos(angle/2))
y_ = x * np.sin(angle) + y * np.cos(angle) + (d * np.sinc(angle_/2)* np.sin(angle/2))
预期的坐标大约是(x_,y_) = (2.5, 3.6)
,与当前的方向相同,但它会导致错误的坐标,因此是否有我遗漏的内容
提前谢谢
我部分同意你的问题是几何问题。但是,我添加了一个答案,因为numpy可以让你避免所有你一开始就想做的三角功
您想要的是基于
(x_prev,y_prev)
和(x_now,y_now)
找到点(x_new,y_new)
,这样三个点位于同一条线上,(x_prev,y_prev)
和(x_new,y_new)
之间的距离是一个预设d
如果你能处理正确的二维向量,你就不需要三角函数。可以对向量
(x_now,y_now) - (x_prev,y_prev)
进行规格化,以获得需要从(x_prev,y_prev)
移动到(x_new,y_new)
的直线的方向向量。Numpy让您优雅地处理此问题:以上结果是
(x_new,y_new)=(1.96423835,3.18569534)
。你的点实际上是这样的(x_now,y_now)
几乎在0.5
距离(x_prev,y_prev)
,所以得到的向量与原始向量几乎没有什么不同。但是不管怎样,上面的过程总是会给你一个新的点,它与(x_prev,y_prev)
的角度和(x_now,y_now)
的角度相同,但距离是固定的相关问题 更多 >
编程相关推荐