如何计算 Java 中两个旋转矩形的交点面积?

how to calculate area of Intersection of Two Rotated Rectangles in Java?

我有两个二维矩形,定义为 (x,y,height,width,angle)。我需要计算这两个矩形相交的大概面积。

enter image description here

我如何在 JAVA 中做到这一点? JAVA 中是否有任何库(例如 Python 中的 shapely 包)可用于此目标? (我不确定 shapely 包如何计算两个矩形的交集面积,但我认为它很适合这个目标)

您可以使用 Sutherland-Hodgman 裁剪算法来计算相交多边形(从三角形到八边形)。它相当于在定义另一个的四个半平面内剪裁其中一个多边形。可能值得将算法专门用于矩形,并且可能使裁剪多边形轴对齐(如 Joop 所建议)。

然后用鞋带公式计算面积

Toussaint (http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.50.7083) 有一个线性时间凸多边形相交的高效算法,但实现起来并不容易,而且对于这么小的目标可能带来的好处不大。