查找由矩形和直线形成的二维多边形的面积

Find area of 2d polygon formed by rect and line

我正在使用 Unity 制作游戏。有一个被直线相交的矩形。我需要找到 rect 的哪一部分更大以及有多少。有谁知道算法如何做到这一点?

矩形和直线用点设置(矩形为 4 个,直线为 2 个)

判断阴影区域是否为纯三角形,如果是,则计算该三角形的面积 (a * b) / 2 ,右手图即解。

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

HTH

直线的隐式方程为

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

当你插入一个角的坐标时,S(x, y) 的符号告诉你你在这条线的哪一边。更好的是,如果您在两个角处评估 SaSb 并且它们具有不同的符号,则交点位于 ab.[=18= 边的分数 Sa / (Sa - Sb) 处]

现在,顺时针依次处理所有四个边。对于每条边,如果为正,则保留起始角,如果有交点,则保留交点。最后,您将获得 0 到 5 个点定义正域中的凸多边形。

面积由shoelace公式求得。