アプリ版:「スタンプのみでお礼する」機能のリリースについて

3次元の回転を表すR1,R2があったとき、両者がどの程度「似ているか・近いか」
を表す指標で何かよいものはありますでしょうか?
R1=R2のときに最も「似ている」となる指標です。
(回転の表現は回転行列、四元数など何でも構いません。)

具体的には、ある計算に基づいて3次元の回転量補正量(四元数で表現しています)
を求めているのですが、計算過程のパラメータが時々刻々と変化する誤差を含んで
いるため、計算するたびに異なる結果が出てしまいます。

大半はだいたい「似ている」回転であるようなのですが、たまに大きくズレたものが
出ているようなので、ある評価基準で3次元回転の「似ている・似ていない」
を決めたいと考えています。たとえば四元数の場合だと回転の軸と回転量で
表現されるので、単純にそれぞれ比較・・・というのはちょっと違う気がしています。

よろしくおねがいいたします。

A 回答 (3件)

お気づきの通り、二つの回転行列P,Qに対して



d(P,Q) := √( ∫|Px - Qx|^2 dS ),
ただしx∈単位球面、dS は面素、

とすると d は距離になります。この面積分を、教科書の公式

∫ F(x, y, z) dS (←(x, y, z) は単位球面上を動く)
= ∫_[0,π]dθ ∫_[0,2π]dφ ( F(sinθcosφ, sinθsinφ, cosθ) sinθ )  (重積分)

で実際に計算すると、(過程は省略しますが)結局次の式が得られます:

|d(P, Q)|^2 = (4π/3) Σ_{i,j=1}^{3} ( | P_ij - Q_ij |^2 ),
ただしP_ij, Q_ij は行列P,Q の成分を表すものとします。

ここで面白いのは、行列(P-Q)の自乗ノルムが上式右辺に出て来ることと、a=(1, 0, 0), b=(0, 1, 0), c=(0, 0, 1)に対して、

|d(P, Q)|^2 = (4π/3) { |Pa - Qa| + |Pb - Qb| + |Pc - Qc| }

と書けてしまうことです。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます.
なるほど、比例定数の(4π/3)を除いて考えると
単純な回転行列の自乗ノルムになるということですね。
なんとも衝撃的な(当たり前ですか??)結果です。

P,Qによって移された点間の距離を直線で測っている
問題はありますが、距離の要件は満たしているので
これで十分実用になりそうです。
ありがとうございました。

お礼日時:2007/12/21 07:51

私も、もろ参考ですが…



半径1の球面上に、できるだけ分散させて、n = 100個ほどの点をとり、
それを (x1,y1,z1),…,(xn,yn,zn) とおきます。
そして、(xk,yk,zk) を R1 で回転させた点を (xk1,yk1,zk1) とします。
同様に、(xk,yk,zk) を R2 で回転させた点を (xk2,yk2,zk2) とします。
そして、

V = Σ[k=1~n] { (xk1 - xk2)^2 + (yk1 - yk2)^2 + (zk1 - zk2)^2 }

を、似ているかどうかの指標にするのはいかがでしょうか。
原理は簡単ですが、難点は計算量が多くなることです。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
実は私も質問させていただいた後いろいろ考えまして、
ほとんど同じようなアイディア

d(R1,R2) := (∫|R1x - R2x|^2 dx)^(1/2)
但し積分の範囲→ x∈単位球面

が良いのではないかと思っていました。
球面に沿って回転した点間の距離を直線で測ることになりますが、
d(R1,R2) >= 0
d(R1,R2) = 0 when R1=R2
d(R1,R2) = d(R2,R1)
d(P,R) <= d(P,Q)+d(Q,R)
を満たすので、距離としての性質は悪くなさそうです。
もう少し考えてみたいと思います。

お礼日時:2007/12/21 00:28

 もろ参考です。



 回転角が時間の関数になっていると想像しました。微小時間ごとの無限小回転を表す反対称行列は、独立成分が3個なので、だいぶ楽になるような気がします。各瞬間ごとに、無限小回転を比較してみるというのはどうでしょう?。Data量が増えるのが厄介ですけど・・・。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます!
なるほど、無限小回転と考えてパラメータを減らすわけですね。
参考にして考えてみたいと思います。

お礼日時:2007/12/21 00:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!