1

见下图:

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

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

这是什么术语?翻译?

有人知道算法吗?

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

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

提前谢谢。

4

2 回答 2

2

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

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

于 2012-04-19T05:10:35.503 回答
1

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

如果黑点是点'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 上。percent=0 会将您准确地放在点 0 上。>1,会让你更靠近点 2。<1 会让你越过点 0,等等。

--

轻微修正:

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

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

于 2012-04-19T04:56:08.150 回答