查找由矩形和直线形成的二维多边形的面积
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)
的符号告诉你你在这条线的哪一边。更好的是,如果您在两个角处评估 Sa
和 Sb
并且它们具有不同的符号,则交点位于 ab
.[=18= 边的分数 Sa / (Sa - Sb)
处]
现在,顺时针依次处理所有四个边。对于每条边,如果为正,则保留起始角,如果有交点,则保留交点。最后,您将获得 0 到 5 个点定义正域中的凸多边形。
面积由shoelace公式求得。
我正在使用 Unity 制作游戏。有一个被直线相交的矩形。我需要找到 rect 的哪一部分更大以及有多少。有谁知道算法如何做到这一点?
矩形和直线用点设置(矩形为 4 个,直线为 2 个)
判断阴影区域是否为纯三角形,如果是,则计算该三角形的面积 (a * b) / 2 ,右手图即解。
对于左手图,将区域视为三角形和矩形。通过将三角形面积和矩形面积相加来计算阴影面积。
HTH
直线的隐式方程为
S(x,y) = (x - x0) (y1 - y0) - (y - y0) (x1 - x0) = 0
当你插入一个角的坐标时,S(x, y)
的符号告诉你你在这条线的哪一边。更好的是,如果您在两个角处评估 Sa
和 Sb
并且它们具有不同的符号,则交点位于 ab
.[=18= 边的分数 Sa / (Sa - Sb)
处]
现在,顺时针依次处理所有四个边。对于每条边,如果为正,则保留起始角,如果有交点,则保留交点。最后,您将获得 0 到 5 个点定义正域中的凸多边形。
面积由shoelace公式求得。