こんにちは。お知恵をお借りしたく質問致します。
プログラミング中で出た話題なのですが、計算の問題ですので数学カテゴリが適しているだろうと思い、投稿いたします。
ちょっと説明しにくく図を添付致しましたので併せてご覧いただければと思います。(線がふるえていて申し訳ないです。)
図のように、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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
ちょっと先の未来クイズ第2問
9月9日(月)に発表される「第3回子どもマネー川柳」に入賞する川柳を考えてこちらに投稿してください。
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
3次元座標を原点中心に回転したい
数学
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
3次元座標を原点中心に回転したい
-
一次関数の回転移動について
-
エクセルで横軸の数字を縦書き...
-
Z軸に45度回転したときの座標
-
Yahooの 画面サイズの変更
-
クリッピングマスクの枠の外を...
-
グーグルマップに謎の線が出ます
-
イラストレーターで辺の中心に...
-
in Designで一部のページにのみ...
-
Photoshopでパスを同じ形のまま...
-
エクセルで、渦巻きを作りたい。
-
エクセルの図形で弧を書く方法
-
バツ印をつけるには??(ワード)
-
突然カーソルが手の形に…
-
jwcad 印刷時の線幅について
-
エクセルで図形やワードアート...
-
フォトショ、または、イラレで...
-
Keynoteでは波線が引けないので...
-
イラストレーターで波線を
-
jw_cadで消えない線があります...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
一次関数の回転移動について
-
エクセルで横軸の数字を縦書き...
-
3次元座標を原点中心に回転したい
-
3次元のガウス関数
-
回転中の独楽の理想的中心(点...
-
回転行列から角度を求める
-
立体図形の回転
-
y軸のまわり、さらにx軸のまわ...
-
座標変換による回転角の求め方
-
オイラー角 回転行列
-
Z軸に45度回転したときの座標
-
球形の体積計算
-
なぜ回転行列が以下のようにな...
-
四元数についての質問(改)
-
3次元の座標変換と角度について。
-
回転の合成変換について
-
傾けた円板を地面に沿って転が...
-
平面近似式から2次元座標を求め...
-
回転した座標軸と一致させるた...
-
反転ってより次元の高い空間の...
おすすめ情報