2009-11-28 6 views
0

사각형이나 원에 점이 있는지 감지하려고합니다. 그렇게 어렵지는 않지만, 객관적인 방법으로 내장 된 메소드가 있다는 것을 알고 싶습니다. 감사! 당신이 사각형 경로가있는 경우목표 C 모양과 점

NSPoint somePoint = //The point you want to test for 
NSRect someRect = //The rectangle you want to test in 

BOOL rectContainsPoint = NSPointInRect(somePoint, someRect); 

동그라미를 들어, 동일 NSBezierPath 인스턴스 메소드 containsPoint:

NSBezierPath *circlePath = //Assume this is instantiated to a circle path 
NSPoint somePoint = //The point you want to test for 

BOOL circleContainsPoint = [circlePath containsPoint:somePoint]; 

을 사용할 수 있습니다 : 직사각형

답변

2

(NSRect들로) 재단의 기능 NSPointInRect()있다 containsPoint:을 사용하여 포인트가 해당 사각형에 있는지 테스트 할 수 있습니다.

편집 : NSResponder에 지적으로, 전체 경로 객체를 생성하는 것은 항상 가장 효율적인 방법이 될 수 없습니다 - 당신은 이미 다음 예를 도면이나 뭐 어떤 종류의 원형 경로가있는 경우, 그러나 아마 다른 더 효율적이 있습니다 그것을하는 방법. 그러나 경로를 사용하는 것은 내장 된 방법입니다.

+2

원 안에 점을 테스트 할 경로를 만들지 않습니다. 점에서 중심까지의 거리를 확인할 수 있습니다. – NSResponder

+0

효율성면에서 이미'NSBezierPath' 객체로 작업하고있는 것이 아니라면 Tojas가 내장 메소드를 요구하고 있었지만 아마 옳은 것 같습니다. 어쨌든 대답이 수정되었습니다. –