ポイントの位置は、平行移動/回転できる原点マトリックスを基準にしていると思います。
これがすべて必要であると仮定すると、ポイントの新しい位置は次のように与えられます。
pos_newCoord = R^-1 * T^-1 * pos_oldCoord
あなたがしていることは、あなたがあなたの新しい起源を取り、それを古い起源に戻し、そしてそれを回転させないことです。別の書き方:
newOrigin = myTranslation(myRotation(oldOrigin))
def newCoordinates(point):
return inverse(myRotation)(inverse(myTranslation)(point))
特に4d行列を使用している場合は、逆演算を事前に計算できます。
「カメラの回転と平行移動の変化に基づいて、原点の回転と平行移動の変化を決定する方法は?」–OP
この情報が通知されない場合は、次のように回復できます。4dポイントと4v4アフィン変換行列(en.wikipedia.org/wiki/Affine_transformation)を使用します。
- 任意の4台のカメラを取ります。
- 元のカメラポイントとそれらの平行移動/回転ポイントを比較してください。
- それを行うにはおそらくより良い線形代数の方法がありますが、ウィキペディアのリンクにアクセスすると、3x3の部分行列Aと3x1の部分行列bがあり、したがって12の未知数があることがわかります。ポイントごとに3つの方程式を持つ4つのポイントは、12の方程式を与えます。この形式の行列は可逆であるため、解決策があります*。お気に入りの連立一次方程式解法を使用して解きます。たとえば、12x12行列でのガウスの消去法などです。