Unity | ベクトル、行列、同次座標

目次

1. ベクトルの内積と外積

1. ポイントの乗算

1.1 公式

1.2 幾何学的意味

2. 外積

2.1 公式

2.2 幾何学的意味

2. 行列の点乗算と相互乗算

1. マトリックス

2. 行列の内積

3. 行列の交差乗算

3. マトリックスの回転

4.同次座標


1. ベクトルの内積と外積

1. ポイントの乗算

        内積とも呼ばれ、結果はスカラーです。

1.1 公式

        ベクトル a とベクトル b のドット乗算には 2 つの計算式があります。

  1. a・b=(x1, y1, z1)・(x2, y2, z2)=x1×x2+y1×y2+z1×z2;
  2. a・b=‖a‖×‖b‖×cosβ。

1.2 幾何学的意味

        下図に示すように、2 つのベクトル a と b のドット乗算の結果が正の数である場合、2 つのベクトルの方向は比較的一致しており、正の数が大きいほど 2 つのベクトルの方向は一致しています。ベクトル a とベクトル b は、正の数が最大になるまで、両者の方向はまったく同じになります。2 つのベクトル a と b の内積の結果が負の数になる場合、2 つのベクトル a と b の方向は逆であり、得られた負の値が小さいほど、a と b の逆方向は厳しくなります。負の数が最小です。 2 つの方向は完全に逆です。 

        2 つのベクトルの方向を判断することに加えて、点乗算を使用して β の角度を計算することもできます (つまり、 β=arcos((a b)/(|a|×|b) |) )。Unity の場合: β=Mathf.Acos(Vector3.Dot(a, b)/(a.magnitude × b.magnitude))

        ドット乗算は、ベクトルの射影変換を実現するために、特定の方向のベクトルの射影長さを計算するためにも使用できます。

2. 外積

        外積、ベクトル積とも呼ばれます。Vector3 の内積も Vector3 の内積と同様にベクトル間の計算式ですが、外積の結果が値ではなく同次元のベクトルになる点が異なります。

2.1 公式

        c=a×b=(a1, a2, a3)×(b1, b2, b3)=(a2×b3-a3×b3, a3×b1-a1×b3, a1×b2-a2×b1)

        この式では、2 つのベクトル a と b の相互乗算の後、a と b のベクトルによって形成される平面に垂直なベクトル c が得られます。

        c の長さは別の式で表すことができます。つまり、a×b の長さは、ベクトルのサイズとベクトル間の角度の sin 値の積に等しくなります: |c|=|a×b |=|a|×|b|× sin ベータ。

  • c の長さが 0 のとき、a と b は互いに平行な 2 つのベクトルです。a と b の外積の法が a の法と b の法を掛けた値に等しいとき、a と b は次のようになります。互いに直交する 2 つのベクトル。
  • ベクトル a とベクトル b の外積の係数は、ベクトル a とベクトル b によって形成される四角形の面積です。

2.2 幾何学的意味

  1. 2 つのベクトルによって形成される平面に垂直なベクトルを取得します。
  2. 2 つのベクトルが平行か垂直かを判断します。
  3. ベクトルの外積の係数は四角形の面積です。

2. 行列の点乗算と相互乗算

1. マトリックス

  • 対角行列: つまり、同じ行番号と列番号を持つ位置のみが番号を持ち、他の位置は 0 の正方行列行列です。
  • 単位行列: つまり、同じ行番号と列番号を持つ対角線上の数値はすべて 1 であり、他の位置はすべて 0 です。
  • 転置行列: 行列を対角に沿って反転することです。私たちはよく「正方行列」行列を使用するため、行列を転置した後、正方行列は同じサイズのままですが、対角の両側の数値がスワップ。

2. 行列の内積

        数値と行列を乗算するには、行列内のすべての変数を直接置き換えるだけです。この種のスカラー倍算は、実際には行列内のすべての値を展開します。結果は行列になります。

        行列と行列のドット積、英語のハダマール積なので、ハダマール積とも呼ばれます。乗算する必要がある 2 つの行列 A と B のサイズはまったく同じです。つまり、A と B のサイズは両方とも M*N です。結果は、行列、列ベクトル、または行ベクトルになる場合があります。

A \cdot B=\begin{bmatrix} a_{11}& a_{12}\\ a_{21} & a_{22} \end{bmatrix}\cdot \begin{bmatrix} b_{11}& b_{12 }\\ b_{21} & b_{22} \end{bmatrix}= \begin{bmatrix} a_{11} b_{11}&a_{12} b_{12}\\ a_{21} b_{21}& a_{22} b_{22}\end{bmatrix}

