2013-05-18 7 views

답변

0

저는 pygame이 제공 한 기능이 없다고 생각합니다. 마스크의 "형태가없는"가능성 때문에 다소 어려울 것입니다. 하나의 가능성은 마스크의 바운딩 직사각형 목록 (마스크의 모든 점을 함께 포함하는 직사각형 목록)을 얻고 직사각형이이 직사각형 안에 있는지 확인하는 것입니다 다음 RECT가 마스크 내부에있는 경우

이 솔루션 물론
bounding_rects = mask.get_bounding_rects() 
for b_rect in bounding_rects: 
    if b_rect.contains(test_rect): 
     print "Rect is inside mask" 

, 그러나 어떤 특정 경계 RECT 내부 테스트가 실패합니다 없습니다. 지역을 커버의 가능성이 하나 RECT로

bounding_rects = mask.get_bounding_rects() 
mask_rect = bounding_rects[0].unionall(bounding_rects) 
if mask_rect.contains(test_rect): 
    print "Rect is inside mask" 

이 솔루션 조합 마스크의 경계의 구형의 모든 : 여기 당신이 처리 할 수있는 방법에 대한 아이디어가 손실 정밀 약간의 트레이드 오프로의 두 개의 직사각형 사이에 10 픽셀의 간격이 있고 함께 결합 된 경우 새 직사각형에 해당 간격이 포함됩니다.

+0

rect의 네 모퉁이에서 충돌을 확인할 수 있습니다. 네 명 모두가 마스크와 충돌했지만 둘 다 두 번째 충돌 한 경우 (즉, 마스크 경계를 벗어나면), 정사각형은 완전히 마스크 안에 있습니다. – ecline6

+0

마스크의 "내부"를 얼마나 정확하게 정의하는지에 따라 다릅니다. 마스크는 오목 할 수 있기 때문에, rect의 모든 모서리가 마스크 안쪽에있을 수 있습니다. – Haz

+0

참. 끈적 끈적한 개찰구. – ecline6