2013-07-21 4 views

답변

3

4 차원 작업은 약간 어렵습니다.

문제를 해결하는 유일한 방법은 치수 유추를 찾는 것입니다. 선분 :

는 이제 2D에서

볼록 차원 다각형이 볼록 1D 측면을 시작하자.

채워진 볼록 다각형의 단면은 선 세그먼트입니다.

폴리곤 모서리와 교차 선의 교점을 계산하면 볼록 폴리곤에 대해 두 개의 교점이 생기고 횡단면은 선분이됩니다.

이렇게하면 쉽게 좌표를 변환 할 수 있으므로 좌표계의 Y 축에 대한 단면을 만듭니다. 모서리의 두 점은 A와 B입니다. 좌표는 a1, a2 및 b1, b2입니다.

a1과 b1의 부호가 같으면 (aka * b1> 0) 가장자리가 Y 축과 교차하지 않습니다.

그렇지 않으면 k = a1/(a1-b1)을 계산하십시오.

그런 것 교점의 좌표 (0, (1-K) * A2 + 케이 *의 B2)

난 당신이 두 가지를 연결하는 두 개의 교차점을 얻을 것이다 볼록 다각형을 위해 말했듯 포인트를 클릭하여 1D 단면을 얻습니다. 삼각형 :

이제

볼록 3D 메쉬 볼록 2D 측면이있다의이 3D에 일반화 할 수 있습니다.

다시 조작을 쉽게하기 위해 좌표를 변환하십시오. Y-Z 평면에서 메쉬의 단면을 얻으므로 X 좌표가 다시 0이됩니다.

삼각형의 단면을 가져옵니다. 위 가장자리의 알고리즘을 사용합니다. 우리는 3 차원을 가지고 있기 때문에 모서리의 끝점은 좌표 a1, a2, a3 및 b1, b2, b3을 갖습니다. a1 * b1 < 0이면 교차점이 있습니다. (1-K) * A2 + k 값 * B2를, (1-K) * A3 + K - 그래서

하자 K = A1/(A1 B1)

교점의 좌표는 (0, * b3). 이 좌표를 저장하고 메쉬의 A 및 B 점의 인덱스 (가장자리 인덱스)도 저장합니다. 그것은 나중에 유용 할 것입니다.

각 삼각형에 대해 선 세그먼트가 산출됩니다.

이제 교차 단면 선분을 다각형에 연결해야합니다. 그래서 교차점과 함께 엣지 인덱스를 저장했습니다.일련의 선이 있으며 끝점을 저장된 가장자리 인덱스와 일치시킬 수 있으므로 다각형에 연결할 수 있습니다.

이제

볼록 4D 메쉬의가 4D에 일반화 볼록 3D "면"가 보자 사면체. (아마 당신의 얼굴 정점 표현이 정확하지 않을 수도 있습니다)

다시 조작을 쉽게하기 위해 좌표를 변환하십시오. Y-Z-W 초평면에서 메쉬의 단면을 얻으므로 X 좌표가 다시 0이됩니다.

사면체의 단면을 얻으십시오. 각각의 얼굴에 대해 위의 알고리즘을 사용합니다. 4 차원이므로 모서리의 끝점은 좌표 a1, a2, a3, a4 및 b1, b2, b3, b4를 갖습니다. a1 * b1 < 0이면 교차점이 있습니다. (1-K) * A2 + k 값 * B2를, (1-K) * A3 + K - 그래서

하자 K = A1/(A1 B1)

교점의 좌표는 (0, * b3; (1-k) * a4 + k * b4).

4 면체의 각 삼각형에 대해 선분이 생깁니다. 각 정사면체에 대해 삼각형이 생깁니다. 이 삼각형의 각 모서리에는 선분이 시작된 3D 메쉬 (면 인덱스)의 삼각형의 A, B 및 C 점의 인덱스도 저장됩니다. 그것은 나중에 유용 할 것입니다.

이제이 횡단면 삼각형을 3D 메쉬에 연결해야합니다. 그래서 우리는 교차점 모서리와 함께 얼굴 인덱스를 저장했습니다. 삼각형 세트가 있고 저장된면 인덱스로 가장자리를 일치시킬 수 있으므로 삼각형 메쉬에 연결할 수 있습니다.

오목한 4D 메시의 경우 여러 개의 3D 메시가있을 수 있습니다.


당신이 비유를 참조 바랍니다.

구체적인 구현은 다소 어려울 것입니다. 모든 코너 케이스 (0으로 나누기, 부동 소수점 오류 등)를 처리해야합니다.

+0

많은 오목 다면체는 사면체로 나눌 수 없다. Schönhardt 다면체. 얼굴/정점 방법은 내가 원하는 것을 분명히하지는 않지만 괜찮은 대용품을 찾지 못했습니다. 이것은 아마도 내가 주제의 모호함을 얻을 수있는 가장 도움이 될 것입니다. 그래서 나는 당신의 대답을 받아 들일 것입니다. – wwww

+1

@ColdFusion 4D 메시에는 * 셀 *,면, 모서리 및 정점이 있습니다. 4D에서 4D 메쉬의 기본 3D 빌딩 블록은 셀, 사면체입니다. 2D 삼각형과 마찬가지로 3D 메쉬의 빌딩 블록 또는 2D 폴리곤의 1D 라인 세그먼트입니다. Schönhardt 다면체는 3D, 사면체 3D입니다. 물론 그것을 나눌 수는 없지만 삼각형으로 그 모양을 정의 할 수는 있습니다. – Calmarius

+0

@ColdFusion Paul L. Isaacson의 석사 논문 인 "가정 된 4 차원 현상의 컴퓨터 그래픽 프리젠 테이션"(1984)을 어떻게 든 찾을 수 있다면 그는 유용한 4D 기하학 관련 알고리즘을 몇 가지 포함합니다. 그 중 하나는 n 차원 교차 알고리즘. 찾는 데 어려움이 있으면 알려주세요. 나는 현재이 논문의 고문 인 교수를 위해 일하고있다. – Justin

관련 문제