Verilen üç 3D noktaları (A, B, & C) nasıl normal bir vektör hesaplarım? Üç nokta bir düzlem tanımlar ve vektörü bu düzleme dik olarak istiyorum.3 pts verildiğinde normal vektörü nasıl hesap ederim?
Bu gösteren örnek C# kodu alabilir miyim?
Verilen üç 3D noktaları (A, B, & C) nasıl normal bir vektör hesaplarım? Üç nokta bir düzlem tanımlar ve vektörü bu düzleme dik olarak istiyorum.3 pts verildiğinde normal vektörü nasıl hesap ederim?
Bu gösteren örnek C# kodu alabilir miyim?
Bu puan sırasına bağlıdır. Normal karşıt bir yönde görüldüğü gibi noktaları saat yönünün tersine bir sıra ile belirtilirse, o zaman hesaplamak için basit:
x
çapraz üründür Dir = (B - A) x (C - A)
Norm = Dir/len(Dir)
.
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;
}
}
}
form vektörleri BA ve BC'nin çapraz ürün. Bkz http://mathworld.wolfram.com/CrossProduct.html.
Eğer yüzey üzerindeki herhangi iki paralel olmayan vektörlerin cross product hesaplamak gerekir. Üç noktanız olduğundan, bunu AB ve AC vektörlerinin çapraz ürününü alarak anlayabilirsiniz. Bunu yaptığınızda
, sen Vikipedi oldukça geniş açıklaması var olan bir surface normal, hesaplama ediyoruz.
Matematik programlama yapmak için bir yeri vardır:
sen (vector3 sınıfı erişimi) OpenTK veya XNA kullanıyorsanız, o zaman basitçe meselesi. Özellikle bu matematik, eğer 3D bir şey yapıyorsanız. – tgamblin
Evet, matematik ancak bu yerine programlama belirli birinin bir vektör matematik belirli bir sorudur, programlama ile ne çok şey vardır. Ben bir Wikipedian değilim, bu yüzden bunu kapatmak için oy vermeyeceğim, sadece bunu işaretliyorum. programlama çeşit yaparken Bu tür bir matematik sık gelir, ancak bu soru olursa olsun kendisine hiçbir kod yönü olduğunu – Esko
Bu doğru. Bu tamamen matematiksel bir cevap ile tamamen bir matematik sorusudur. Bu mathoverflow.com veya google.com aittir. –