
こんにちは。お知恵をお借りしたく質問致します。
プログラミング中で出た話題なのですが、計算の問題ですので数学カテゴリが適しているだろうと思い、投稿いたします。
ちょっと説明しにくく図を添付致しましたので併せてご覧いただければと思います。(線がふるえていて申し訳ないです。)
図のように、xyz座標を回転してXYZ座標の向きに一致させたいと考えています。
また、「指定した軸(α,β,γ)を回転軸としてθ度回転する」という関数があるので、それを活用しようと考えています。α,β,γはコサイン値(方向余弦)です。回転方向は、ベクトルの向きに時計回り…右ネジの法則みたいな感じです。
x軸から見たXの角度(θxX), y軸からのX(θyX), z軸からのX(θzX)
同様にx軸から見たY(θxY),θyY,θzY、θxZ,θyZ,θzZ
といったように、それらの角度(コサイン値)は分かっています。
(=xyz座標からみたXベクトルの方向余弦、Yベクトルの方向余弦、Zベクトルの方向余弦が分かっている。)
z軸とZ軸の外積を取ったベクトルを回転軸として、θzZが分かっているのでその角度で回転することでZ軸は一致しますけど、XY軸は合いません。(当然ですが…)
そのXY軸を合わせるためにまた回転するというのも遠回りで、任意の軸1本を中心に何度か回転するだけ(上記関数を1度使用するだけ)で、必ず向きが一致する解があると思うのですが、その任意軸と角度を算出する方法が分かりません。
一般にどういう計算をするのでしょうか。アドバイスいただければ幸いです。
なお、上記関数を用いない方法でも構いません。
「X軸(Y軸、Z軸)を回転軸としてφ度回転する」という関数もあるので、オイラー角を求める方法でも構いません。
その他、説明不足な点がありましたら随時追記致しますので、ご指摘願います。
どうかよろしくお願いいたします。

