如何计算从正方形表面上的给定点到任何给定方向的边缘的距离?

时间:2017-11-28 22:28:32

标签: python geometry

我试图弄清楚从一个点到正方形表面边缘的距离(无论其方向角度如何)。我附上了我正在谈论的内容。 enter image description here

网格以正方形为中心(尽管画得很差)。从广场中心到圆心的距离。我希望找到一种方法来计算从圆圈到方形边缘的距离,无论它朝向哪个方向,而不必在我的代码中使用很多if-else语句。

如果您有任何好主意,请告诉我们!

1 个答案:

答案 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