0
我有一列開放的NSWindow
s。我如何檢查這些是否相交?如何檢查窗口是否相交?
我有一列開放的NSWindow
s。我如何檢查這些是否相交?如何檢查窗口是否相交?
我不確定除了詳盡的搜索外,還有一種方法可以做到。您可以使用2個角點(參考角點,通過檢查窗口位置和對角點,或參考角點加上窗口尺寸返回),並且對於每個窗口,檢查其他窗口的任何角落是否存在當前窗口的角落之間。這種詳盡的方法是O(n^2),但應該還是相當快,除非你處理數以千計的窗口。
一些僞代碼:
inside (point, window):
if point.x less than window.corner1.x and point.x greater than window.corner2.x
and point.y less than window.corner1.y and point.y greater than window.corner2.y,
true.
false.
check_for_collision (window1, window2):
if (window1.corner1 inside window2) or (window1.corner2 inside window2), true.
else if window2.corner1 inside window1 or window2.corner2 inside window1, true.
otherwise, false.
check_group_of_windows (windowlist):
loop:
if size of windowlist is 1 or less, stop looping
let window be windowlist.pop
for each otherwindow in windowlist:
if check_for_collision(window, otherwindow), true.
false.
我希望有一定的道理。
同意。給自己寫一個方法,通過檢查框架來檢查它們是否重疊。 '[[self window] frame]'是這裏的事情。 – guitarflow
我不能使用CGRectIntersectsRect? – Yep