ポイント変換とベクトル変換の違いは何ですか?


11

これは私の講師が授業で私に言ったことです:

4 * 4の行列のみを考慮します。これらは、オブジェクト(またはこれらの操作の任意の組み合わせ)を回転、スケーリング、または移動するために使用されます。マトリックスは、仮想カメラモデルの実装でも使用されます。ベクトル変換と点変換の違いがわからない場合は、調べてください。

答えが見つからないようで、この質問のためだけにこのWebサイトのアカウントを作成しました。


1
他のすべての答えを補完するには他の人が既にあなたがチェックすることができます他の場所の長さで、この質問に答え理由: scratchapixel.com/lessons/...を
user18490

回答:


9

これが簡単な答えです。

4Dでは、4x4行列を乗算できるように、ベクトルは(x、y、z、0)として表され、点は(x、y、z、1)として表されます。

4x4行列の4行目は行列の平行移動を表すため、上記の表現では、点は平行移動の影響を受けますが、ベクトルは影響を受けません。

ただし、ベクトルとポイントの両方は、回転、スケーリングなどの影響を受けます。

警告:

ベクトルに特定の特性があることを期待する場合は、より深い議論が必要です。たとえば、三角形の頂点を変換するのと同じ行列で三角形の法線を変換する場合、それは実際にはその三角形の法線ベクトルではなくなります。これは、法線ベクトルが、計算元の頂点に対して一種の逆の関係を持っているためです。


法線はベクトルではないため、機能しません。ただし、このコンセプトの入門についてはよくわかりません。
MBレイノルズ

@MBReynolds数学的な意味では、法線は点または方向のようなベクトルです。ここでの問題は、サーフェスのポイントに適用してそれらを変換する変換が、法線には適用されないことです。
nbro 2017年

2
表面法線は、ベクトルではなくバイベクトルです。2つのベクトルの外積によって法線を見つけることができ、結果はバイベクトルになります。Vogensenごとに参照:gist.github.com/pervognsen/c6b1d19754c2e8a38b10886b63d7bf2d
MBレイノルズ

4

4×44×4

4×4

ここで問題は、3D座標系から4D座標系にどのように渡すかです。答えは「同質座標」です。

4×4

4×44×43D

どうやってやるの?

方向ベクトルと位置ベクトルを区別します。名前が示すように、方向ベクトルには、方向ベクトルがあります。長さも重要ですが、位置は関係ないため、翻訳の影響は受けません。位置ベクトル(または単に「ポイント」)は移動または移動できます。それらは通常、起点を基準にして、つまり起点から点自体へのベクトルとして表されます。

0401

3Dv=(v1v2v3)v=(v1v2v30)u=(u1u2u3)u=(u1u2u31)

3D4th10


(wx,wy,wz,w)w0(x,y,z)w=1w4D行列の乗算も使用します。
Ilmari Karonen

2

ベクトルと点の定義を調べると、ベクトルは次のようになります。

速度など、量と方向によって完全に指定された量。 http://www.thefreedictionary.com/vector

そしてポイントは:

場所以外のプロパティを持たない無次元の幾何学的オブジェクト。 http://www.thefreedictionary.com/point

つまり、ベクトルはスケールのある方向であり、ポイントは位置です。

したがって、ベクトルを変換する場合は、それを回転およびスケーリングするだけです。ポイントを使用すると、ポイントも変換されます(ポイントの回転とスケーリングは、ポイント自体は回転できない単なる位置であるため、原点の周りにあります)。

ほとんどの場合、ベクトルとポイントは同じコンテナ、つまり4つのコンポーネントを持つベクトルに入れられます。唯一の違いはwコンポーネントです。wコンポーネントが0の場合、それは方向です。1の場合、ベクトルはポイントです。

この理由は、マトリックス自体にあります。これは、4x4行列で4つのコンポーネントを含むベクトルを乗算する方法を利用します。それがどのように機能するかわからない場合は、簡単なグーグルをお勧めします。

[rot+scalerot+scalerot+scaletranslationrot+scalerot+scalerot+scaletranslationrot+scalerot+scalerot+scaletranslation0001]

ご覧のとおり、最後のコンポーネントが0の場合、乗算は0であるため、結果は0になり、変換は行われません。

これにより、多角形のオブジェクトを含むコンピュータグラフィックスで簡単に使用できます。位置だけでなく法線も変換するための同じ変換行列があります。法線のwコンポーネントは0に設定されており、位置のwコンポーネントは1であるため、法線は回転するだけでなく、スケーリングも行われるため、変なものにつながる可能性があり、ほとんどの場合、法線は後で正規化されます。奇妙なもののため、実際には位置と回転に同じ行列を使用することをお勧めします!@JarkkoLのコメントを参照してください。)位置が変換されます(および原点を中心に回転およびスケーリングされます)。

私が間違いを犯さなかったことを願っています:P、そしてこれはあなたを助けました!


2
法線は、位置と同じ変換行列では変換されません。3x3サブマトリックスの転置の逆数を計算して、不均一なスケーリングやスキューを伴う変換の法線を適切に変換する必要があります。
JarkkoL 2016年

@JarkkoLええ、それは本当です、あなたはそれで正しいです。同じマトリックスを使用しないのが最善ですが、実装によっては行われます。ほとんどの場合、人々は法線のゆがみをそれほど気にしません。これは、不均一なスケーリングまたはスケーリングをまったく使用しないためです。位置と法線の変換に関するその部分は、1つのコンテナを使用することが有用であるということに関するものでした。
bram0101 2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.