すべてのポリゴンを 1 点で合わせたいと仮定します。三角形の問題をどのように行うかを次に示します (四角形に簡単に適用できます)。
2D の世界では、対応する 2 つの辺のペアが隣り合うように三角形が既に配置されており、三角形の共通点が原点であるとします。つまり、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'
対応しAOB
、 にB'O'C'
対応しBmOC
、 にC'O'A'
対応しCOD
ます。
*注: これは、角度 AOB、BOC、および COD の合計が 360 未満の場合にのみ可能です。