如何模拟Vector3.TransformNormal

时间:2010-12-02 15:43:58

标签: c# 3d directx

我试图在没有DirectX库的情况下模拟Vector3.TransformNormal。

有人能够解释这个功能是如何工作的,让我重新创建这个功能吗?

到目前为止,我知道输入并看到了它的作用,但我不知道计算。

public static Vector3 TransformNormal(
    Vector3 source,
    Matrix sourceMatrix
)

1 个答案:

答案 0 :(得分:3)

这应该做(不测试)

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
    };
}