最近项目中有个需求,需要将三维模型旋转,然后渲染成2维图片,原来的坐标保持在相对位置不变,这就是三维坐标旋转转换问题;旋转后的图像如下,XY平面顺时针旋转45度,YZ平面顺时针旋转45度。
我的坐标系已图片中心为原点,向左为X正轴,向下为Y正轴。现在假如原二维图的点(200,100),在经过旋转后的点会在哪呢:
首先我们明确:
旋转XY平面会影响渲染完成后的X,Y坐标。
旋转YZ平面只会影响渲染完成后的Y坐标。
那么我们先计算旋转XY平面后的坐标,现在我们旋转了45度:
任意点(x,y),绕一个坐标原点旋转a角度后的新的坐标设为(x0, y0),有公式:
x0= (x )*cos(a) – (y – 0)*sin(a) ;
y0= (x)*sin(a) + (y )*cos(a) ;
此时已经计算出旋转XY平面后的坐标,然后我们再把YZ平面的旋转计算出。经过XY旋转后此时的y坐标已经变成y0,
y1=y0*cos(a);
所以 旋转后的最后坐标为(x0,y1);带入我们的(100,100)坐标,最后得出的坐标为(70.7,150);