넘치게 채우기

좌표평면에서 두 선분이 만나는지 알아내기 본문

PS/언어별 스킬모음

좌표평면에서 두 선분이 만나는지 알아내기

riveroverflow 2023. 9. 13. 15:32
728x90
반응형

C++코드

struct Segment {
    int x1, y1, x2, y2;
};

// 두 선분이 겹치는지 확인하는 함수
bool doSegmentsOverlap(const Segment& a, const Segment& b) {
    return (max(a.x1, a.x2) >= min(b.x1, b.x2) && max(a.y1, a.y2) >= min(b.y1, b.y2) &&
            min(a.x1, a.x2) <= max(b.x1, b.x2) && min(a.y1, a.y2) <= max(b.y1, b.y2));
}

조건

  • 두 선분의 x 좌표 중 최대값이 다른 선분의 x 좌표 중 최소값보다 크거나 같고,
  • 두 선분의 y 좌표 중 최대값이 다른 선분의 y 좌표 중 최소값보다 크거나 같으며,
  • 두 선분의 x 좌표 중 최소값이 다른 선분의 x 좌표 중 최대값보다 작거나 같고,
  • 두 선분의 y 좌표 중 최소값이 다른 선분의 y 좌표 중 최대값보다 작거나 같을 때, 두 선분은 겹친다고 판단된다.
728x90
반응형