2

我很确定这可以通过一些基本的三角方程来解决,但不幸的是我无法弄清楚。

我需要的是:

如何在线性矢量路径 2d 上找到下一个点

给定 2d 中两个点的 x,y 坐标,我需要找到向量上从一个点到另一个点的下一个点。基本上找到最近的线性路径。

例如:在上图中,我们给定了两个点,我们想从蓝点到红点沿着路径移动,因此我们需要每一步找到下一个(灰点)直到我们到达它。

任何帮助深表感谢!

4

2 回答 2

4

看看Bresenham 的线算法

于 2012-05-30T22:33:36.180 回答
0

谢谢大家的建议!我终于想通了。这是查找线性向量下一个点的方法的基本 Java 实现(假设我们每步移动 1 个点)

  public int[] getNextLinePoint(int x,int y,int x2, int y2) {
    int w = x2 - x;
    int h = y2 - y;
    int dx1 = 0, dy1 = 0, dx2 = 0, dy2 = 0;
    if (w<0) dx1 = -1; else if (w>0) dx1 = 1;
    if (h<0) dy1 = -1; else if (h>0) dy1 = 1;
    if (w<0) dx2 = -1; else if (w>0) dx2 = 1;
    int longest = Math.abs(w);
    int shortest = Math.abs(h);
    if (!(longest>shortest)) {
        longest = Math.abs(h);
        shortest = Math.abs(w);
        if (h<0) dy2 = -1; else if (h>0) dy2 = 1;
        dx2 = 0;            
    }
    int numerator = longest >> 1;
    numerator += shortest;
    if (!(numerator<longest)) {
        numerator -= longest;
        x += dx1;
        y += dy1;
    } else {
        x += dx2;
        y += dy2;
    }
    int[] res = {x, y};
    return res;
}

此代码以 2 元素 int[] 数组的形式返回下一个 x,y 坐标。再次感谢大家!

于 2012-05-31T00:02:08.130 回答