1K Views
November 29, 22
スライド概要
クォータニオンの説明用に使っている資料
回転の数学 今給黎 隆
物体の回転 • 物体の運動は、重心の平行移動 と重心周りの回転に分解できる
回転の数学 • ベクトルを回転させる表現 • 行列 • クォータニオン
行列によるベクトルの回転 • 各軸周りの回転行列 • 任意の軸の回転は、これらの回転の積で表現できる 𝑅𝑅 𝜃𝜃 = 𝑅𝑅𝑧𝑧 α 𝑅𝑅𝑥𝑥 𝛽𝛽 𝑅𝑅𝑧𝑧 𝛾𝛾 1 0 𝑅𝑅𝑥𝑥 𝜃𝜃 = 0 cos 𝜃𝜃 0 sin 𝜃𝜃 0 −sin 𝜃𝜃 cos 𝜃𝜃 cos 𝜃𝜃 𝑅𝑅𝑦𝑦 𝜃𝜃 = 0 −sin 𝜃𝜃 0 1 0 sin 𝜃𝜃 0 cos 𝜃𝜃 cos 𝜃𝜃 𝑅𝑅𝑧𝑧 𝜃𝜃 = sin 𝜃𝜃 0 −sin 𝜃𝜃 cos 𝜃𝜃 0 0 0 1
回転の表現は一意ではない • 例えばUnityは別の回転の順番 𝑊𝑊 = 𝑇𝑇(𝑡𝑡)𝑅𝑅 𝜃𝜃 𝑆𝑆(𝑠𝑠) 𝑇𝑇 𝑡𝑡 = 𝑅𝑅𝑦𝑦 𝜃𝜃𝑦𝑦 = 1 0 0 0 cos 𝜃𝜃𝑦𝑦 0 −sin 𝜃𝜃𝑦𝑦 0 0 1 0 0 1 0 0 0 1 0 𝑡𝑡𝑥𝑥 𝑡𝑡𝑦𝑦 , 𝑡𝑡𝑧𝑧 1 sin 𝜃𝜃𝑦𝑦 0 cos 𝜃𝜃𝑦𝑦 𝑅𝑅 𝜃𝜃 = 𝑅𝑅𝑦𝑦 𝜃𝜃𝑦𝑦 𝑅𝑅𝑥𝑥 𝜃𝜃𝑥𝑥 𝑅𝑅𝑧𝑧 𝜃𝜃𝑧𝑧 , 1 , 𝑅𝑅𝑥𝑥 𝜃𝜃𝑥𝑥 = 1 0 0 0 cos 𝜃𝜃𝑥𝑥 sin 𝜃𝜃𝑥𝑥 0 −sin 𝜃𝜃𝑥𝑥 cos 𝜃𝜃𝑥𝑥 𝑆𝑆 𝑠𝑠 = 1 , 𝑠𝑠𝑥𝑥 0 0 0 0 𝑠𝑠𝑦𝑦 0 0 𝑅𝑅𝑧𝑧 𝜃𝜃𝑧𝑧 = 0 0 𝑠𝑠𝑧𝑧 0 0 0 0 1 cos 𝜃𝜃𝑧𝑧 sin 𝜃𝜃𝑧𝑧 0 −sin 𝜃𝜃𝑧𝑧 cos 𝜃𝜃𝑧𝑧 0 0 0 1 1
回転行列の特性 • 𝑅𝑅 −1 = 𝑅𝑅𝑇𝑇 • 回転によってベクトルは長さを変えないので 𝑅𝑅𝑅𝑅 2 = 𝑅𝑅𝑅𝑅, 𝑅𝑅𝑅𝑅 = (𝑅𝑅𝑅𝑅) 𝑇𝑇 𝑅𝑅𝑅𝑅=𝑥𝑥 𝑇𝑇 𝑅𝑅 𝑇𝑇 𝑅𝑅𝑅𝑅 ≡ 𝑥𝑥 2 = 𝑥𝑥 𝑇𝑇 𝑥𝑥 • これが任意のベクトルと行列に対して成り立つので ∴ 𝑅𝑅 𝑇𝑇 𝑅𝑅 = 1 𝑅𝑅 𝑇𝑇 = 𝑅𝑅 −1
回転行列の問題 • 実際には、数値誤差が積み重なって、ベクトルの長さが変 化する 𝑅𝑅𝑅𝑅 2 < 𝑥𝑥 • 続けるとノルムが0に 2 • 常に存在している物体を取り扱うには危険
クォータニオンの導入 • 数値誤差で向きが多少ずれても良いのでノルムを保存する表現 が欲しい • クォータニオンで回転が表現できることが判明 SIGGRAPH 85
クォータニオンの歴史 • 複素数を3次元空間に拡張したい! 1843/10/16 i2 = j2 = k2 = ijk = −1 William Rowan Hamilton
複素数 • 虚数単位 i を導入 𝑖𝑖 2 = −1 • 実数と複素数を軸とした虚数平面(ガウス平面)は複素数を 可視化できる 𝑧𝑧1 𝑧𝑧2 = 𝑟𝑟1 𝑟𝑟2 𝑒𝑒 𝑖𝑖(𝜃𝜃1 +𝜃𝜃2 ) 𝑧𝑧1 𝑧𝑧2 虚部 𝑧𝑧1 = 𝑟𝑟1 (cos 𝜃𝜃1 + 𝑖𝑖 sin 𝜃𝜃1 ) = 𝑟𝑟1 𝑒𝑒 𝑖𝑖𝜃𝜃1 𝑧𝑧2 = 𝑟𝑟2 (cos 𝜃𝜃2 + 𝑖𝑖 sin 𝜃𝜃2 ) = 𝑟𝑟2 𝑒𝑒 𝑖𝑖𝜃𝜃2 𝑧𝑧2 𝜃𝜃2 𝜃𝜃1 𝑧𝑧1 実部
クォータニオン • 3次元空間に拡張? 𝑧𝑧 虚部 𝑝𝑝 𝑧𝑧 𝑟𝑟 sin 𝜃𝜃 𝜃𝜃 実部 𝑟𝑟 cos 𝜃𝜃 𝑥𝑥 𝑦𝑦
基底 • q = 𝑎𝑎 � 1 + 𝑏𝑏 � 𝑖𝑖 + 𝑐𝑐 � 𝑗𝑗 + 𝑑𝑑 � 𝑘𝑘 = 𝑎𝑎 + 𝑏𝑏 � 𝑖𝑖 + 𝑐𝑐 � 𝑗𝑗 + 𝑑𝑑 � 𝑘𝑘 = 𝑎𝑎, 𝑉𝑉 , 𝑉𝑉 = (𝑏𝑏, 𝑐𝑐, 𝑑𝑑) • 𝑖𝑖 � 𝑖𝑖 = 𝑗𝑗 � 𝑗𝑗 = 𝑘𝑘 � 𝑘𝑘 = −1 • 𝑖𝑖 � 𝑗𝑗 = 𝑘𝑘, 𝑗𝑗 � 𝑖𝑖 = −𝑘𝑘, 𝑗𝑗 � 𝑘𝑘 = 𝑖𝑖, 𝑘𝑘 � 𝑖𝑖 = 𝑗𝑗, 𝑘𝑘 � 𝑗𝑗 = −𝑖𝑖, 𝑖𝑖 � 𝑘𝑘 = −𝑗𝑗
クォータニオンの足し算 • 𝑞𝑞1 + 𝑞𝑞2 = 𝑎𝑎1 + 𝑏𝑏1 � 𝑖𝑖 + 𝑐𝑐1 � 𝑗𝑗 + 𝑑𝑑1 � 𝑘𝑘 +𝑎𝑎2 +𝑏𝑏2 � 𝑖𝑖 + 𝑐𝑐2 � 𝑗𝑗 + 𝑑𝑑2 � 𝑘𝑘 = 𝑎𝑎1 + 𝑎𝑎2 + 𝑏𝑏1 + 𝑏𝑏2 � 𝑖𝑖 + 𝑐𝑐1 + 𝑐𝑐2 � 𝑗𝑗 + 𝑑𝑑1 + 𝑑𝑑2 � 𝑘𝑘 = 𝑎𝑎1 + 𝑎𝑎2 , 𝑉𝑉1 + 𝑉𝑉2
クォータニオンの掛け算 𝑞𝑞1 𝑞𝑞2 = 𝑎𝑎1 , 𝑉𝑉1 𝑎𝑎2 , 𝑉𝑉2 = 𝑎𝑎1 + 𝑏𝑏1 � 𝑖𝑖 + 𝑐𝑐1 � 𝑗𝑗 + 𝑑𝑑1 � 𝑘𝑘 𝑎𝑎2 + 𝑏𝑏2 � 𝑖𝑖 + 𝑐𝑐2 � 𝑗𝑗 + 𝑑𝑑2 � 𝑘𝑘 = 𝑎𝑎1 𝑎𝑎2 + 𝑏𝑏1 𝑏𝑏2 𝑖𝑖𝑖𝑖 + 𝑐𝑐1 𝑐𝑐2 𝑗𝑗𝑗𝑗 + 𝑑𝑑1 𝑑𝑑2 𝑘𝑘𝑘𝑘 +𝑎𝑎1 𝑏𝑏2 𝑖𝑖+𝑏𝑏1 𝑎𝑎2 𝑖𝑖 + 𝑐𝑐1 𝑑𝑑2 𝑗𝑗𝑗𝑗 + 𝑑𝑑1 𝑐𝑐2 𝑘𝑘𝑘𝑘 +𝑎𝑎1 𝑐𝑐2 𝑗𝑗 + 𝑏𝑏1 𝑑𝑑2 𝑖𝑖𝑖𝑖 + 𝑐𝑐1 𝑎𝑎2 𝑗𝑗 + 𝑑𝑑1 𝑏𝑏2 𝑘𝑘𝑘𝑘 +𝑎𝑎1 𝑑𝑑2 𝑘𝑘 + 𝑏𝑏1 𝑐𝑐2 𝑖𝑖𝑖𝑖 + 𝑐𝑐1 𝑏𝑏2 𝑗𝑗𝑗𝑗 + 𝑑𝑑1 𝑎𝑎2 𝑘𝑘 = 𝑎𝑎1 𝑎𝑎2 − 𝑏𝑏1 𝑏𝑏2 − 𝑐𝑐1 𝑐𝑐2 − 𝑑𝑑1 𝑑𝑑2 +(𝑎𝑎1 𝑏𝑏2 +𝑏𝑏1 𝑎𝑎2 + 𝑐𝑐1 𝑑𝑑2 − 𝑑𝑑1 𝑐𝑐2 )𝑖𝑖 +(𝑎𝑎1 𝑐𝑐2 − 𝑏𝑏1 𝑑𝑑2 + 𝑐𝑐1 𝑎𝑎2 + 𝑑𝑑1 𝑏𝑏2 )𝑗𝑗 +(𝑎𝑎1 𝑑𝑑2 + 𝑏𝑏1 𝑐𝑐2 − 𝑐𝑐1 𝑏𝑏2 + 𝑑𝑑1 𝑎𝑎2 )𝑘𝑘 = 𝑎𝑎1 𝑎𝑎2 − 𝑉𝑉1 � 𝑉𝑉2 + 𝑎𝑎1 𝑉𝑉2 + 𝑎𝑎2 𝑉𝑉1 + 𝑉𝑉1 × 𝑉𝑉2 𝑖𝑖 𝑖𝑖 + 𝑎𝑎1 𝑉𝑉2 + 𝑎𝑎2 𝑉𝑉1 + 𝑉𝑉1 × 𝑉𝑉2 𝑗𝑗 𝑗𝑗 + 𝑎𝑎1 𝑉𝑉2 + 𝑎𝑎2 𝑉𝑉1 + 𝑉𝑉1 × 𝑉𝑉2 𝑘𝑘 𝑘𝑘 = 𝑎𝑎1 𝑎𝑎2 − 𝑉𝑉1 � 𝑉𝑉2 , 𝑎𝑎1 𝑉𝑉2 + 𝑎𝑎2 𝑉𝑉1 + 𝑉𝑉1 × 𝑉𝑉2
共役から逆元 𝑞𝑞∗ = (𝑎𝑎 + 𝑏𝑏𝑏𝑏 + 𝑐𝑐𝑐𝑐 + 𝑑𝑑𝑑𝑑)∗ = 𝑎𝑎 − 𝑏𝑏𝑏𝑏 − 𝑐𝑐𝑐𝑐 − 𝑑𝑑𝑑𝑑 • ノルム 𝑞𝑞 = • 逆数(逆元) 𝑞𝑞 −1 𝑞𝑞𝑞𝑞 ∗ = 𝑞𝑞 ∗ = 𝑞𝑞 2 𝑞𝑞∗ 𝑞𝑞 = 𝑎𝑎2 + 𝑏𝑏 2 + 𝑐𝑐 2 + 𝑑𝑑 2
回転 𝜃𝜃 𝑟𝑟 𝒗𝒗, 𝜃𝜃 = cos , 2 𝜃𝜃 𝜃𝜃 𝜃𝜃 = cos + sin 𝑣𝑣𝑥𝑥 𝑖𝑖 + 𝑣𝑣𝑦𝑦 𝑗𝑗 + 𝑣𝑣𝑧𝑧 𝑘𝑘 𝒗𝒗 sin 2 2 2 ただし、vは単位ベクトル • クォータニオン𝑞𝑞の𝒗𝒗軸周りに𝜃𝜃度の回転 𝑞𝑞′ = 𝑟𝑟𝑟𝑟𝑟𝑟 ∗
クォータニオンの回転の計算 𝑞𝑞′ = 𝑟𝑟𝑟𝑟𝑟𝑟 ∗ 𝜃𝜃 2 𝑞𝑞 = 𝑤𝑤, 𝑋𝑋 , 𝑟𝑟 𝑣𝑣, 𝜃𝜃 = cos , 𝑣𝑣 sin 𝑞𝑞1 𝑞𝑞2 = 𝑎𝑎1 𝑎𝑎2 − 𝑉𝑉1 � 𝑉𝑉2 , 𝑎𝑎1 𝑉𝑉2 + 𝑎𝑎2 𝑉𝑉1 + 𝑉𝑉1 × 𝑉𝑉2 𝜃𝜃 2 𝜃𝜃 𝜃𝜃 𝜃𝜃 𝜃𝜃 𝜃𝜃 𝜃𝜃 𝜃𝜃 𝜃𝜃 𝜃𝜃 𝜃𝜃 𝜃𝜃 = 𝑤𝑤cos − 𝑣𝑣 � 𝑋𝑋 sin , 𝑋𝑋cos + 𝑤𝑤𝑤𝑤 sin + 𝑣𝑣 × 𝑋𝑋 sin 𝑟𝑟𝑟𝑟𝑟𝑟 ∗ = cos , 𝑣𝑣 sin 𝑤𝑤, 𝑋𝑋 cos , −𝑣𝑣 sin cos , −𝑣𝑣 sin 2 2 2 2 2 2 2 2 2 2 2 𝜃𝜃 𝜃𝜃 𝜃𝜃 𝜃𝜃 𝜃𝜃 𝜃𝜃 𝜃𝜃 � −𝑣𝑣 sin , = (𝑤𝑤 cos2 − 𝑣𝑣 � 𝑋𝑋 sin cos − 𝑋𝑋cos + 𝑤𝑤𝑤𝑤 sin + 𝑣𝑣 × 𝑋𝑋 sin 2 2 2 2 2 2 2 𝜃𝜃 𝜃𝜃 𝜃𝜃 𝜃𝜃 𝜃𝜃 𝜃𝜃 𝜃𝜃 𝜃𝜃 𝜃𝜃 𝜃𝜃 𝜃𝜃 + cos 𝑋𝑋cos + 𝑤𝑤𝑤𝑤 sin + 𝑣𝑣 × 𝑋𝑋 sin + 𝑋𝑋cos + 𝑤𝑤𝑤𝑤 sin + 𝑣𝑣 × 𝑋𝑋 sin × −𝑣𝑣 sin ) 𝑤𝑤cos − 𝑣𝑣 � 𝑋𝑋 sin −𝑣𝑣 sin 2 2 2 2 2 2 2 2 2 2 2 𝜃𝜃 𝜃𝜃 𝜃𝜃 𝜃𝜃 𝜃𝜃 𝜃𝜃 𝜃𝜃 𝜃𝜃 𝜃𝜃 𝜃𝜃 𝜃𝜃 𝜃𝜃 𝜃𝜃 = (𝑤𝑤 cos2 + 𝑤𝑤𝑤𝑤 � 𝑣𝑣 sin2 , 𝑤𝑤𝑤𝑤 cos sin + 𝑣𝑣 � 𝑋𝑋 𝑣𝑣 sin2 + 𝑋𝑋 cos2 + 𝑤𝑤𝑤𝑤 cos sin + 𝑣𝑣 × 𝑋𝑋 cos sin − 𝑋𝑋 × 𝑣𝑣 cos sin − 𝑣𝑣 × 𝑋𝑋 × 𝑣𝑣 sin2 ) 2 2 2 2 2 2 2 2 2 2 2 2 2 𝜃𝜃 𝜃𝜃 𝜃𝜃 𝜃𝜃 𝜃𝜃 𝜃𝜃 𝜃𝜃 , 𝑣𝑣 � 𝑋𝑋 𝑣𝑣 sin2 + 𝑋𝑋 cos2 + 2𝑣𝑣 × 𝑋𝑋 cos sin − 𝑣𝑣 × 𝑋𝑋 × 𝑣𝑣 sin2 = 𝑤𝑤 cos2 + sin2 2 2 2 2 2 2 2 ↓ 𝐴𝐴 × 𝐵𝐵 × 𝐶𝐶 = 𝐴𝐴 � 𝐶𝐶 𝐵𝐵 − 𝐵𝐵 � 𝐴𝐴 𝐶𝐶 → 𝑣𝑣 × 𝑋𝑋 × 𝑣𝑣 = 𝑋𝑋 − 𝑋𝑋 � 𝑣𝑣 𝑣𝑣 𝜃𝜃 𝜃𝜃 𝜃𝜃 𝜃𝜃 𝜃𝜃 = 𝑤𝑤, 𝑣𝑣 � 𝑋𝑋 𝑣𝑣 sin2 + ( 𝑣𝑣 × 𝑋𝑋 × 𝑣𝑣 + 𝑋𝑋 � 𝑣𝑣 𝑣𝑣) cos2 + 2𝑣𝑣 × 𝑋𝑋 cos sin − 𝑣𝑣 × 𝑋𝑋 × 𝑣𝑣 sin2 2 2 2 2 2 = (𝑤𝑤, 𝑣𝑣 � 𝑋𝑋 𝑣𝑣 + 𝑣𝑣 × 𝑋𝑋 × 𝑣𝑣cos𝜃𝜃 + 𝑣𝑣 × 𝑋𝑋 sin 𝜃𝜃)
クォータニオンの回転の計算 𝑞𝑞′ = 𝑟𝑟𝑟𝑟𝑟𝑟 ∗ = (𝑤𝑤, 𝑣𝑣 � 𝑋𝑋 𝑣𝑣 + 𝑣𝑣 × 𝑋𝑋 × 𝑣𝑣cos𝜃𝜃 + 𝑣𝑣 × 𝑋𝑋 sin 𝜃𝜃) 𝑞𝑞 = 𝑤𝑤, 𝑋𝑋 , 𝑟𝑟 𝑣𝑣, 𝜃𝜃 = 𝜃𝜃 cos , 2 Xは、v 軸回りに θ 回転した位置に移動する 𝑣𝑣 𝜃𝜃 𝑣𝑣 sin 2 𝑣𝑣 × 𝑋𝑋 × 𝑣𝑣 𝑋𝑋 𝜃𝜃 𝑣𝑣・𝑋𝑋 𝑣𝑣 𝑜𝑜 𝑣𝑣 × 𝑋𝑋
球面線形補間
球面線形補間 • 𝑋𝑋1 , 𝑋𝑋2 の間を原点中心の大円上を移動(t: 0→1)する 𝑞𝑞 ′ (𝑡𝑡) = 𝑟𝑟 𝑣𝑣, 𝑡𝑡𝜃𝜃 𝑞𝑞𝑟𝑟 ∗ 𝑣𝑣, 𝑡𝑡𝜃𝜃 𝑞𝑞 = 𝑤𝑤, 𝑋𝑋1 , 𝑟𝑟 𝑣𝑣, 𝑡𝑡𝜃𝜃 = 𝑡𝑡𝜃𝜃 cos , 2 𝑋𝑋1 × 𝑋𝑋2 𝑣𝑣 = 𝑋𝑋1 × 𝑋𝑋2 𝑋𝑋1 � 𝑋𝑋2 𝜃𝜃 = arccos 𝑋𝑋1 𝑋𝑋2 𝑡𝑡𝜃𝜃 𝑣𝑣 sin 2 𝑋𝑋1 t𝜃𝜃 𝑣𝑣 𝜃𝜃 𝑜𝑜 𝑋𝑋2 𝑣𝑣. 𝑋𝑋 𝑣𝑣
行列との関係 𝑞𝑞′ = 𝑟𝑟𝑟𝑟𝑟𝑟 ∗ 2 𝑞𝑞 = 𝑤𝑤, 𝑋𝑋 , 𝑟𝑟 = 𝑎𝑎, 𝑉𝑉 2 𝑞𝑞𝑞 = 𝑤𝑤𝑎𝑎 + 𝑤𝑤𝑤𝑤 � 𝑉𝑉, 𝑉𝑉 � 𝑋𝑋 𝑉𝑉 + 𝑎𝑎 𝑋𝑋 + 2𝑎𝑎 𝑉𝑉 × 𝑋𝑋 − 𝑉𝑉 × 𝑋𝑋 × 𝑉𝑉 = 𝑤𝑤 𝑎𝑎2 + 𝑉𝑉 � 𝑉𝑉 , 𝑉𝑉 � 𝑋𝑋 𝑉𝑉 + 𝑎𝑎2 𝑋𝑋 + 2𝑎𝑎 𝑉𝑉 × 𝑋𝑋 − 𝑉𝑉 � 𝑉𝑉 𝑋𝑋 + 𝑉𝑉 � 𝑋𝑋 𝑉𝑉 = 𝑤𝑤 𝑎𝑎2 + 𝑉𝑉 � 𝑉𝑉 , 2 𝑉𝑉 � 𝑋𝑋 𝑉𝑉 + 2𝑎𝑎 𝑉𝑉 × 𝑋𝑋 + 𝑎𝑎2 − 𝑉𝑉 � 𝑉𝑉 𝑋𝑋 𝑞𝑞1 𝑞𝑞2 = 𝑎𝑎1 𝑎𝑎2 − 𝑉𝑉1 � 𝑉𝑉2 , 𝑎𝑎1 𝑉𝑉2 + 𝑎𝑎2 𝑉𝑉1 + 𝑉𝑉1 × 𝑉𝑉2 2 𝑉𝑉 � 𝑋𝑋 𝑉𝑉 + 2𝑎𝑎 𝑉𝑉 × 𝑋𝑋 + 𝑎𝑎2 − 𝑉𝑉 � 𝑉𝑉 𝑋𝑋 = (2 𝑉𝑉 � 𝑋𝑋 𝑣𝑣𝑥𝑥 + 2𝑎𝑎 𝑣𝑣𝑦𝑦 𝑧𝑧 − 𝑣𝑣𝑧𝑧 𝑦𝑦 + 𝑎𝑎2 − 𝑉𝑉 � 𝑉𝑉 𝑥𝑥, 2 𝑉𝑉 � 𝑋𝑋 𝑣𝑣𝑦𝑦 + 2𝑎𝑎 𝑣𝑣𝑧𝑧 𝑥𝑥 − 𝑣𝑣𝑥𝑥 𝑧𝑧 + 𝑎𝑎2 − 𝑉𝑉 � 𝑉𝑉 𝑦𝑦, 2 𝑉𝑉 � 𝑋𝑋 𝑣𝑣𝑧𝑧 + 2𝑎𝑎 𝑣𝑣𝑥𝑥 𝑦𝑦 − 𝑣𝑣𝑦𝑦 𝑥𝑥 + 𝑎𝑎2 − 𝑉𝑉 � 𝑉𝑉 𝑧𝑧) = 2𝑣𝑣𝑥𝑥 2 + 0 + (𝑎𝑎2 − 𝑉𝑉 � 𝑉𝑉) 2𝑣𝑣𝑥𝑥 𝑣𝑣𝑦𝑦 − 2𝑎𝑎𝑣𝑣𝑧𝑧 + 0 2𝑣𝑣𝑥𝑥 𝑣𝑣𝑧𝑧 + 2𝑎𝑎𝑣𝑣𝑦𝑦 + 0 2𝑣𝑣𝑦𝑦 𝑣𝑣𝑥𝑥 + 2𝑎𝑎𝑣𝑣𝑧𝑧 + 0 2𝑣𝑣𝑦𝑦 2 + 0 + (𝑎𝑎2 − 𝑉𝑉 � 𝑉𝑉) 2𝑣𝑣𝑥𝑥 𝑣𝑣𝑦𝑦 − 2𝑎𝑎𝑣𝑣𝑥𝑥 + 0 2𝑣𝑣𝑧𝑧 𝑣𝑣𝑥𝑥 − 2𝑎𝑎𝑣𝑣𝑦𝑦 + 0 2𝑣𝑣𝑧𝑧 𝑣𝑣𝑦𝑦 + 2𝑎𝑎𝑣𝑣𝑥𝑥 + 0 2𝑣𝑣𝑧𝑧 2 + 0 + (𝑎𝑎2 − 𝑉𝑉 � 𝑉𝑉) 2 2 2 2 𝑎𝑎 + 𝑣𝑣 − 𝑣𝑣 − 𝑣𝑣 2 𝑣𝑣𝑥𝑥 𝑣𝑣𝑦𝑦 − 𝑎𝑎𝑣𝑣𝑧𝑧 2 𝑣𝑣𝑧𝑧 𝑣𝑣𝑥𝑥 + 𝑎𝑎𝑣𝑣𝑦𝑦 𝑥𝑥 𝑦𝑦 𝑧𝑧 𝑥𝑥 行列での表現が必要な(最終的 2 2 2 2 𝑦𝑦 2 𝑣𝑣𝑥𝑥 𝑣𝑣𝑦𝑦 + 𝑎𝑎𝑣𝑣𝑧𝑧 𝑎𝑎 − 𝑣𝑣𝑥𝑥 + 𝑣𝑣𝑦𝑦 − 𝑣𝑣𝑧𝑧 2 𝑣𝑣𝑦𝑦 𝑣𝑣𝑧𝑧 − 𝑎𝑎𝑣𝑣𝑥𝑥 な表示用の行列を作る)際は、 𝑧𝑧 quaternionから、上記の行列を 2 𝑣𝑣𝑧𝑧 𝑣𝑣𝑥𝑥 − 𝑎𝑎𝑣𝑣𝑦𝑦 2 𝑣𝑣𝑦𝑦 𝑣𝑣𝑧𝑧 + 𝑎𝑎𝑣𝑣𝑥𝑥 𝑎𝑎2 + 𝑣𝑣𝑥𝑥 2 − 𝑣𝑣𝑦𝑦 2 + 𝑣𝑣𝑧𝑧 2 生成する 𝑥𝑥 𝑦𝑦 = 𝑧𝑧