Module: 기하학


Problem

5 /7


픽업 마스터

Theory Click to read/hide

교차로

의 교차점

<코드>a1, b1, c1 - 첫 번째 줄의 계수,
a2, b2, c2 - 두 번째 줄의 계수
x, y - 교차점.

\(x = {-(c1 \cdot b2 - c2 \cdot b1) \over (a1 \cdot b2 - a2 \cdot b1)} \\ y = {-(a1 \ cdot c2 - a2 \cdot c1) \over (a1 \cdot b2 - a2 \cdot b1)} \)

우리는 이미 선의 교차점(평행하지 않음)을 확인하고 교차점을 찾는 방법을 알고 있습니다.

이제 세그먼트로 이를 수행하는 방법을 알아보겠습니다. 

먼저 간단하게 교차점을 확인하는 방법을 알아보겠습니다.

세그먼트 교차 한쪽 끝이 다른 쪽 끝과 반대쪽에 있는 경우(이는 외적으로 쉽게 확인됨).  이것이 작동하지 않는 유일한 경우 - 세그먼트는 하나의 직선에 있습니다. 이를 위해 소위 교차점을 확인해야 합니다. 경계 상자(세그먼트의 경계 상자) - XY에서 세그먼트 투영의 교차점을 확인합니다.

축.

이제 세그먼트에서 교차점을 확인하는 방법을 알았으니 교차점(또는 세그먼트)을 찾는 방법을 알아보겠습니다.
- 교차하지 않으면 그러한 점이 존재하지 않는다는 것이 분명합니다.
- 그렇지 않으면 이러한 세그먼트가 놓이는 직선을 구성합니다.

만약 그들이 평행하다면, 세그먼트는 같은 선상에 있고 우리는 세그먼트의 왼쪽 경계의 최대값에서 오른쪽 경계의 최소값까지의 교차 세그먼트를 찾아야 합니다. 점은 다른 점보다 작습니다. 왼쪽에 있는 경우 X-좌표 - 더 낮은 경우).

선이 평행하지 않으면 교차점을 찾아 반환합니다.

Problem

Venceslav는 최근에 새 픽업 책을 읽었고 이제 그는 공원에서 자신의 지식을 테스트하고 싶어합니다. 간단히 하기 위해 공원을 평면의 세그먼트인 일련의 경로로 상상해 봅시다. Wenceslas는 이미이 공원을 걸었고 어떤 소녀가 어떤 길을 걷고 있는지 알고 있습니다. 문제는 Wenceslas가 매우 게으르고 한 길만 걷는다는 것입니다. 또한 그는 도중에 어떤 소녀를 만날 수 있는지 찾기에는 너무 게을러서 가장 친한 친구인 You에게 이 어려운 문제를 도와달라고 요청했습니다.
 
입력
첫 번째 줄에는 경로 끝의 좌표가 포함됩니다(X1, Y1). Wenceslas가 걷는 (\(- 20 <= X1, Y1, X2, Y2 <= 20\)).
두 번째 줄에는 정수 N - 소녀들이 걷는 경로의 수(\(0 <= N <= 5\) ).
다음 N 줄에 소녀들이 걷는 길의 끝 좌표를 입력하십시오(Xi1, Yi1< /sub>) 및 (Xi2, Yi2 ), i번째 경로 걷기 i번째 소녀(\(-20 <= X_{i1}, Y_ {i1}, X_{i2 }, Y_{i2} <= 20\))
 
출력
첫 번째 줄에 숫자 M을 인쇄하세요 - 경로가 Wenceslas의 경로와 교차하는 소녀의 수입니다(경로를 만지는 것은 교차로로 간주됨).
두 번째 줄에 M 숫자를 인쇄하세요. 우리 영웅이 만날 소녀들의 수입니다. 여자아이는 1부터 번호가 매겨집니다!
 
<헤드> <일># <몸>

 

입력 출력
1
0 0 2 2
<사업부>1
0 2 2 0
1
1