web-dev-qa-db-ja.com

値を正規化するとはどういう意味ですか?

私は現在、GLSLのノーマライズと呼ばれる機能を利用するOpenGLで照明を勉強しています。 OpenGLドキュメントによると、「2つのベクトルの正規化された積を計算する」と書かれています。ただし、「正規化」の意味はまだ説明されていません。 Googleで正規化された製品を探してみましたが、それについて何も見つけられないようです。誰もが正規化の意味を説明し、正規化された値のいくつかの例を提供できますか?

37

これは数学用語であり、 このリンク はその意味を非常に単純な用語で説明しています。

2Dおよび3Dコンピュータグラフィックスでの操作は、多くの場合、正規化されたベクトルのコピーを使用して実行されます。単位ベクトルに変換...ベクトルの正規化には2つのステップが含まれます。

  1. その長さを計算してから、
  2. 各(xyまたはxyz)コンポーネントをその長さで除算します...
15
momatrix

混乱は、「ベクトル」ではなく「値」を正規化するという考えから来ていると思います。単一の数値を値として考える場合、正規化は意味をなしません。正規化は、ベクトルに適用される場合にのみ役立ちます。

ベクトルは数字のシーケンスです。 3Dグラフィックスでは、通常、v = <x,y,z>として表される座標です。

すべてのベクトルには大きさまたは長さがあり、ピタゴラの定理を使用して見つけることができます:|v| = sqrt(x^2 + y^2 + z^2)これは基本的にOriginからの線の長さ<0,0,0>は、ベクトルで表現されたポイントへ。

ベクトルは、長さが1であればnormalです。それだけです!

ベクトルを正規化するとは、ベクトルが同じ方向を指すように変更することを意味します(原点からのその線を考えてください)が、その長さは1です。

法線ベクトルを使用する主な理由は、方向を表すためです。たとえば、無限の距離にある光源をモデリングしている場合、正確な座標を与えることはできません。ただし、法線ベクトルを使用すると、特定のポイントからどこにあるかを示すことができます。

47
benzado