我很确定这可以通过一些基本的三角函数方程来解决,但不幸的是我无法弄明白。
我需要的是:
给定2d中两点的x,y坐标,我需要找到矢量上从一点到另一点的 next 点。基本上找到最接近的线性路径。
例如:在上图中我们给出了两个点,我们希望从蓝点到红点沿路径移动,因此我们需要找到每一步的下一个(灰点),直到我们到达它。
非常感谢任何帮助!
答案 0 :(得分:4)
答案 1 :(得分: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坐标。 再次感谢大家!