需要算法的帮助才能像这样从当前位置计算位置(几何 2D)



见下图:

插图 http://img28.imageshack.us/img28/5286/pic1we.png

假设它在安卓设备屏幕上。点 #1 是当前位置。我想在线性蓝线之后获得点 #2 的 (x,y) 位置(假设点 #2 和点 #1 之间的范围是 50dp)。黑匣子是蓝线的源点。

这是什么术语?译本?

有没有人知道算法?

我使用AndEngine开发了Android应用程序,如果您知道有内置功能,请告诉我。Android openGL ES library也是如此。

注意:我不是在寻找使用MoveModifier移动对象的方法。

提前感谢。

Authman的回答很好,但不包括如何到达特定的距离。如果您正在沿线寻找 p2,IMO 在向量中更容易考虑这一点。首先,你找到沿蓝线的向量,它类似于Authman上面描述的过程。如果黑匣子有位置v0 = (x0, y0),第一个点有位置v1 = (x1, y1),那么你的"方向向量"将是v1 - v0 = (x1 - x0, y1 - y0)。这是一个沿蓝线指向的向量。一旦有了它,你把它归一化,使长度是1,然后乘以你想要的距离,在你的例子中是50。如果你想在组件方面做到这一点,这里有一些快速的伪代码:

find_v2(x0, y0, x1, y1):
  direction_x = x1 - x0
  direction_y = y1 - y0
  norm = sqrt(direction_x^2 + direction_y^2)
  direction_x *= 50 / norm
  direction_y *= 50 / norm
  x2 = x1 + direction_x
  y2 = y1 + direction_y

希望对您有所帮助!我不确定你对矢量数学有多满意,但如果你正在做图形的东西,它对于这样的问题真的非常有用;我建议查看一些可汗学院线性代数课程。

您正在寻找的术语是外推法。

如果黑点是点"0",则首先计算直线方程的斜率:

m = ( (d0.y-d1.y) / (d0.x-d1.x) )
然后

你可以沿着这条线进行推断,无论是积极的(远离点 0),还是消极的(朝向它,直到你到达它,然后最终再次远离继续运动)。

dot2.x = d0.x + m*percentage
dot2.y = d0.y + m*percentage

percentage是您与点 1 的距离。因此,1(例如 100%)会让你完全在点 1 上。百分比=0 会让你完全在点 0 上。>1,会让你更接近点 2。<1 会让你越过点 0,依此类推。

--

那里略有修正:

dot2.y = d0.x + m*percentage
dot2.x = (dot2.y - dot0.y) / m

我设置的斜率仅用于计算 dot2 的 y 坐标。由于您已经有了直线的方程,因此可以直接使用它来求解dot2的x坐标。

最新更新