c# - tres - Dados 3 puntos, ¿cómo calculo el vector normal?
vector normal calculo vectorial (3)
Dados tres puntos 3D (A, B y C), ¿cómo calculo el vector normal? Los tres puntos definen un plano y quiero el vector perpendicular a este plano.
¿Puedo obtener un código C # de muestra que demuestre esto?
Debe calcular el http://mathworld.wolfram.com/CrossProduct.html de dos vectores no paralelos en la superficie. Como tiene tres puntos, puede resolver esto tomando el producto cruzado de, por ejemplo, los vectores AB y AC.
Cuando haces esto, estás calculando una superficie normal , de la que Wikipedia tiene una explicación bastante extensa.
Depende del orden de los puntos. Si los puntos se especifican en el sentido contrario a las agujas del reloj como se ve desde una dirección opuesta a la normal, entonces es fácil de calcular:
Dir = (B - A) x (C - A)
Norm = Dir / len(Dir)
donde x
es el producto cruzado.
Si está utilizando OpenTK o XNA (tiene acceso a la clase Vector3), entonces es simplemente una cuestión de:
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;
}
}
}
Formar el producto cruzado de los vectores BA y BC. Consulte http://mathworld.wolfram.com/CrossProduct.html .