2010-08-16 69 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