由于工作的原因,很少有时间来写博客了。这段时间,由于项目版本完结,有几天的休息时间,同时自己也在学习关于DX11,所以将过程中遇到的一些心得记录下来。
在复习3D空间的基础时,发现看到旋转矩阵,一时想不起如何推导出来的。所以,又尝试推导了一下。
如:初始变换坐标P0(x0, y0, z0), 变换后的坐标P1(x1, y1, z1)。为了方便推导,我们架设是绕着Z轴进行旋转的,并使用极坐标来表示:
x0 = RcosA, x1 = RcosC = Rcos(A + B) = R(cosAcosB - sinAsinB) = RcosA cosB - RsinA sinB = x0 cosB - y0 sinB,
y0 = RsinA, y1 = RsinC = Rsin(A + B) = R(sinAcosB + cosAsinB) = RsinA cosB + RcosA sinB = y0 cosB + x0 sinB,
即:
x1 = x0 cosB - y0 sinB,
y1 = x0 sinB + y0 cosB,
z1 = z0,
那么绕着Z轴的旋转矩阵就可以得到:
cosB -sinB 0
sinB cosB 0
0 0 1
绕着X轴和Y轴的,可以类似推导。关于绕任意轴旋转的推导更麻烦一点,这里不再推导。