欢迎光临散文网 会员登陆 & 注册

通过矩阵变换点得到其在另一个坐标系的位置

2023-05-05 11:12 作者:莫末陌寞  | 我要投稿

这里只是提供简单的实现,不解释任何数学原理。

对于一个点(x, y, z),可以用 [x , y ,z ,1 ] 这个矩阵表示。

通过点构造的矩阵,发生了什么样的变换按顺序(下文)进行运算即可,下面提供了我对引用的“数学篇”的变换的代码实现,自由测试喵。

本文大片引用“Unity Shader入门精要”数学篇,作者放出了数学篇的PDF。

对Shader有兴趣可以购买图书。

对于一个点(x, y, z),可以用 [x , y ,z ,1 ] 这个矩阵表示。

Unity的Transform是一个记录变换的组件,我们可以用矩阵操作复现他。

首先要说明,矩阵是不兼容交换律的,即A*B ≠ B*A,不清楚的应该先去学习一下矩阵的基础。

A*B的运算中,A提供新矩阵的行,B提供新矩阵的列,交换之后可能都无法运算。

Transform的运算顺序如下,他是从右向左运算的。

旋转矩阵是由xyz三个轴上的旋转构成的:

这里的5个M矩阵(M旋转包含了xyz),如果其一没有发生,可以不运算。

即坐标系相对于原坐标系只发生了xy旋转,Mx * My * 原点矩阵,即可。


通过矩阵变换点得到其在另一个坐标系的位置的评论 (共 条)

分享到微博请遵守国家法律