3D空間の2セットの点について質問があります。あるデカルト座標系で40座標でボリュームを定義しましたが、(0,0,0)が異なる別の座標系では、40座標で定義されたわずかに異なるボリュームがあります。ポイントセットの一致するペアを知っているので、各ポイントペアの差(ユークリッド距離)を測定したいと思います。ここで、1)両方の座標系(同じスケール)を相互に参照するにはどうすればよいですか?2)両方のボリュームを登録するための変換をどのように計算するのが最適ですか?
ご協力ありがとうございました。
3D空間の2セットの点について質問があります。あるデカルト座標系で40座標でボリュームを定義しましたが、(0,0,0)が異なる別の座標系では、40座標で定義されたわずかに異なるボリュームがあります。ポイントセットの一致するペアを知っているので、各ポイントペアの差(ユークリッド距離)を測定したいと思います。ここで、1)両方の座標系(同じスケール)を相互に参照するにはどうすればよいですか?2)両方のボリュームを登録するための変換をどのように計算するのが最適ですか?
ご協力ありがとうございました。
一致するペアがわかっている場合、疑似逆 (Matlab または numpy の pinv()) を使用して非常に簡潔に解決できます。
(ほとんど) 一般的な位置にある 40 のポイントを使用すると、任意のスケール、回転、または透視変換も処理できます。
三角形を定義する3つの共通点を取る場合、サーフェス法線間の角度の違いを比較することにより、一方を他方に変える回転変換を決定できます。大きさの違いからスケールを取得し、これら2つを取得すると、変換はそれから外れます。
AとBの1つの角を原点に置いて、AOriginとBOriginを作成します。これを行うには、A[0]からA[2]のそれぞれから減算A[0]を定義し、Bでも同じことを行います。
AOrigin[1] = A[1] - A[0] // this is vector math - you have to subtract each coordinate individually
AOrigin[2] = A[2] - A[0]
AOrigin[0] = <0 0 0>
BOrigin[1] = B[1] - B[0]
BOrigin[2] = B[2] - B[0]
BOrigin[0] = <0 0 0>
次に、単位法線、ANormalおよびBNormalを取得します
ANormal = AOrigin[1] x AOrigin[2]
ANormal = ANormal / |ANormal|
BNormal = BOrigin[1] x BOrigin[2]
BNormal = BNormal / |BNormal|
次に、それらの間の角度は次のとおりです。
acos(ANormal . BNormal)
問題は、それがどの軸を中心に回転しているのかということです。ANormalとBNormalの外積を取ることでそれがわかります。これで、AをBと同じ回転方向に変換する単一の軸を中心とした単一の回転が得られます。
次のトリックは、AとBを同じスケールにすることです。これを行うには、AとBから2つのポイントを取得し、それぞれの長さを見つけて、その比率を取得します。それが規模です。
これがどこに向かっているのか分かりますか?このためのすべての数学は、まともな微積分の本にあります。
あなたの質問の最初の部分を理解しているかどうかはわかりませんが、あるポイントのセットを別のポイントに運ぶ変換が必要な場合は、理解するための簡単な方法を次に示します (確かに最もエレガントではありません)。あなたが言及したポイント セットを使用します。 ,23) 3`(71,82,14)}.
私はAから始めます
(87,159,28) (-97,216,15) (60,237,9)
それを翻訳して、ポイント 1 を原点に持ってきます。
(0,0,0) (-184,57,-13) (-27,78,-19)
次に、z 軸を中心に回転して点 2 を xz 平面に移動します。
(0,0,0) (-192.6,0,-13) (-48.9,66.5,-19)
次に、y 軸について点 2 を z 軸に移動します。
(0,0,0) (0,0,193.1) (-15.7,66.5,50.0)
最後に、再び z 軸について点 3 を xz 平面に移動します。
(0,0,0) (0,0,193.1) (-68.3,0,50.0)
これらのステップは、順番に行われ、空間 A から新しい空間に物を運び、それを C と呼びます。この変換を Tca と呼びます。これらのステップは可逆です。逆変換 Tac と呼びます。B で同じことを行い、Tcb と Tbc を取得します。2 つのポイントのセットは、両方が C にある場合に一致します。セット A をセット B に移動するには、Tca と Tbc を適用します。セット B からセット A に移動するには、Tcb を適用してから Tac を適用します。