当Matrix.Invert(mymatrix)给出“非数字”矩阵时

时间:2014-01-17 14:59:32

标签: c# matrix xna

我像这样计算变换矩阵:

Matrix blockTransform =
    Matrix.CreateTranslation(new Vector3(-obj.Origin, 0.0f)) *
    Matrix.CreateScale(obj.Scale.X, obj.Scale.Y, 0.0f) *
    Matrix.CreateRotationZ(obj.Rotation) *
    Matrix.CreateTranslation(new Vector3(obj.Position, 0.0f));

然后,如果我算出这个:

Matrix inverted = Matrix.Invert(blockTransform);

我去看它的内容,通过在控制台上写它,或者在附近设置一个断点,我看到mymatrix的每个元素都是“不是数字”。

为什么呢?这是因为blockTransform不可逆吗?我该如何解决这个问题?

编辑:实际上,blockTransform的行列式为0。

1 个答案:

答案 0 :(得分:0)

找到解决方案:我必须将1.0f作为Z比例因子而不是0.0f