最初の方法
このアイデアを使用して方程式を生成します。

a1、a2、a3 は元のシステムの座標、xy は最終結果から取得した座標、z は不明な座標です。これにより、立方体のすべての点に対して 2 つの方程式が生成されます。たとえば、座標 (-1、-1、1) を持つポイント 0 の場合、次のようになります。

立方体の前面の 4 つの点に対してこれを行うと、8 つの方程式が得られます。これが回転行列であるという事実を追加します->行列式は1で、9つの方程式があります。方程式系を解くための通常のアルゴリズムのいずれかでこれらを解くと、変換行列が得られます。そこから軸と角度を取得するのは、グーグル経由で簡単です:http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/
2番目の方法
ポイントにそれぞれ 0、1、2、3 a、b、c、d という名前を付けると、それらの間のベクトルの z 座標を取得できます (例: b-a
)。

b3-a3
ただし、 が正の場合は、まだ整理する必要があります。これを行う 1 つの方法は、中心点を b として使用することです (すべての点の中心からの距離を計算し、距離が最小のものを使用します)。次に、それが正であることが確実にわかりますb3-a3
(zがあなたに向かって正の場合)。
ここa
で、変換された空間で (0,0,0) であると仮定し、それに適切なベクトルを追加することですべての点の位置を計算できます。
b-a
回転を取得するには、原点空間のどこを指したかを知っているという事実を使用します (例: (1,0,0))。b-a
とのドット積によって回転角度を取得し、(1,0,0)
これらのベクトル間のクロス積によって回転軸を取得します。