我有一个 open 数组NSWindow
。我如何检查这些是否相交?
问问题
70 次
1 回答
1
除了详尽的搜索之外,我不确定是否有办法做到这一点。您可以使用 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.
我希望这有点道理。
于 2012-06-18T20:03:13.933 回答