2009-11-19 2 views
1

2 점 평면에 점 p와 2 개의 선분이 있습니다. 점 p는 카메라가 선분을 바라보고있는 시점의 뷰입니다. 포인트 P에서 보았을 때 선분 1이 부분적으로 또는 완전히 선 2 뒤에 숨겨져 있는지 확인하고 싶습니다.점에서 선 세그먼트

+0

라인이 어떻게 정의되어 있습니까? 방정식 (ax + by + c = 0) 또는 좌표 ((x1, y1) - (x2, y2))? – Artelius

+0

좌표입니다. – Zinx

답변

1

두 번째 행이 첫 번째 행에 "마스크"되어 있는지 여부가 궁금합니다.

카메라 점이 C이고 세그먼트가 A1, A2 및 B1, B2라고 가정 해 보겠습니다.

크로스 제품 CA1xCB1과 CA2xCB2를 계산할 것입니다. 이 기호는 B1 점이 CA1 선의 왼쪽 또는 오른쪽에있는 경우 점을 제공합니다. 그것은 당신의 삼각형 CA1A2와 CB1B2가 지향하는 방법에 달려 있습니다 (그들은 같은 방향이어야합니다, 그것들을 할 수있는 많은 방법입니다).

  • CA1xCB1가 음수 또는 CA2xCB2는 긍정적 인 다음 숨겨진,
  • 반대 한 후 부분적으로 볼 수 있습니다 :

    그런 다음 다음과 같은 경우에 있는지 알고 부호를 사용할 수 있습니다.

CA1xCB2 및 CA2xCB1을 계산하여 대문자로 분류 할 수도 있습니다.

+0

예 l1의 두 점과 l2의 두 점 사이에 분리 축이 있으면 기본적으로 테스트합니다. –

1

슬러지의 대답은 좋은 출발이지만, 그것보다 조금 복잡합니다.

선분 2가 선분 1보다 C에 더 가깝다면 여전히 보일 수 있습니다.

A1-------A2 

    B1-B2 


    C 

여기서 B1과 B2는 A1A2 섹터의 "내부"이지만 숨겨지지 않습니다.

   B2 

A1-----A2 
B1 


    C 
:

가장 어려운 하나 해결하려면 B2는 A1 및 A2 '하지 사이'동안 B1이 있지만, 상기 카메라에서, A1 및 A2하지만, 카메라에 가까운 '사이'이면 인

B1B2는 선분의 ​​가장자리를자를 수 있으므로 B1B2의 작은 부분이 숨겨집니다 (또는 아닐 수도 있습니다). 나는 이것이 실제로 일어나는지를 확인하기 위해 A1A2와 B1B2의 교차점을 찾아야한다고 생각합니다.