No.3ベストアンサー
- 回答日時:
というかそのままでいいのか。
バカだ。。。。回転前の基底ex, ey, ez,回転後の基底eX, eY, eZとして
eX = cos(θxX) ex + cos(θyX) ey + cos(θzX) ez
eY = cos(θxY) ex + cos(θyY) ey + cos(θzY) ez
eZ = cos(θxZ) ex + cos(θyZ) ey + cos(θzZ) ez
だから,この係数行列がそのまま座標回転行列。
座標回転行列は実直交行列なので,この転置行列が逆行列。
この回答への補足
ありがとうございます。
分かりました、回転行列さえ分かれば、そこからオイラー角を求めるのは簡単なのは理解しました。
http://www7.atwiki.jp/lucifer/pages/13.html
で、その回転行列は、単純に
(θxX, θyX, θzX)
(θxY, θyY, θzY)
(θxZ, θyZ, θzZ)
である…。
最初に知りたがってた任意軸回転の解についても、オイラー角が求まれば、そこから任意軸回転を求められそうです。
とりあえずこれで解決しそうですが、まだ自分の勘違いがあるかもなのでプログラム上でも完全に動作したことを確認してから締め切ります。(明日以降になりそうです)
オイラー角を使った方法により無事に解決できました。
この度はアドバイスしていただき、本当にありがとうございました。
大変参考になりました。
No.8
- 回答日時:
さらにもうひとつ。
回転軸の方向余弦が求まれば
ロドリゲスの公式から
cosθとsinθが
求まりますね。
#θ:回転角
この回答への補足
何度もありがとうございますm(_ _)m
そういえば、色々調べてたらその公式の記述も見かけました。
色々な方法があるようで面白いです。
それも試してみようと思います。
そろそろ回答締め切ります。
とりあえず、オイラー角を使った方法で無事に解決できました。
1回の軸回転(任意軸回転)による方法についてはまだ出来ていませんが、たくさんのアドバイスを頂戴しましたので、後は自分で調べるなりして分かりそうです。
3度回転するよりも1度で終わればやはり美しいので、この方法も十分に理解して実装できるよう頑張ってみます。
この度はアドバイスしていただき、本当にありがとうございました。
大変参考になりました。
No.7
- 回答日時:
ANO6 です。
もうちょっと考えてみました。回転軸は回転によって変化しないから
回転行列をM 回転軸を W とすれば
MW=W=EW (E:単位行列)
(M-E)W=0
なので、W は M-E のうち、一次独立な行ベクトルを2本選び
外積をとれば得られます。適当に2本選んで外積とって
零ベクトルになっちゃったら、別の2本を選ぶでよろしいかと。
角度は前に示した方法で求まりますが、もっと簡単な方法は無いかな?
お一人にしかポイントを付与できないのが残念ですが、ベストアンサーと同じくらい助かりました。
この度は貴重な時間を割いてまでいろいろと教えていただき、大変ありがとうございますm(_ _)m
No.6
- 回答日時:
ANO5です。
回転軸を回転しても長さは変わりませんから固有値=1の固有ベクトルということに
なりますね。
とすると固有方程式を解くまでもないので、固有ベクトルは簡単にもとまります。
回転軸に対する回転量は、回転軸に垂直なベクトルを用意すれば計算できます。
もっとスマートな方法があるかもしれませんが・・・
回転行列Rの固有ベクトルは(m32 - m23, m13 - m31, m21 - m12)で、良さそうな感じです。
角度については、行列のトレースが固有値の総和であることからtrace[R] = 1 + 2cosθ
よって、θ=ArcCos((trace[R] - 1) / 2)
で、求まるという記述がありました※。実際に実装して動作確認できました。
なぜそういう求め方で良いのか、自分にはまだよく分かりませんが…(^-^;)
もっと勉強してがんばって理解します。
※引用
http://www.rugbysensor.com/motion_cluc..html
No.4
- 回答日時:
いや,座標回転行列が直接得られるのでオイラー角なんていらないんじゃない?という意味なんですが。
サブルーチンなんか使わずに直接行列計算したらいいんじゃないの。まあ,詳細がわからないのでなんともいえませんが。この回答への補足
あ、そういうことですか。
回転行列が分かっても動かせないんです。説明不足でした。
OpenGLとかDirectXとかなら、自分で回転行列使って回せますけど、別の開発環境になっていまして、「指定した軸(α,β,γ)を回転軸としてθ度回転する」という関数とか、限られたものしか、無いんですよ~(;_;)
あとさっきの補足に書いた回転行列は縦と横が逆だったかもということは気づいています(^-^;)
回答助かりますm(_ _)m
No.1
- 回答日時:
点P(x、y、z)を各座標軸を軸として、ある角度Φだけ回転したときのPの移る先の座標を計算するには、3行3列の行列R(Φ)を使います。
すなわち、x軸のまわりにΦだけ回転するときR(Φ)は1行目、2行目、3行目の順に書くと、A=(1 0 0)、(0 cosΦ -sinΦ)、(0 sinΦ cosΦ)
となります。
y軸中心に回転するときは、
B=(cosΦ 0 ーsinΦ)、(0 1 0)、(sinΦ 0 cosΦ)
z軸中心に回転するときは、
C=(cosΦ ーsinΦ 0)、(sinΦ cosΦ 0)、(0 0 1)
となり、点Pをx軸のまわりにΦ、さらにy軸のまわりにψだけ回転すると、
B(AP)=(B・A)P
を計算します。
この回答への補足
回答ありがとうございますm(_ _)m
回答していただいた内容は理解できました。
回転行列が分かると、オイラー角を算出するのは簡単そうだというのが分かってきました。
もう少し時間をください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 物理学 角速度ベクトルにつきまして 3 2022/08/09 15:44
- 物理学 高1力学の運動量の問題です。問題を一通り解いたのですが、行き詰まってしまったのでご回答頂ければ嬉しい 3 2022/06/29 11:20
- 物理学 物理 2 2023/01/17 13:31
- 物理学 原点中心とする半径10cmの演習上、質点が1分間に600回の割合で反時計回りに運動している。 (1) 4 2023/05/29 12:46
- 数学 ベクトル方程式(ヘッセの標準形)についての質問 2 2022/04/23 18:00
- 物理学 コマの歳差運動について質問です。 「歳差運動を行う場合,回転軸の方向と角運動量の方向は厳密には一致し 4 2023/01/20 18:31
- その他(プログラミング・Web制作) プログラミング pythonの問題について 2 2022/04/19 00:41
- 物理学 磁束密度Bの一様な磁場中に, 半径aの円板がその面と磁場が直交するように置かれ、中心軸のまわりに角速 4 2022/12/14 23:52
- 物理学 ベクトルと座標系につきまして 1 2022/04/03 06:23
- 物理学 トルク 4 2022/10/01 23:23
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
この問題、解き方は理解したの...
-
高3 数学
-
60人で30000個持ってるのと200...
-
決定性有限オートマトン
-
コピーしたい本のページ数
-
【問題】 f(x) = x^2 - 4a x + ...
-
ルービックキューブと群論
-
至急 a²b+a-b-1 の因数分解...
-
数ⅱ等式の証明について。 条件...
-
3つの無理数a,b,cでf(x)=x^3+ax...
-
三角形の面積は、底辺✕高さ÷2 ...
-
数学得意な人程宝くじ買わない...
-
https://youtube.com/shorts/Kw...
-
1/(s(s^2+2s+5))を部分分数分解...
-
ランダウの記号のとある演算
-
xy平面上の点P(x,y)に対し,点Q(...
-
この180➗204の計算の仕方教えて...
-
サイコロを100回投げて、奇数、...
-
上が✖で下が〇になる理由が、何...
-
limn→∞、10∧n=0?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで横軸の数字を縦書き...
-
一次関数の回転移動について
-
回転行列から角度を求める
-
回転中の独楽の理想的中心(点...
-
3次元座標を原点中心に回転したい
-
Z軸に45度回転したときの座標
-
3次元のガウス関数
-
回転した座標軸と一致させるた...
-
オイラー角 回転行列
-
数学の問題の解き方を教えてく...
-
ベクトルについて
-
座標変換
-
なぜ回転行列が以下のようにな...
-
3次元の座標変換と角度について。
-
3次元空間におけるアフィン変...
-
クリッピングマスクの枠の外を...
-
jw_cadで消えない線があります...
-
突然カーソルが手の形に…
-
in Designで一部のページにのみ...
-
EXCEL 一部のオブジェクトだ...
おすすめ情報