このページhttps://goocreate.com/learn/everything-you-always-wanted-to-know-about-rotation/は、3Dオブジェクトを別のオブジェクトに向けるように回転することができる関数 'LookAt'を記述する。ルックアット関数の内部動作について説明(ただし、コードに記載されていない)されているとして:LookAt関数
機能が動作する方法は、エンティティを受け取り、 位置を標的とし、バックベクトルを取得するために、それらを減算することです。次に、 を計算して、上のベクトルと後のベクトルの積を計算し、 右のベクトルを取得します。次に右の ベクトルと後ろのベクトルとの積を計算して、方向ベクトルと右ベクトルの両方を に直交するアップベクトルにし、最後に回転行列Matrix3x3の3つのベクトルをそれぞれ 行に正規化します。
私はこれを3D関数のライブラリなしで複製しようとしています。私は3次元ベクトル減算、行列乗算、ドットとクロス積関数を持っています。 (私はLuaでコーディングしています)
私が理解できないことは、あるオブジェクトを別のものと同じ方向(そしてうまくいけば、向き)にする方法です。
これは、角度に基づいて回転行列を作成することの問題であることを読んだが、私が見つけたものはすべて3Dで角度を返すということは、1つの角度を返すことで終了する - 私は3つの角度各平面について。
この回転行列はどのように構成しますか?私はオブジェクトの向きがわからないので、オブジェクトの現在のx、y、z角度を計算するのが問題です。私は必要なのは、オブジェクトの現在の3次元角度を決定する関数と、それを別のオブジェクトの回転行列に変換する方法です。すべての