2010-08-16 52 views
3

previous question。我展望未来有两个矩形,他们是这样的:旋转的2D矩形的交叉点或区域

struct Rect 
{ 
NSPoint topLeft; 
NSPoint topRight; 
NSPoint bottomLeft; 
NSPoint bottomRight; 
} 

我用something similar code检查是否矩形相交(或冲突)。如果2个矩形相交,我想计算第一个矩形或第二个矩形与第一个矩形相交的点(即交点坐标)的相交面积。

如何计算相交点或相交面积。

+0

那么什么是确切的问题 – Chubsdad 2010-08-16 05:45:53

回答

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个点(不包括退化情况)。

不,我并没有说这是最有效的方法,但它会工作:)

+0

如果该文章接着下来,这里有一对夫妇更多文章:HTTP:// en.wikipedia.org/wiki/Line_segment_intersection和http://en.wikipedia.org/wiki/Line-line_intersection。我将这些方程式放在这里,但是常用的线相交解算器方程有点乱,并且无助于解释更高层的算法。无论如何,它们都很容易手工派生。另外,你可能想尝试扫描算法,因为你正在处理几行。 – 2011-10-15 22:51:08