問題タブ [quaternions]
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.
opengl - クォータニオン回転を回転行列に変換しますか?
基本的に、クォータリオン (qx、qy、qz、qw) が与えられた場合...どうすればそれを OpenGL 回転行列に変換できますか? また、どのマトリックス行が「上」、「右」、「前方」などであるかにも興味があります...ベクトルで必要な四元数のカメラ回転があります...
game-physics - 直交基底からのクォータニオン
速度ベクトルに沿って移動している発射体オブジェクトがあります。オブジェクトが常に速度ベクトルの方向を向いていることを確認する必要があります。さらに、行列ではなくクォータニオンを使用してオブジェクトの回転を表現しています。
最初のステップは直交基底を見つけることであることを私は知っています:
基底を回転クォータニオンに変換するにはどうすればよいですか?
解決
注:答えを提供してくれたNoel Hughesの功績を称えたいと思いますが、私自身の経験から明らかにしたいと思います。擬似コードは次のとおりです。
クォータニオンの最後の要素はスカラー部分であり、最初の3つの要素は虚数部分です。また、上記の擬似コードは、「モデル空間」内のオブジェクトが正のx軸を指していることを前提としています。私の場合、オブジェクトは実際には正のy軸を下に向けていました。この場合、次の変更を行いました。
math - ヨー/ピッチ/ロールから作成された2つのクォータニオンから回転を補間できますか?
クォータニオンは、クォータニオン間の回転を補間するのに適しています。ここまでは順調ですね。
ネットワークゲームを使用している場合、回転をvector3fとして転送するだけで十分ですか、それともクォータニオンを使用する必要がありますか?ゲームをスムーズにするために、最後に送信されたローテーションと現在のローテーションの間を補間する必要があるかもしれません。
しかし、Yaw / Pitch / Rollから作成された2つのクォータニオン間の回転を補間できますか?
math - 2 つの四元数間の「差」
私は Ogre で作業していますが、これは一般的な四元数の問題です。
最初に回転クォータニオン Q1 を適用するオブジェクトがあります。後で、別のクォータニオン Q2 で最初にオブジェクトを回転させたかのようにしたいと思います。
既に Q1 によって回転されているオブジェクトを取得し、Q2 を初期/デフォルトの向きに適用するだけであるかのように整列させるクォータニオンを計算するにはどうすればよいですか? (s)lerping を見ていましたが、これが回転ではなく方向に対してのみ有効かどうかはわかりませんか?
math - 直感的な3D数学リソース
私は最近、3Dスキルを磨くために、いくつかのよく提示され説明されているVectorおよびQuaternionリソースを見つけようとしており、いくつかの問題を抱えています。
私が見つけたリソースのほとんどは、特定の操作を実行することが有用であるという高レベルの理由をスキップする傾向があり、専門用語と証明に直接飛び込んで、私の注意をかなり早く失う傾向があります。
私は、よりよく説明されていると、さまざまな数学のトピックについて本当に良い説明があることがわかりましたが、ベクトルやクォータニオンについては何もありません。
高レベルのVectorおよび/またはQuaternionチュートリアルを知っている人はいますか?
opengl - openglでクォータニオンを使用して画面の中心を回転させる方法は?
アークボール/トラックボールの回転を実装しようとしていますが、回転の中心に問題があります。何があっても中心を画面の中心にしたい。
私がこれまでに行ったことを説明しましょう。
クォータリオンを作成しました (回転軸: vector_start x vector_end、角度: vector_start * vector_end)
そのクォータニオンから、glMultMatrixf(matrix) で使用して目的の回転を取得するために、回転マトリックスを作成しました。
問題は、モデルが本来のようにアークボール回転しているように見えますが、常にローカル原点を中心に回転していることです。ローカルの原点がどこにあるかに関係なく、画面の中心を中心に回転させるにはどうすればよいですか?
その問題の解決策は、回転軸全体を画面の中央に移動してから回転を適用することだと思いますが、これは可能ですか? ここで何かが恋しいですか?
matrix - クォータニオンと変換行列
私が間違っているかどうか教えてください。
クォータニオンを使い始めています。(OpenGLで使用される)回転行列4 x 4を使用して、現在のモデルビューに回転行列を掛けたモデルビュー行列を計算できます。回転行列はクォータニオンから導出されます。
クォータニオンは、方向ベクトル(正規化されていない場合でも)と回転角です。結果として生じる回転は、方向ベクトルモジュールとwクォータニオンコンポーネントに依存します。
しかし、なぜオイラー軸/角度表記の代わりにクォータニオンを使用する必要があるのですか?後者は、視覚化と管理が簡単です...
私が見つけたすべての情報は、この美しい記事で合成することができます:
math - オイラー角とクォータニオンの向き
wintracker II デバイスのクォータニオン方向出力をオイラー角出力のみに変換する方法。Wintracker II デバイスがオイラー角とクォータニオンの向きを出力するためです。オイラー角のみ出力したい。