C# 将二维仿射变换矩阵转换为三维仿射变换矩阵

C# 将二维仿射变换矩阵转换为三维仿射变换矩阵,c#,matrix,xna,transformation,linear-algebra,C#,Matrix,Xna,Transformation,Linear Algebra,我的代码中有一个bug,我想知道这是否是错误的 我的代码中有一个二维视图矩阵,但要在屏幕上显示我的世界,我需要将二维视图矩阵转换为三维视图矩阵。这是我正在使用的过程: | a b c | | a b c 0 | | d e f | => | d e f 0 | | g h i | | g h i 0 | | 0 0 0 1 | 当我对2D矩阵使用单位矩阵时,它会起作用,但一旦我对2D矩阵应用任何变换,所有正在绘制的对象都会消失 对于使

我的代码中有一个bug,我想知道这是否是错误的

我的代码中有一个二维视图矩阵,但要在屏幕上显示我的世界,我需要将二维视图矩阵转换为三维视图矩阵。这是我正在使用的过程:

| a b c |      | a b c 0 |
| d e f |  =>  | d e f 0 |
| g h i |      | g h i 0 |
               | 0 0 0 1 |
当我对2D矩阵使用单位矩阵时,它会起作用,但一旦我对2D矩阵应用任何变换,所有正在绘制的对象都会消失

对于使用3D绘制二维图形,我使用以下投影矩阵:

_basicEffect.Projection = Matrix.CreateOrthographicOffCenter(0, graphicsDevice.Viewport.Width, graphicsDevice.Viewport.Height, 0, 0, 1);

将2D矩阵转换为3D的正确方法是什么?

仿射变换使用转换矩阵的额外行/列进行转换。因此,我认为您要做的是向下/向右移动最后一行/列,然后为新轴插入标识变换

| a b c |      | a b 0 c |
| d e f |  =>  | d e 0 f |
| g h i |      | 0 0 1 0 |
               | g h 0 i |
我不确定,但至少试一下