我试图弄清楚从一个点到正方形表面边缘的距离(无论其方向角度如何)。我附上了我正在谈论的内容。
网格以正方形为中心(尽管画得很差)。从广场中心到圆心的距离。我希望找到一种方法来计算从圆圈到方形边缘的距离,无论它朝向哪个方向,而不必在我的代码中使用很多if-else语句。
如果您有任何好主意,请告诉我们!
答案 0 :(得分:1)
据我所知,您可以定义坐标和方向,并希望找到交叉点边缘点。制作用于沿两个坐标移动的方程式并计算第一次交叉时间。如果不是,那就没有神奇的方法
vx = Cos(Direction)
vy = Sin(Direction)
x = x0 + vx * t
y = y0 + vy * t
//potential border positions
if vx > 0 then
ex = x2
else
ex = x1
if vy > 0 then
ey = y2
else
ey = y1
//check for horizontal/vertical directions
if vx = 0 then
return cx = x0, cy = ey
if vy = 0 then
return cx = ex, cy = y0
//in general case find times of intersections with horizontal and vertical edge line
tx = (ex - x0) / vx
ty = (ey - y0) / vy
//and get intersection for smaller parameter value
if tx <= ty then
return cx = ex, cy = y0 + tx * vy
else
return cx = x0 + ty * vx, cy = ey