2012-07-25 9 views
32

私は現在、normalizeと呼ばれるGLSLの関数を利用するOpenGLで照明を研究しています。 OpenGLの文書によると、「2つのベクトルの正規化された積を計算する」と言われています。しかし、それはまだ「正規化された」意味を説明しません。私は正規化された製品がGoogle上にあるかどうかを試してみましたが、それについて何も見つけられないようです。誰でも正規化の意味を説明し、正規化された値のいくつかの例を提供できますか?値を正規化することは何を意味しますか?

+0

どこを見つけましたか? GLSL仕様である:(genTypeのX)を正規化 - http://www.opengl.org/registry/doc/GLSLangSpec.Full.1.20.8 Xと同じ方向のベクトルを返すが、1の 長さ.pdf – fen

+0

ここで、私はそれを見つけたときに最初に出てきたものだと思います。 http://www.opengl.org/sdk/docs/manglsl/xhtml/normalize.xml奇妙 – TheAmateurProgrammer

+0

...しかし、説明が適切な情報があります。 – fen

答えて

13

それは数学的な用語だとthis linkは非常に簡単な言葉でその意味を説明します:2Dおよび3Dコンピュータグラフィックスにおける

操作は、多くの場合、すなわち正規化されているベクトルのコピーを使用して実行されます。

  1. は、次に、その長さを算出し、
  2. 分割その(xy又はxyz)は、その長さ成分の各...
:単位ベクトルに変換...ベクトルを正規化すると、2つのステップを含みます
39

私は、混乱は "ベクトル"とは対照的に "値"を正規化するという考えから来ていると思います。単一の数値を値と考えると、正規化は意味をなさない。正規化は、ベクトルに適用する場合にのみ有効です。

ベクトルが数値の配列です。 3Dグラフィックスでは通常v = <x,y,z>と表される座標です。

すべてのベクターは、大き又はを有するPythagoraの定理を使用して見つけることができる:|v| = sqrt(x^2 + y^2 + z^2)これは、基本的にはベクトルで表さ点に原点<0,0,0>から線の長さです。その長さがそれだ1であれば

ベクトルは通常です!ベクトルを正規化する

は、同じ方向を指すように(原点からその行を考える)を変更することを意味するが、その長さは1です。

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

+1

正規化は確かに意味をなさない単一の値に対して。それが記号(x)の意味です。 – Jessy

+0

@Jessy十分に公正ですが、3ベクターの場合よりも面白くない/混乱することはあまりありません。おそらく – benzado

+0

。私はそれがコンセプトを理解するのに役立つと思う。例えば、正規化された "n> 1"ベクトルと "正規化1ベクトル"の内積を取ることを想像すると便利だと思います。他の寸法の寄与がベクトル間の角度にどのように影響しないかを視覚化することができます。 1ベクトルと一致する次元のみが重要です。 – Jessy

関連する問題