問題タブ [euler-angles]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - オイラー角 (またはクォータニオン) から立方体の下側を識別する方法 - three.js
それで!
1つの問題を解決するのを手伝ってもらえないかと思っていました:
3 軸で回転できる立方体があります。0 から 2PI までの 3 つの角度の配列である立方体の回転に関する情報を取得できます。
問題は、これらの 3 つのオイラー角から立方体のどちらの側が底にあるかをどのように識別できるかということです。
完璧な機能は次のようなものになると思います:
念のため - Three.js を使用すると、立方体の四元数を取得することもできます。
助けてくれてありがとう
3d - クォータニオンがレベルから定義された角度を超えて回転しているかどうかを確認する方法
クォータニオン q があり、X/Y 軸の両方でレベルを超えて特定の角度を超えて回転しているかどうかを判断する必要があります。簡単なショートカットは明らかに四分円を x/y/z オイラー角に変換し、x/x 値を角度制限と比較することですが、これを行うためのよりクリーンな方法があるかどうか疑問に思っています。
c# - UnityでQuaternion.eulerを使用してオブジェクトを360度回転するにはどうすればよいですか?
Unity でタングラム ゲームを開発しています。オブジェクトを 360 度回転させたいのですが、うまくいきません。オブジェクトを Web カメラで回転させたい。現実世界のオブジェクトを回転させるとき、現実世界のオブジェクトの回転に合わせてゲーム オブジェクトを回転させたいということです。実世界のオブジェクトとしてマーカーを使用しています。上記コードで回転しています。しかし、それは正確ではありません。本当の回転より速いです。
c++ - 回転シーケンスに関するクォータニオンからオイラー角への変換
これは私が持っているものです:
- ベクトルまたは 3D 空間の点を
Vector3D
表すクラスがあります。 - クォータニオンで微積分を実行する
Quaternion
クラスがあり、静的メソッドを使用して角度軸表現から回転単位のクォータニオンを作成できますQuaternion::fromAngleAxisRotation(double angle, Vector3D axis)
。 - アルファ、ベータ、ガンマの角度を持つ
EulerAngles
クラスがあり、コンストラクターで回転シーケンスを指定する必要があります。これは、正規の 12 (XZX、YXZ、ZYX ecc) のいずれかになります。Vector3D
プライベート メンバーとして、回転シーケンス軸を指定する3 つの要素の配列があります。つまり、ZYX回転の場合、私は持っていaxes[0] = Vector3D(1,0,0); axes[1] = Vector3D(0,1,0); axes[2] = Vector3D(0,0,1);
ます。XZX回転シーケンスについては、私が持っているaxes[0] = Vector3D(1,0,0); axes[1] = Vector3D(0,0,1); axes[2] = Vector3D(1,0,0);
などです。 クラス
EulerAngles
にはメソッドがありgetQuaternion()
ます。これにより、3 つの回転角度と回転シーケンスを持つ対応する四元数を計算できます。動作させるために、このメソッドは静的メソッドを使用して 3 つの順序付けられたQuaternion
インスタンスを作成しQuaternion::fromAngleAxisRotation
、単一の回転角度のクォータニオンを見つけてからそれらを乗算します。これにより、12 個の回転シーケンスすべてで回転単位四元数を計算する単一のメソッドを使用できます。Quaternion qa = Quaternion::fromAngleAxisRotation(alpha, axes[0]); Quaternion qb = Quaternion::fromAngleAxisRotation(beta, axes[1]); Quaternion qg = Quaternion::fromAngleAxisRotation(gamma, axes[2]); return qa * qb * qg;
そして、これは私が欲しいものです:
例がありQuaternion
ます。配列に格納されている同じ回転シーケンスを考慮して、クォータニオン (正規化など) を取り、そこから 3 つの角度を作成できるEulerAngles
メソッドをクラスで作成したいと考えています。EulerAngles::setFromQuaternion(Quaternion q)
axes
いくつかの数学を使用して、すべての回転シーケンスの組み合わせを考慮し、それらを個別に脅して角度を見つけることができます。しかし、 で行っているように、独自の方法を作成したいと考えていますEulerAngles::getQuaternion()
。
入力として回転シーケンスを与える角度に単位四元数を分解する方法はありますか、またはそれらを見つけるために12の異なる方法を作成する必要がありますか?
Vector3D.h
Vector3D.cpp
Quaternion.h
クォータニオン.cpp
EulerAngles.h
EulerAngles.cpp
math - Three.js逆回転
古い Away3D プロジェクトの座標を使用してシーンに Object3D を配置しています。私が抱えている問題は、オブジェクトの位置が負の場合 (つまり、カメラの後ろ)、回転が反対になることです。
チルトとスピンには X と Z のみを使用しています。
反転するように反対側/反転側の角度を計算する方法はありますか?
つまり、x = 1.69 の場合、正反対はどうあるべきか?
これが私の現在の試みです:
編集:これについてさらに調査を行っていますが、角度を計算する Three.js の方法が Away3d のものと異なる可能性はありますか? つまり、軸と角度を使用した 3D 回転で同様の問題が発生します。
とても奇妙です。一部のオブジェクトは、Away3d と同じように良好であり、一部は同じにはほど遠い奇妙な角度にあります。
c++ - Eigen Library を使用した Rotation 行列からのロール ピッチとヨー
回転行列からロール ピッチ ヨー角度を抽出する必要があり、自分の行っていることが正しいことを確認したい。
あれは正しいですか?私はここを読んでいたので: http://eigen.tuxfamily.org/dox/group__Geometry__Module.html#gad118fececd448d7485ffea4858775e5a
そして、説明の最後に、間隔が角度を定義すると言われているとき、私は少し混乱しました.
calibration - キャリブレーションなしでヨー角を計算する
加速度計と磁力計があるとします。次の場合、磁力計を較正せずにヨー角を計算するアプローチがあるかどうか疑問に思っています-
- 磁北に対するヨー角は正確である必要はありません。したがって、デバイスが磁北を指す場合、ヨー角は 0 である必要はなく、任意の角度でかまいません。ただし、ヨー角度は回転に対して正確である必要があります。つまり、デバイスが回転するとき、ヨー角度の変化は実際の角度の変化を正しく反映する必要があります。
ありがとう、