前提・実現したいこと
いつも勉強させていただいております。
ゲームエンジンUnityでQuaternionを用いて角度計算を行いたいのですが、
計算誤差が大きすぎて困っております。
ミニマムなサンプルで試しても納得がいかないため質問させてください。
状況
・新規のシーン ・Cube を一つ作成 ※X という名前 ・EmptyObjectを作成し、以下のソースコードをコンポーネントとして登録
該当のソースコード
C#
1public class NewBehaviourScript : MonoBehaviour 2{ 3 void Start() 4 { 5 Transform x = GameObject.Find("X").GetComponent<Transform>(); 6 x.localRotation = Quaternion.Euler(-10, -10, -10); //x,y,zを-10度ずつ回転させる 7 x.localRotation = x.localRotation * Quaternion.Euler(10, 10, 10); //x,y,zを10度ずつ回転させる 8 } 9}
試したこと
上記の処理ですと、
1, それぞれのx,y,z軸に対して-10度ずつ回転させる
2, それぞれのx,y,z軸に対して10度ずつ回転させる
ので、1,2が相殺されて 0, 0, 0になることを期待してたのですが実際には、(1.676, -2.049, -1.458)
のような微小な値が入っており 期待した(0, 0, 0)にはなりません。
オイラー角 と Quaternionの変換の際の計算誤差だとは思うのですが 10度 変更&戻す しただけで1度以上
値がずれてしまうのは納得がいきません……
・私の計算のやり方が間違っているのか
・Quaternionを扱う際の暗黙の手順等があるのか
・普通はこうする等、定跡があるのか
等々教えていただければ幸いです。非常に単純な事をうかがってしまいご迷惑かとは思いますが宜しくお願い致します。
補足情報(FW/ツールのバージョンなど)
Unity 2018.1
C#

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/19 05:30