旋转的2D矩形的交叉点或区域
从previous question。我展望未来有两个矩形,他们是这样的:旋转的2D矩形的交叉点或区域
struct Rect
{
NSPoint topLeft;
NSPoint topRight;
NSPoint bottomLeft;
NSPoint bottomRight;
}
我用something similar code检查是否矩形相交(或冲突)。如果2个矩形相交,我想计算第一个矩形或第二个矩形与第一个矩形相交的点(即交点坐标)的相交面积。
如何计算相交点或相交面积。
您可以通过这样确定的交叉点:
foreach line in rectangle 1: line1
foreach line in rectangle 2: line2
find point of intersection for line1, line2
找到两条线的交叉点:
http://local.wasp.uwa.edu.au/~pbourke/geometry/lineline2d/
您可以通过查找找到交集区域交点,并根据这些线分割以创建新的边/删除边。在生成的多边形中可以得到8个点,或者只有3个点(不包括退化情况)。
不,我并没有说这是最有效的方法,但它会工作:)
如果该文章接着下来,这里有一对夫妇更多文章:HTTP:// en.wikipedia.org/wiki/Line_segment_intersection和http://en.wikipedia.org/wiki/Line-line_intersection。我将这些方程式放在这里,但是常用的线相交解算器方程有点乱,并且无助于解释更高层的算法。无论如何,它们都很容易手工派生。另外,你可能想尝试扫描算法,因为你正在处理几行。 – 2011-10-15 22:51:08
你所要求似乎是“多边形交集”的具体情况。 (因为矩形是多边形)。
下面是做这个库:
http://www.cs.man.ac.uk/aig/staff/alan/software/
也许它可以帮助(他们莫名其妙地谈论算法)。但是,如果您只需要矩形交叉点,则可能会简化。
另外,也许你可以在这太问题看一看:
那么什么是确切的问题 – Chubsdad 2010-08-16 05:45:53