2、计算机图形学——3D变换

1.1、3D点和向量的齐次坐标表示

根据1中的第二部分齐次坐标可知,3D点的齐次坐标可表示为

1.2、3D仿射变换的一般形式

根据1中的第三部分变换的组合可知,3D点的仿射变换的齐次坐标方程可表示为

1.3、3D缩放

根据1中的2D线性变换中的缩放变换可类推3D的缩放变换的齐次坐标为

1.4、3D平移

根据1中的2D变换中的平移变换可类推3D的平移变换的齐次坐标为

1.4、3D旋转变换

3D旋转变换与2D旋转略有不同,2D旋转只是绕着原点进行逆时针旋转,而3D空间中有三个轴,所以,三维空间中的物体可以分别绕三个轴进行旋转,所以,相应的旋转矩阵就有三个,假定坐标轴如下

1.4.1、绕x轴进行旋转

因为是绕X轴旋转,所以,x轴的坐标不发生变化,变化的只有y和z的坐标,所以,相应的旋转矩阵可以写成如下形式

根据1中2D变换中旋转矩阵的推导,可知a=cosθ,c=sinθ,b=-sinθ,d=cosθ,所以,最终的旋转矩阵可以写成

同理,绕z轴进行旋转的矩阵可写成如下形式

最终结果也是类似的

1.4.2、绕y轴进行旋转

绕y轴旋转与绕x和z轴旋转略有不同,当绕y轴旋转时,x轴与z轴的负方向垂直

所以,符号会发生变化,1中的左上角定点坐标由(0,-1)变为(-sinθ,-cosθ)。右下角定点(1,0)的坐标分别变为(cosθ,-sinθ)

将四个坐标带入下面的方程

最终得到

解上面两个方程,得到a=cosθ,b=sinθ,c=-sinθ,d=cosθ。所以就得到下面的旋转矩阵

三维空间中的任意一个旋转都可以分解为绕X,Y,Z轴的旋转

这样做需要做三个矩阵的乘法,运算量较大,而罗德里格斯旋转矩阵解决了这个问题

1.5、罗德里格斯旋转方程

空间中任一向量v,沿任一旋转轴k,旋转任一角度θ后得到的向量v'可以表示为

推导过程如下

如上图所示,假设旋转轴k是个单位向量,因为向量v可以分解为平行于k的向量投影和垂直于k的向量投影

所以可得

其中v||为

分子分母同时乘以|k|,可得

因为k是单位向量,所以最终结果就是

所以垂直分量为

向量w可以表示为

此时旋转后的向量的垂直分量可以表示为

所以,最终旋转后的向量可以表示为

1.6、罗德里格斯旋转矩阵

根据1.5中的结果可继续进行数学变换

根据向量叉积的性质

所以,旋转后的向量可以继续写成

因为两个向量a,b的叉积可以写成a的叉积矩阵*b

所以,旋转后的向量可以写成

所以罗德里格斯旋转矩阵就是

参考

GAMES101-现代计算机图形学入门-闫令琪_哔哩哔哩_bilibili

欢迎大家评论交流,作者水平有限,如有错误,欢迎指出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值