如何解决XNA / FNA中2D相机的建筑变换矩阵的乘法顺序
我正在阅读有关XNA中的2D摄像头的信息,并遇到了用于创建转换矩阵的功能。
public Matrix get_transformation(GraphicsDevice graphicsDevice)
{
_transform = // Thanks to o KB o for this solution
Matrix.CreateTranslation(new Vector3(-_pos.X,-_pos.Y,0)) *
Matrix.CreateRotationZ(Rotation) *
Matrix.CreateScale(new Vector3(Zoom,Zoom,1)) *
Matrix.CreateTranslation(new Vector3(ViewportWidth * 0.5f,ViewportHeight * 0.5f,0));
return _transform;
}
我似乎无法理解为什么矩阵从左到右相乘,实际上实际上不应该从右到左相乘(右是要应用的第一个变换)?我似乎无法掌握其实际工作原理。任何见解都将真正有帮助。
谢谢
解决方法
XNA矩阵是行专业的:
这意味着向量是行,而不是列,因此乘法顺序是从左到右。在您的示例代码中,将按照以下顺序应用变换:首先旋转,然后缩放,然后平移。还应考虑到行专业矩阵只是列专业矩阵的转置,因此,可以使用通常使用“列专业”约定从教科书中了解的所有数学,只需对矩阵进行转置。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。