在3D程序中,一个必备的过程就是将物体从世界坐标系转换到相机坐标系
我们先看看一般的情况:
物体的位置为(world_x , world_y , world_z) ,相机的位置为(cam_x , cam_y , cam_z)
假设此时相机的角度为((0 , 0 , 0)
当我们把相机移动到(0 , 0 , 0),物体也要进行相应的移动才能保持物体和相机相对位置不变
则物体被移动到(world_x - cam_x , world_y - cam_y , world_z - cam_z)
也就是说,世界坐标到相机坐标的第一步就是对所有的世界坐标进行平移,平移量为相机位置的世界坐标的负值,即(-cam_x , -cam_y , -cam_z)
平移矩阵:
现在我们讨论更一般的情况:
相机的观察角度为(angle_x , angle_y , angle_z)
变换方法:首先使用平移矩阵对世界坐标进行变换,然后使用相机朝向的逆进行旋转操作
旋转方式有多种,如:xyz , xzy,yxz,yzx,zxy,zyx
这里我们使用yxz的顺序
因此,需要三次旋转:第一次绕Y轴,然后绕X轴