私は現在、GLSLのノーマライズと呼ばれる機能を利用するOpenGLで照明を勉強しています。 OpenGLドキュメントによると、「2つのベクトルの正規化された積を計算する」と書かれています。ただし、「正規化」の意味はまだ説明されていません。 Googleで正規化された製品を探してみましたが、それについて何も見つけられないようです。誰もが正規化の意味を説明し、正規化された値のいくつかの例を提供できますか?
これは数学用語であり、 このリンク はその意味を非常に単純な用語で説明しています。
2Dおよび3Dコンピュータグラフィックスでの操作は、多くの場合、正規化されたベクトルのコピーを使用して実行されます。単位ベクトルに変換...ベクトルの正規化には2つのステップが含まれます。
- その長さを計算してから、
- 各(
xy
またはxyz
)コンポーネントをその長さで除算します...
混乱は、「ベクトル」ではなく「値」を正規化するという考えから来ていると思います。単一の数値を値として考える場合、正規化は意味をなしません。正規化は、ベクトルに適用される場合にのみ役立ちます。
ベクトルは数字のシーケンスです。 3Dグラフィックスでは、通常、v = <x,y,z>
として表される座標です。
すべてのベクトルには大きさまたは長さがあり、ピタゴラの定理を使用して見つけることができます:|v| = sqrt(x^2 + y^2 + z^2)
これは基本的にOriginからの線の長さ<0,0,0>
は、ベクトルで表現されたポイントへ。
ベクトルは、長さが1であればnormalです。それだけです!
ベクトルを正規化するとは、ベクトルが同じ方向を指すように変更することを意味します(原点からのその線を考えてください)が、その長さは1です。
法線ベクトルを使用する主な理由は、方向を表すためです。たとえば、無限の距離にある光源をモデリングしている場合、正確な座標を与えることはできません。ただし、法線ベクトルを使用すると、特定のポイントからどこにあるかを示すことができます。