3つの3Dポイント(A、B、C)が与えられた場合、法線ベクトルをどのように計算しますか? 3つの点が平面を定義し、この平面に垂直なベクトルが必要です。
これを示すサンプルC#コードを入手できますか?
ポイントの順番によります。ポイントが方向から見て反時計回りの順序で指定されている場合opposing法線であれば、計算は簡単です。
Dir = (B - A) x (C - A)
Norm = Dir / len(Dir)
ここで、x
は外積です。
OpenTKまたはXNAを使用している(Vector3クラスにアクセスできる)場合、それは単に次の問題です。
class Triangle {
Vector3 a, b, c;
public Vector3 Normal {
get {
var dir = Vector3.Cross(b - a, c - a);
var norm = Vector3.Normalize(dir);
return norm;
}
}
}
ベクトルBAとBCのクロス積を形成します。 http://mathworld.wolfram.com/CrossProduct.html を参照してください。