問題タブ [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.
c++ - このコードはどのオイラー角の次数になりますか?
数学ライブラリ GLM を使用して、このコードを使用してオイラー角回転を回転行列に結合します。
これは、XYZ または ZYX のオイラー角シーケンスになりますか? 行列の乗算はスカラー乗算と同じように動作しないため、よくわかりません。
orientation - 向きと速度を位置に変換する
(x,y,z)
私は時間にある体を持っていt0
ます。体が一定の速度で動いていることを知っていs
ます。機体の向きは(h,p,r)
(ヘディングのピッチとロール)です。t
の関数として秒後の体の位置を計算したいと思いx,y,z,h,p,r
ます。どうすればいいですか?ありがとうございました。
c++ - OpenCV、C++、Image 2D による頭部姿勢推定 - 幾何学的手法 - ロール、ヨー、ピッチ
2D 画像に基づいて、人の顔の 3 つの角度を見つけようとしています。
顔、目、鼻、口を見つけるために、HaarCascade で OpenCV を使用しています。しかし、角度 X、Y、Z (ロール、ピッチ、ヨー) を見つけるのに役立つ幾何学的方法は見つかりませんでした。
誰かがc ++またはjavaで機能するメソッドを示すのを手伝ってくれませんか?
android - Android磁力計は高度を計算します
Android磁力計を使用して自分の位置の高度を取得することはできますか? はいの場合、どのように高度を計算できますか? 私が理解したように、Android API から x、y、z の 3 つの座標とテスラの磁場強度を取得します。これらの座標をオイラー角に変換して位置を特定することはできますが、高度を計算できるかどうかはわかりません。誰かがそれについて知っていて、GPSを使用せずに高度を把握するのを手伝ってくれますか?
graphics - 回転行列から解いたオイラー角間のスムーズな移行
3*3 の回転行列 R があります。これで、この回転行列を解いて、回転行列のオイラー角を取得できます。( https://truesculpt.googlecode.com/hg-history/38000e9dfece971460473d5788c235fbbe82f31b/Doc/rotation_matrix_to_euler.pdf )
ここで、軸を中心にボディを回転させるために回転行列を使用する状況があるとします。ここで、各微小回転について、そのオイラー角セットの回転行列を解きます。オイラー角の複数のセット (実際には 2 つ) がソリューションとして表示されるため、体の回転が連続するようにオイラー角セットを選択することを (コードで) どのように保証しますか?
javascript - ノード階層内のノードをカメラ (ビルボード) に向ける
ノード階層内のノードをカメラに向ける、つまりビルボードにする必要があります。すべてのノードについて、そのワールド マトリックスとワールドの回転をクォータニオンとして保存します。私がクォータニオンについて知っていることにより、私が望む操作は、カメラのクォータニオンとノードの回転クォータニオンの差を取得し、その差によってノードを単純に回転させることです。
私のカメラはオイラー角として保存されているので、最初に X 軸の回転を作成し、次に Z 軸の回転 (Y 軸の回転はありません) を作成し、それらを乗算してカメラのクォータニオンを作成します。
そこから、差を取得し、最終的にそこから回転マトリックスを作成し、それをノードのワールド マトリックスに乗算するための計算を行うだけです。
ただし、これにより、ノードが狂ったように回転し、カメラに面しなくなります。
関連する JavaScript コードは次のとおりです。
私が犯している明らかな間違いはありますか?
rotation - クォータニオンとオイラー角を表すこれら 2 つの回転行列が同じでないのはなぜですか?
以下は、単位四元数 {q0,q1,q2,q3} を中心に角度 alpha だけ回転する表現です。
ここで、beta_x、beta_y、および beta_z は単位四元数の方向余弦、つまり回転軸です。
これに対応する回転行列は次のとおりです。これをR1と呼びましょう。
ここで、代わりにオイラー角を使用して回転行列を表すとします。これをR2と呼びましょう。
R2 は、最初に x 軸を中心に phi だけベクトルを回転させ、次に y 軸を中心に theta だけ、最後に z 軸を中心に psi だけ回転させます。ここで、回転軸が yz 平面にあるとします。これは、x 軸を中心とした回転はなく、y 軸と z 軸を中心とした回転の組み合わせのみであることを意味します。これは phi がゼロであることを意味し、これはR2(3,2) がゼロであることを意味します。
または、x 軸を中心とした回転がないため、cos(beta_x) がゼロであることも意味します。これは、q_1 がゼロであることを意味します。ただし、R1(3,2) を見ると、R2(3,2) とは異なり、ゼロではありません。これら 2 つの表現が同じでないのはなぜですか? 私は何が欠けていますか?
c# - クォータニオンへのオイラー角の追加
既存のクォータニオンにオイラー角を追加したい。これが私が得たものです:
ヨーとピッチの回転のみが必要です。古い変換にはこのプロパティがあります。それに追加するオイラー角も、ピッチとヨーの回転のみです。それを乗算するとどうなるかというと、oldTransform が記述する回転がロール回転を導入するということです。
それから私は試しました:
これにより、ロールの回転は発生しません。このオプションは、oldTransform がヨー軸をピッチ軸に回転させるときにジンバル ロックがあるため、さらに悪化します。
ここで想像できるのは、oldTransform から古いヨーとピッチの回転を取得し、ヨーとピッチの軸を変更して、それらが (0,1,0) と (1,0,0) ではなくなるようにすることです。ここでの問題は、クォータニオンからオイラー角を抽出すると、ジンバル ロックも得られることです。
では、特定の軸のオイラー角をクォータニオンに追加するにはどうすればよいでしょうか?
c++ - 与えられた時間でオイラー角/回転行列を補間する
特定の時間 (または速度) で 2 つのオイラー角の間を正しく補間するにはどうすればよいですか?
たとえば、まぶたを最初に下に回転させてから再び上に回転させる単純なまばたきを実装したいと考えています。まばたきにかかる時間は 50 ~ 500 ミリ秒です。現時点では、x 値を計算するだけです (ダウンの場合):
すべての計算ステップは後で袋から取り出され、 100 ヘルツのレートでノードに適用されます。私はまぶたの速度を考慮していません。また、ここでの「補間」は本当に汚いです...オイラーを四元数または回転行列に変換する方が良いですか?
70ms 以内に 280mm/s の下向きのピーク速度を考慮し、約 100mm/s でまぶたを開く、blink(500ms) のような関数は本当に役に立ちます。
c# - クォータニオンからオイラー アルゴリズムへ。getPitch() は Nan を返しますか?
センサーから取得したクォータニオンを変換し、シータを計算してピッチを取得しようとしています。興味のある方は、この記事(第 2 章) をご覧ください。
私の問題は次のコードにあります。
ピッチを取得する euler 1 は常に Nan (数値ではない) を返します。アルゴリズムを正しく実装したかどうかはわかりません。何らかの理由で、Asin(d)、ここで d の出力は >1 かつ <-1 です。