Java,生成两点之间点的直接路径

Cal*_*leb 2 java point path

我目前有一个不好的方法,它只是将起点转换为1/-1,具体取决于x/y坐标是否超出或低于当前坐标,并将其添加到ArrayList直到起点.equals(结束) ),这是一个糟糕的解决方案,因为它创建了一个非常糟糕的路径,看起来像下面的黑色路径.

https://dl.dropbox.com/u/64681860/paths.png

我正在尝试在两点之间生成点的直接路径(与Graphics.drawLine相同的行).

我猜我需要使用Math类来获得角度,但我对Math API并不是很熟悉.

sli*_*lim 5

一种有点天真的方式,是计算斜率的比例,而不是角度.

就像是:

float ratio = (y2 - y1) / (x2 - x1);
Run Code Online (Sandbox Code Playgroud)

然后:

width = x2 - x1;
for(int i = 0; i < width; i++) {
    float x = x1 + i;
    float y = y1 + (ratio * i);
    points.add(new Point(x,y));
}
Run Code Online (Sandbox Code Playgroud)

如果浮动不是您所需要的,您需要进行一些转换.

你还需要处理x1 == x2的特殊情况,否则你会得到被零除错误.

使用此方法,线越陡,您将生成的点越少.如果你想要的点均匀分布,无论角度是多少,你都需要打破sin/cos/tan.

至少在主要的8个罗盘方向上对线路进行单元测试,以消除任何毛刺.