한 번에 모든 다각형을 만나고 싶다고 가정합니다. 다음은 삼각형에 대한 문제를 수행하는 방법입니다 (사변형에 쉽게 적용될 수 있음).
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
에 대응한다.
* 참고 :
미만 360에 각 AOB, BOC 및 COD의 합이 감사있을 경우에만 가능하다. 그 각도를 풀 수있는 코드가 있습니까? 3 차원에서 그것을하는 것은 저를 때 리고 있습니다. –