3. 行列の交差乗算

        一般に、行列の乗算とは行列の相互乗算を意味し、相互乗算の結果が行列になります。行列の乗算 (A 行列 × B 行列) には追加の条件が必要で、行列 A の列数と行列 B の行数が等しくなければ乗算できず、乗算の意味がありません。

A \times B=\begin{bmatrix} a_{11}& a_{12}\\ a_{21} & a_{22} \end{bmatrix}\times \begin{bmatrix} b_{11}& b_{12 }\\ b_{21} & b_{22} \end{bmatrix}= \begin{bmatrix} a_{11} b_{11}+a_{12}b_{21} &a_{11} b_{12}+a_ {12}b_{22}\\ a_{21} b_{11}+a_{22}b_{21}& a_{21} b_{12}+a_{22}b_{22} \end{bmatrix}

        行列乗算後に得られる行列。各位置 Cij (つまり、C 行列の i 行 j 列) は、A 行列の i 行ベクトルの内積の計算結果であり、 B 行列の j 番目の列ベクトル。

        ある行列を掛けた行列が単位行列と等しいとき、この「ある」行列は行列の「逆行列」です。行列に逆行列がある場合、その行列は可逆行列と呼ばれ、逆に、行列が逆行列を持たない場合、その行列は不可逆行列と呼ばれます。

3. マトリックスの回転

        行列は、行列の幾何学的解釈である標準行列によって回転およびスケーリングされると言えます。標準行列の場合、回転とスケーリングの後に別の行列が形成され、この結果として得られる行列が計算される「変換行列」です。任意のベクトルに対して、「変換行列」を乗算して、表現したい回転とスケールの値を取得します。

        行列が β° を回転したい場合、回転行列の 1 行目は [cosβ, sinβ]、2 行目は [-sinβ, cosβ] となり、それぞれ標準ベクトル (1, 0) と ( 0, 1) β° 回転後のベクトル。以下に示すように。

        この回転行列を乗算したベクトルは、標準座標系の標準軸を中心に β° 回転します。

4.同次座標

        同次座標とは、元の n 次元ベクトルを n+1 次元ベクトルで表現するもので、例えば、3 次元ベクトルを 4 次元ベクトルで表現し、Vector3 が Vector4 になり、さらに x、y、 zとzがもう1つある wと同次行列も同様 n次元で表現できないものはn+1次元で表現できるし、3×3行列で表現できないものはn+1次元で表現できる4×4

        ユークリッド幾何空間では、2本の平行線は決して交わることはありません(『同次座標』より引用)。しかし、射影空間では、2 本の平行線が無限遠の点で交差しているように見えます。

        アウグスト フェルディナンド メビウスによって提案された同次座標 (Homogeneous Coordines) では、投影空間内の画像を幾何学的に処理することができます。同次座標では、N+1 成分を使用して N 次元の座標を記述します。たとえば、2D 同次座標では、デカルト座標 (X, Y) に基づいて新しいコンポーネント w が (x, y, w) に追加されます。ここで、デカルト座標系の大きな X、Y と、同次の小さな x と y は、二次座標の は、X=x/wY=y/w に対応します。デカルト座標の点 (1, 2) は、同次座標では (1, 2, 1) になります。この点が無限遠 (∞, ∞) に移動すると、同次座標では (1, 2, 0) になり、無限遠の点を表すために無意味な「∞」を使用することがなくなります。

        点 (1、2、3)、(2、4、6)、および (4、8、12) は、デカルト座標の同じ点 (1/3、2/3) に対応します。任意の数値の積 (1a、2a、3a) は常にデカルト座標の同じ点 (1/3、2/3) に対応します。したがって、点は常にデカルト座標の同じ点に対応するという点で「均一」です。言い換えれば、同次座標はスケール不変性を表します。

        行列乗算は非常に強力で、回転、スケーリング、投影、ミラーリング、およびシアリングを表現できますが、平行移動は表現できません (行列乗算の性質上、ゼロ ベクトルを乗算した行列はすべてゼロになるため、ゼロ ベクトルは平行移動できません))、 私は何をすべきか?均一行列はまさに私たちのニーズを満たすことができ、元の次元に次元を追加し、追加された次元を使用して変換操作を表現します。

おすすめ

転載: blog.csdn.net/weixin_39766005/article/details/131685707