2010-12-02 4 views
1

J'essaie d'émuler Vector3.TransformNormal sans la bibliothèque DirectX.Comment émuler Vector3.TransformNormal

Quelqu'un peut-il expliquer comment cette fonction fonctionne, pour me permettre de recréer la fonction? Jusqu'à présent, je connais les entrées et j'ai vu la description de ce qu'il fait, mais je ne connais pas les calculs.

public static Vector3 TransformNormal(
    Vector3 source, 
    Matrix sourceMatrix 
) 
+0

Est-ce quelqu'un avec le DirectX SDK capable de réflecteur la fonction? – Chris

+0

Ceci est l'algèbre linéaire assez standard .. Mroe info peut être trouvé ici: http://www.facstaff.bucknell.edu/mastascu/elessonsHTML/Circuit/MatVecMultiply.htm – Goz

Répondre

3

Cela devrait le faire (n'a pas testé)

public Vector3 TransformNormal(Vector3 normal, Matrix matrix) 
{  
    return new Vector3 
    { 
     X = normal.X * matrix.M11 + normal.Y * matrix.M21 + normal.Z * matrix.M31, 
     Y = normal.X * matrix.M12 + normal.Y * matrix.M22 + normal.Z * matrix.M32, 
     Z = normal.X * matrix.M13 + normal.Y * matrix.M23 + normal.Z * matrix.M33 
    }; 
} 
Questions connexes