2014-04-17 4 views
-1

기본적으로 선과 선분이 교차하는 경우 부울을 반환해야합니다. 선에 대한 정보는 기울기, 무작위 지점에 대한 xy 좌표 및 y 절편에 대한 xy입니다. 선분에는 선분과 두 종점 xy 좌표가 있습니다. 어떤 아이디어?Java에서 선과 세그먼트의 교차점

+2

Java와 어떤 관련이 있습니까? 수학을 시도하십시오. –

+0

yy 절편을위한 xy ??? –

답변

0

경사 S(Xr, Yr) 통해 선 방정식 D(X, Y):= (Y - Yr) - S (X - Xr) = 0 있습니다.

D(Xa, Ya)D(Xb, Yb)에 반대 기호가 있는지 확인하십시오.

0

이것을 구현하는 것은 그리 어려운 일은 아니며 가장 어려운 것으로 보이는 개념적 부분입니다. 나중에 재미로 코드를 작성할 수는 있지만 나중에 시작하면됩니다. 또한, 이것이 (시간/공간 현명한) 그것을 해결하는 정말 나쁜 방법 일지 모르지만 그것은 확실히 작동합니다.

좋은 해결책을 찾으려면 선을 벡터로 변환하고 모든 텍스트 아래의 링크에있는 응답에서 구현을 사용하십시오.

  1. 두 번째 줄의 기울기를 계산하십시오. 첫 번째 것과 같으면 평행이며 절대로 교차하지 않습니다.
  2. 두 행이 교차하는 경우 두 행 이 교차하는 위치를 계산하십시오. 그들은 한 지점에서만 교차 할 수 있습니다. 교차하는지 확인하는 방법은 다음과 같습니다.
    • 임의의 지점에서 각 행마다 2 개의 고유 한 좌표를 찾습니다.
    • 각 점에서 두 선 사이의 거리를 결정하십시오.
    • 어느 점이든지 선 사이의 거리가 더 짧아지면 교차로 가까이 이동할 때 필요한 방향을 나타냅니다.
    • 거리가 0이 될 때까지 두 줄 사이의 거리가 계속 증가 할 때까지 계속 확인하십시오 (다시 방향을 바꾸어야 함을 의미). 거리 = 0에있는 xy 좌표가 교차 지점입니다.
  3. 두 선이 교차하는 점의 x 값이 선분의 두 x 값 사이에 있으면 선과 선의 조각이 교차합니다.

첫 번째 줄에는 두 개의 xy 좌표가 있고 선 세그먼트에는 두 개의 끝점 좌표가 있으므로이 방법이 더 쉬울 것입니다.

확인 코멘트에 몇 가지 예제와 함께 정말 좋은 솔루션이 답변 아웃 : https://stackoverflow.com/a/565282/2142219