頂点のセットから平面の法線ベクトルを取得するにはどうすればよいですか?


9

私はHLSL / C ++の小さなプロジェクトでグラフィック作業をやりくりしており、頂点ポリゴンから対面ベクトルを取得する方法がわかりません。数式が見つからないようです。

位置はP1、P2、P3です。

たとえば、P1.x、P1.y、P1.zのVertexPointクラスと呼びましょう。



正確を期すために、画像と質問のタイトルのラベルは、「正規化されたベクトル」ではなく「通常のベクトル」にしてください。もちろん、法線ベクトル自体は正規化できます(長さは1です)が、必ずしもそうである必要はなく、クロス積はデフォルトで正規化ベクトルを生成しません。
jjmontes

1
グーグルの「法線ベクトルの三角形」は、Googleにとっては明らかなことですが、膨大な数のヒットをもたらします。123456、...
imallett

... 78910111213、...
imallett

2
... 14151617 ...すべてのこれらの1(と確かに無数の他)は、問題を-と答えるいくつかは、実際にも、所望のC ++ / HLSLコードを持っています。真剣に。この質問は非常に暴力を受けており、「重複」と呼ぶのは不適切です。「計算式を見つけられないようです」私の言い分—あなたは試しませんでした。
イマレット2017年

回答:


28

V1 = P2-P1およびV2 = P3-P1の2つのベクトルを計算することで法線を簡単に見つけることができ、次にクロス積N = V1 x V2を見つけることができます。次に、Nを正規化します。頂点の順序(時計回りまたは反時計回り)に応じて、法線が正面または背面を向くようになります。

また、別のポイントを選択する必要がある場合は、3つの3つのポイントが揃っていないことを確認する必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.