找到由rect和line形成的2d多边形区域

时间:2016-02-01 22:00:36

标签: algorithm geometry 2d area rectangles

我正在Unity中制作游戏。有一个矩形与一条直线相交。我需要找到rect的哪个部分更大,多少。有谁知道算法怎么做? Example

使用点设置Rect和行(4表示rect,2表示行)

2 个答案:

答案 0 :(得分:3)

该线的隐式方程是

S(x,y) = (x - x0) (y1 - y0) - (y - y0) (x1 - x0) = 0

当您插入角落的坐标时,S(x, y)的符号会告诉您线路的哪一侧。更好的是,如果您在两个角评估SaSb并且它们具有不同的符号,则交叉点位于Sa / (Sa - Sb)边的ab处。

现在,按顺时针顺序依次处理所有四条边。对于每个边缘,如果是正的则保持起始角并保持交叉点(如果有的话)。最后,您将得到0到5个点,用于定义正多边形的凸多边形。

enter image description here

该区域由shoelace公式找到。

答案 1 :(得分:0)

确定阴影区域是否纯粹为三角形,如果是,则计算该三角形的面积(a * b)/ 2,这将解决右手图。

对于左侧图,将区域视为三角形和矩形。通过将三角形区域和矩形区域相加来计算阴影区域。

HTH