クォータニオンの使用:それらで何ができますか?(数学なし)
私はゲーム開発者であり、数学を勉強していません。そのため、ツールとしてクォータニオンのみを使用します。また、3D回転を使用するには、クォータニオンを使用する必要があります(またはマトリックスですが、この質問ではクォータニオンに留まりましょう)。多くの開発者がそれらを使用することが重要だと思います。それが私の知識を共有し、できれば私が持っている穴を埋めたい理由です。今… だから私が理解した限り: クォータニオンは2つのことを説明できます。 3Dオブジェクトの現在の向き。 オブジェクトが実行できる回転変換。(rotationChange) クォータニオンでできること: 乗算: 四元数endOrientation =四元数rotationChange *四元数currentOrientation; たとえば、3Dオブジェクトは左に90°回転します-そして、私の回転は、右に180°回転し、最後に3Dオブジェクトは90°回転します。 クォータニオンrotationChange =クォータニオンendRotation * Quaternion.Inverse(startRotation); これにより、rotationChangeを取得し、これを別のOrientationに適用できます。 Vector3 endPostion = Quaternion rotationChange * Vector3 currentPosition; たとえば、次のようになります。私の3Dオブジェクトは位置(0,0,0)にあり、乗算する回転は180度右への回転であり、終了位置は(0、-50,0)のようなものです。そのクォータニオンの中には、軸とその軸の周りの回転があります。ポイントをその軸のY度に向けます。 Vector3 rotateOffsetVector = Quaternion rotationChange * Vector3 currentOffsetVector; 例:開始方向はUP-(0,1,0)を示し、乗算した回転は右に180°回転し、終了方向は下を示しています。(0、-1,0) ブレンド(LerpとSlerp): クォータニオンcurrentOrientation = Quaternion.Slerp(startOrientation、endOrientation、interpolator) 補間器が1の場合:currentOrientation = endOrientation 補間器が0の場合:currentOrientation = startOrientation Slerpはより正確に補間し、Lerpはより多くのパフォーマンスを補間します。 私の質問: 今まで説明したことはすべて正しいですか? クォータニオンでできるのはそれだけですか?(obv。not) 他に何ができますか? 2つのクォータニオン間のDot製品とCross製品は何に適していますか? …