Chapter 31無料公開

🍇 内積・外積を使ったグラデーション

かもそば
かもそば
2021.04.03に更新

このチャプターでは、内積・外積を利用したグラデーションを紹介します。


内積を利用したグラデーション


外積を利用したグラデーション

内積・外積の図形的な意味

座標Pと方向ベクトルDを考えます。
Dの長さが1である場合、内積、外積の長さは、直覚三角形の底辺、高さの長さと一致 します。

\begin{aligned} P \cdot D &= |P| \cdot |D| \cdot cos \theta = |P| cos \theta \\ |P \times D| &= |P| \cdot |D| \cdot sin \theta = |P| sin \theta \end{aligned}

内積 : 線形グラデーション

内積(Dot Product)を利用することで、指定したベクトル方向に増加する線形グラデーションになります。


(1, 0, 0)方向のグラデーション


(1, 0.5, 0)方向のグラデーション

内積 = 投影

内積 |P \times D| は点PをD上へ投影した長さに一致します。
点PをDの方向に動かした場合に内積|P \cdot D| が変化するため、グラデーションはDの方向に進むような見た目になります。

関連 : 🍎 Dot Productノード

外積 : 円形グラデーション

外積(Dot Product)を利用することで、指定したベクトルから垂直に広がる円形グラデーションになります。


(1, 0, 0)方向の直線から広がるグラデーション


(1, 0.5, 0)方向の直線から広がるグラデーション

外積 = 垂線の長さ

外積の長さ |P \times D| は垂線の長さに一致します。
点PをDと垂直な方向へ動かした場合に長さが変化するため、円形のグラデーションになります。

直線から離れた点は明るく、近い点は暗く見えるため、円形のグラデーションのように見えます。

内積で円形グラデーションを作ってみる (数学)

ベクトルA, B の長さが1である場合、内積と外積は以下の式を満たします。

|A \times B| = \sqrt{1 - |A \cdot B|^2}

これを利用することで、円形グラデーションを内積から作ることができます。

※ ベクトルA, B の長さが1だという制限があるため、長さが1より大きい座標を扱うことはできません。

関連 : 🍎 Cross Productノード

おまけ : 球面グラデーション (点と点の距離)

Distanceノードや、Lengthノードを使うことで、点と点の距離が求まります。
点と点の距離は球状のグラデーションになります。

球状グラデーションを利用することで、3次元の波紋を作ることもできます。

関連 : 🍎 Positionノード