我在那个空间里有一个二维空间和一条光线。
我需要按照数字的顺序获取红色矩形的坐标。
我的尝试: 我有一个双重光线的开始 我有一个值偏航,这是弧度的方向 我这样做是为了获得下一个红色方块的坐标。
double tanyaw = Math.tan(yaw);
if ((int) (x + 1/tanyaw) == (int) x) {
x += 1/tanyaw;
z += Math.signum(tanyaw);
} else {
x += Math.signum(tanyaw);
z += tanyaw;
}
然而:
那是yaw = 3*pi/8
注意这条线是在绘图程序中制作的,并且只是近似正确。
答案 0 :(得分:0)
线方程为:
x = x0 + t*xd
y = y0 + t*yd
为简单起见,定义镜头开始在t = 0时离开,最后一个要测试的位置在t = 1。然后,您可以简单地定义步长(假设您可以简单地计算结束位置x1,y1):
xstep = 1/(x1 - x0)
ystep = 1/(y1 - y0)
xpos = x0
ypos = y0
然后简单循环,直到你使用:
命中交叉点或结束while(!hitsomething()) {
if (xpos + xstep - x0 < ypos + ystep - y0) {
xpos += xstep;
visit(xpos, ypos);
} else {
ypos += ystep;
visit(xpos, ypos);
}
}