数学公式(3D処理用・ベクトル関連)
- 以下は3D処理用・ベクトルに関する数学公式
- これを利用すれば1通りの作業ができるはずと思いメモを残す
- ベクトルや座標をなるべく(x, y, z)に分解して式を書くようにした
ベクトルの大きさ(長さ・ノルム)
$$
\mid \vec{a} \mid = \sqrt{a_x^2 +a_y^2 +a_z^2}
$$
- ベクトルの長さ(ノルム)を求める式
- ルート計算があるので多様すると処理に時間がかかる
- 距離の比較だけで正確な数値が必要なければそのままルート計算せずに比較したほうが良い
内積の定義と代数的定義
-
$\thetaはラジアン$
$$
\vec{a} \cdot \vec{b} = \mid \vec{a} \mid \mid \vec{b} \mid \cos \theta
$$
$$
\vec{a} \cdot \vec{b} = a_x b_x + a_y b_y + a_z b_z \cdots
$$ -
内積を求める公式
外積
$$
\vec{a} \times \vec{b} = (a_yb_z-b_ya_z , (-1)(a_xb_z - b_xa_z) , a_xb_y-b_xa_y)
$$
- 外積を求める式
- $\vec{a}$を$\vec{b}$として傾ける場合の回転軸を求めるときに利用した
ベクトルのなす角
-
$\vec{a}$ $\vec{b}$は交差するベクトル
$$
\cos \theta = \frac{\vec{a} \cdot \vec{b}}{\mid \vec{a} \mid \mid \vec{b} \mid} = \frac{a_xb_x + a_yb_y + a_zb_z}{\sqrt{a_x^2 +a_y^2 +a_z^2}\sqrt{b_x^2 +b_y^2 +b_z^2}}
$$
$$
\theta = \cos^{-1}\left(\frac{a_xb_x + a_yb_y + a_zb_z}{\sqrt{a_x^2 +a_y^2 +a_z^2} \sqrt{b_x^2 +b_y^2 +b_z^2}}\right)
$$ -
$\vec{a}$を$\vec{b}$として傾ける場合の回転角度を求めるときに利用した
-
このなす角と上記外積を使って、ロドリゲスの回転公式の表現行列にあてはめれば、$\vec{a}$から$\vec{b}$への回転マトリクスとして利用可能
-
主に3Dモデルの構成点をぐるっと回したいときに利用した
-
この$\theta$は0~180度(0~$\pi$)の範囲で返すため、回転方向に留意する必要がある
面積(ベクトルで二辺を指定した三角形の面積)
-
$\vec{a}$ $\vec{b}$は交差するベクトル
-
$\frac{1}{2}$を取り払えば台形の面積となる
$$
S = \frac{1}{2}\sqrt{\mid\vec{a}\mid^2\mid\vec{b}\mid^2-(\vec{a} \cdot \vec{b})} = \mid\vec{a} \times \vec{b}\mid
$$
$$
S = \frac{1}{2}\sqrt{(a_yb_z - a_zb_y)^2 +(a_zb_x - a_xb_z)^2 +(a_xb_y - a_yb_x)^2}
$$ -
3Dモデルを三角形パッチで分割した後、表面積を求めるために利用したがルートが計算に入っているので多様すると面積計算に異常に時間がかかってしまう
-
最後の最後にルートすれば・・・どうだろうか
ロドリゲスの回転公式の表現行列
-
$\vec{n}$は回転軸となるベクトル
-
$\theta$は回転角度(ラジアン)
$$
Rn(\theta)=\begin{pmatrix}
n_x^2(1-\cos\theta)+\cos\theta & n_xn_y(1-\cos\theta)-n_z\sin\theta & n_xn_z(1-\cos\theta)+n_y\sin\theta \\
n_xn_y(1-\cos\theta)+n_z\sin\theta & n_y^2(1-\cos\theta)-\cos\theta & n_yn_z(1-\cos\theta)+n_x\sin\theta \\
n_xn_z(1-\cos\theta)+n_y\sin\theta & n_yn_z(1-\cos\theta)-n_x\sin\theta & n_z^2(1-\cos\theta)+\cos\theta \\
\end{pmatrix}
$$ -
外積となす角を元に3Dモデルを回転したい場合に利用した
-
ただし、$\theta$は$\pm$を持たない場合に回転させた方向があっていない場合があるため、考慮が必要となる(場合がある)
ラジアンから度
$$\deg=rad\times\frac{180.0}{\pi}$$
- 備忘録
度からラジアン
$$rad=\deg\times\frac{\pi}{180.0}$$
- 備忘録