我试图在没有DirectX库的情况下模拟Vector3.TransformNormal。
有人能够解释这个功能是如何工作的,让我重新创建这个功能吗?
到目前为止,我知道输入并看到了它的作用,但我不知道计算。
public static Vector3 TransformNormal(
Vector3 source,
Matrix sourceMatrix
)
答案 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
};
}