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

标签 algorithm geometry 2d area rectangles

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

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

最佳答案

直线的隐式方程为

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 找到公式。

关于algorithm - 查找由矩形和直线形成的二维多边形的面积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35141211/

相关文章:

algorithm - 在棋盘中找到所有可能的方 block ,不包括选定的单元格

python - 在 sympy 或替代方案中导出点云方程

algorithm - 按求和算法对数字进行排序

algorithm - 简单、重要的装箱实例

c++ - 给定一个整数数组,找到两个数字,使得它们加起来等于特定的目标数字

c++ - "check"如果两个不同几何形状的物体发生碰撞

javascript - 如何使用 CSS 中的 SVG 设置 SVG 圆填充?

c++ - 用direct2d创建位图图集, "current bitmap"指的是什么?

java - 在 Java 中使用 JPanels 的数独板

java - 坐标对的 2D 抛射运动