2012-07-22 2 views
0

3 차원 폴리곤에 원점, 무언가를 찾기 2 개의 3D 꼭지점, [[j, k, l], [m, n, o]]을 예로 들어 보겠습니다.으로 표시 나는 선분이</p> <pre><code>[[[a, b, c], [d, e, f], [g, h, i]], ...] </code></pre> <p>같은 선분으로 잘라 슬라이스, 나는 삼각형의 정점 (다각형의면)의 배열을 가지고

그리고 포인트가 [p, q, r]입니다.

선분을 통해 다각형의 포인트를 투영하고 폴리곤을 완전히 잘라내는 지 확인하십시오 (4 포인트만으로 충분하다고 생각합니까? 틀릴 수 있습니다). 그리고 만약 그렇다면, 나는 모서리와 꼭지점에 놓여있는 교차점을 모두 필요로합니다.

나는 완전히 여기에서 길을 잃었다. 모든 포인터는 감사하겠습니다.

+0

다각형은 2D입니다. 다면체는 절단하기 위해 평면이 필요합니다. –

+0

@ IgnacioVazquez-Abrams 그것이 다면체라고 불리는 것을 몰랐습니다. 감사! "비행기가 필요합니다"란 무엇을 의미합니까? – Dogbert

+0

라인은 다면체를 조각 낼 수 없습니다. 충분한 치수가 없습니다. –

답변

0

점 & 선분 (이후 T)에 의해 형성된 삼각형이 x-y 평면에 있다는 것을 일반성을 잃지 않고 가정 할 수 있습니다. (그렇지 않으면, 모든 것을 적절히 회전 시키십시오).

우리는 삼각형면을 반복합니다. y 좌표의 기호가 다른면 (즉, xy 평면을 자르는 가장자리)이있는면의 꼭지점 쌍에 대해 xy 평면과의 교차점을 검사합니다 그것이 T 내에 있는지 확인하십시오.

모든 검사가 사실 인 경우에만 T가 "다각형을 완전히 조각"한다고 말합니다.

실행 시간은 O(number of faces)입니다.

설명 된 모든 작업은 매우 간단합니다. 예 : 무엇인가가 T의 경계에 있는지 확인하는 것은 단순히 T를 정의하는 두 라인의 방정식 (라인 세그먼트의 점에서 끝점까지)에서 두 개의 부등식을 검사하는 것입니다.

가장자리 (따라서 정점)가있는 모든 POI는 루프 내에서 계산할 수 있습니다. 단순히 x-y 평면이있는 가장자리의 POI입니다.