【发布时间】:2014-08-24 12:58:08
【问题描述】:
我有一个二维空间和该空间中的一条射线。
我需要按数字顺序获取红色矩形的坐标。
我的尝试:
我有一个双射线的起点。
我有一个值偏航,它是以弧度表示的方向。
我这样做是为了得到下一个红色方块的坐标。
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 请注意,这条线是在绘图程序中绘制的,并且只是大致正确。
【问题讨论】:
-
也许是整数除法而不是浮点数?顺便问一下,这是用于碰撞优化的常规网格吗?
-
@huseyintugrulbuyukisik 射线就像枪声,我正在寻找最先被它击中的实体,我这样做是因为我很快就可以在这些方格中找到实体,所以我不'不必检查世界上所有的实体。
-
您正在以小时间步长推进光线位置/波前?也许像一个广泛的阶段?
-
这看起来像一个“像素画线”算法,但在盒子上。 en.wikipedia.org/wiki/Line_drawing_algorithm
标签: algorithm graphics 2d rasterize