간단한 코드 :
int windowOverlap(Rectangle rect1, Rectangle rect2)
{
if (rect1.IntersectsWith(rect2))
{
Rectangle overlap = Rectangle.Intersect(rect1, rect2);
if (overlap.IsEmpty)
return overlap.Width * overlap.Height;
}
return 0;
}
원래 질문 :
를2 개의 직사각형이 겹치는 지 여부와 겹치는 부분을 계산하는 경우 신속하고 더러운 방법을 알고 싶습니다. 호기심을 위해서 나는 두 직사각형의 모든 선이 수직 또는 수평이거나 2 개의 직사각형의 일반적인 경우에 관심이 있지만 실제로 필요한 유일한 대답은 사례 1입니다.
A.Intersects를 들어
double areaOfOverlap(Rect A, Rect B)
{
if (A.Intersects(B))
{
// calculate area
// return area
}
return 0;
}
() 나는 분리 축 테스트를 사용하여 생각했지만, 사각형은 수평선과 수직선이있는 경우 더 간단한 (빠른)이 : 나는의 라인을 따라 생각하고 있어요 확인하는 방법?
그리고 교차하는 영역을 계산하는 데는 직사각형이 수평선과 수직선 인 경우 빠른 방법이 있습니까?
마지막으로, 이것은 질문과 관련이 없지만 컴퓨터 그래픽에 대한 수학을 검토 할 수있는 좋은 책/웹 페이지에 누군가의 조언을 제공해 주시면 감사하겠습니다. 나는 대학에서 잠시 동안 나가 모든 것을 잊고있는 것처럼 느낀다! 다른 누구나 그 문제가 있습니까?
(참고 :. 좀 더 복잡한 것 같다 직접 질문에 대답하지 않습니다 this 다른이 질문에 있음) 작업을 수행 Rectangle.Intersect
방법을 어쩌면
수평 사각형이 수직 사각형이 어느 쪽을 따라 당신은
가 편집 마이크
this page on Wikipedia?봤어 –
** if (overlap.IsEmpty) ** 은 이어야합니다 ** if (! overlap.IsEmpty) ** – ReinierDG