c# - 将 2D 仿射变换矩阵转换为 3D 仿射变换矩阵

标签 c# matrix xna transformation linear-algebra

我的代码某处有错误,想知道这是否不正确。

我的代码中有一个 2D View 矩阵,但要在屏幕上显示我的世界,我需要将 2D View 矩阵转换为 3D View 矩阵。这是我正在使用的过程:

| 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 在 2D 中绘图,我使用了这个投影矩阵:

_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 |

我不确定,但至少试一试。

关于c# - 将 2D 仿射变换矩阵转换为 3D 仿射变换矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5508424/

相关文章:

c# - RTS 游戏设计和代码组织

c# - 在 C# 中将字符串转换为颜色

c++ - 矩阵矩形部分转置Cuda

r - 密集与稀疏矩阵代数的速度

c# - 返回独立于 If-Else 顺序的 If-Else 结果?

c# - C#中的随机日期

algorithm - 总和小于 N 的最少子集

c# - 如何克隆 FileStream 类型?

c# - 将 DropDownList 与 DataRow 数组绑定(bind)

c# - DLL插件调试不起作用