0
나는 열려있는 배열이 NSWindow
입니다. 이 중 하나가 교차하는지 어떻게 확인할 수 있습니까?창이 교차하는지 확인하는 방법?
나는 열려있는 배열이 NSWindow
입니다. 이 중 하나가 교차하는지 어떻게 확인할 수 있습니까?창이 교차하는지 확인하는 방법?
철저한 검색 외에 다른 방법이 있을지 모르겠습니다. 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] 틀]'이 여기있을 것입니다. – guitarflow
CGRectIntersectsRect를 사용할 수 없습니까? – Yep