3D数学
在看《3D数学基础:图形与游戏开发》,其中有一些不明白的地方.书上有推导根据旋转矩阵构造欧拉角,但到了c++实现时,书上给出了“从物体-世界坐标系变换矩阵到欧拉角”,“从世界-物体坐标系变换矩阵到欧拉角”的代码,我就晕了,大家伙给个思路 3D 数学 游戏开发
[解决办法]
单纯表示旋转信息:3*3矩阵,欧拉角是三个角度值,四元数是四个数值。
3D变换采用齐次坐标系,所有的变换:平移,缩放,旋转都可以用矩形相乘统一表示。
一个点是P41(4*1行向量),矩阵是Mat44,则变换后的顶点是矩阵右乘向量Mat44 * P41。
4*4矩阵中:字母3*3部分为旋转矩阵,缩放由a,e,l决定,平移由tx,ty,tz决定。
a b c 0
d e f 0
g h l 0
tx ty tz 1
世界-物体坐标系相互转化只需要一个4*4矩阵,(书中是4*3矩阵忽略了最后一列)。而欧拉角影响的是3*3部分的旋转矩阵。
[解决办法]
我都不用欧拉角。你可以完全不依赖欧拉角构建整个系统。
[解决办法]