我像这样计算变换矩阵:
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。
答案 0 :(得分:0)
找到解决方案:我必须将1.0f
作为Z比例因子而不是0.0f
。