当利用笛卡尔坐标系下的旋转矩阵对opengl坐标进行旋转时
需要注意opengl的坐标系与笛卡尔坐标系的区别
在opengl里的点需要经过矩阵
[0 0 1]
[0 1 0]
[1 0 0]
的变换,才是标准的笛卡尔坐标;
即在笛卡尔中的(a,b,c)对应opengl的(c,b,a);
若要在opengl对一个点进行旋转
例如,opengl中一个点A(ex,ey,ez),要绕y轴旋转某个角度 Angle
而绕y轴旋转的笛卡尔旋转矩阵为
把点A映射到笛卡尔坐标系中A'(ez,ex,ey);
再与旋转矩阵相乘
exr=ex*sin(Angle)+ez*cos(Angle);//乘以y轴旋转矩阵
ezr=ex*cos(Angle)-ez*sin(Angle);
eyr=ey;
得到的B'(ez,ex,ey);
再映射回opengl坐标系,
得到B(ex,ey,ez);