2016-08-15 3 views
1

3 개의 다각형이 모두 평면으로 정의 된 경우 (측면에서 볼 때 나머지 부분과 겹치지 않는 지점이 있으므로 본질적으로 3D 공간에서 2D 모양 임) 정확히 4 개 각 폴리가 각각 정확히 두 지점에서 다른 두 점에 부착하는 추가 정보와 함께 볼록하고 점선으로 표시됩니다. ...3 개의 다각형을 3D로 배치

이 폴리곤을 "평평하게 놓는"것으로부터 시작하여 그 값은 모두 x, y에 놓입니다 평면과 모두 0의 Z 값을 가지고 ...

... 내가 어떻게 연결 지점에서 연결되어있는 3D 공간에서 이러한 폴리곤을 배치하는 운동 수 있습니까?

답변

1

다각형 A, B, C에 레이블을 붙입니다. 접기 전에 B와 C가 각각 이미 모서리를 공유하도록 A를 선택하고 변환을 통해 X-Y 평면에 남아있는 것으로 간주합니다.

접기 전에 3 개의 다각형이 모두 연결되는 정확히 하나의 점이 없거나없는 경우 (접힌 후의 결과 모양에 구멍이있는 경우).

전자의 경우, 그 점 (d)를 고려하십시오. 접힌 가장자리 중 하나는 폴딩 후 B와 C에 의해 공유됩니다. e를 B와 엣지를 공유하고 A와 닿지는 않지만 A와 닿지 않는 점을 C와 마찬가지로 f라고합니다. 접기 후에 e와 f는 같은 점입니다. A와 B가 공유하는 모서리를 중심으로 e를 회전시키고, A와 C가 공유하는 모서리를 f로 비슷하게 회전하는 원을 생각해보십시오. 원은 정확하게 두 지점 (X-Y 평면 위와 아래 한 곳)에서 교차합니다. 원 방정식을 작성하고 해결하고 임의로 두 솔루션 중 하나를 선택하십시오. 이제 B와 C가 A와 공유하는 모서리를 중심으로 회전 한 각도와 나머지 메쉬가 완전히 구속 된 각도가되었습니다.

후자의 경우, 한쪽 끝이 B에 부착되고 다른 쪽 끝이 C에 부착되도록 A의 끝 부분을 찾습니다. 이전과 마찬가지로 A와 끝점을 공유하는 B와 C의 끝점을 고려하십시오. A의 모서리와 교차로를 풀어 라.

다이어그램 그리기; 도움이됩니다.

+0

미만 360에 각 AOB, BOC 및 COD의 합이 감사있을 경우에만 가능하다. 그 각도를 풀 수있는 코드가 있습니까? 3 차원에서 그것을하는 것은 저를 때 리고 있습니다. –

1

한 번에 모든 다각형을 만나고 싶다고 가정합니다. 다음은 삼각형에 대한 문제를 수행하는 방법입니다 (사변형에 쉽게 적용될 수 있음).

2D 세계에서 삼각형이 이미 배열되어 해당 쌍 쌍 중 두 쌍이 서로 옆에 있고 삼각형의 공통점이 원점이라고 가정 해 봅시다. 다시 말하면, O를 원점이라고하면 A, B, C, D 점이있어서 삼각형 3 개가 AOB, BOC 및 COD가됩니다. (당신은 항상이 상황에 도달하기 위해 몇 가지 변형을 적용 할 수 있습니다.) 이제 삼각형을 "접을"때 OA와 OD (길이가 같다고 가정 됨)를 정렬해야합니다. * 의사 코드에서 수행 할 작업은 다음과 같습니다.

assert(length(OA) == length(OD)) 
let L_A = line through A perpendicular to OB 
let L_D = line through D perpendicular to OC 
let E = intersection of L_A and L_D 
let z = sqrt(length(OA) * length(OA) - length(OE) * length(OE)) 

let O' = (0, 0, 0), B' = (B.x, B.y, 0), C' = (C.x, C.y, 0) 
let A' = (E.x, E.y, z) 

이어서, A'O'B'B'O'C'BmOC에 대응 AOB에 대응하고,이 C'O'A'COD에 대응한다.

* 참고 :