学习内容
- 变换矩阵
- WEBGL的变换矩阵
变换矩阵
平移矩阵
⎣⎡x′y′z′1⎦⎤=⎣⎡100001000011TxTyTz1⎦⎤✖⎣⎡xyz1⎦⎤
旋转矩阵 (绕z轴旋转)
旋转后的等式:
x′=xcosB−ysinB
x′=xsinB+ycosB
推导公式:A:原始角,旋转B角度后的坐标:
y′=sin(A+B)∗l
x′=cos(A+B)∗l
利用 三角函数和角公式: sin(A+B)=sinA*cosB + cosA * sinB, sin(A-B)=sinA*cosB - cosA * sinB 。就可以得到上面旋转后的等式。
⎣⎡x′y′z′1⎦⎤=⎣⎡cosBsinB00−sinBcosB0000110001⎦⎤✖⎣⎡xyz1⎦⎤
缩放矩阵
假设三个方向上的缩放因子分别为Sx,Sy,Sz,那边相关缩放等式:
x′=Sx∗x
y′=Sy∗y
z′=Sz∗z
⎣⎡x′y′z′1⎦⎤=⎣⎡Sx0000Sy0000Sz00001⎦⎤✖⎣⎡xyz1⎦⎤
WEBGL的变换矩阵
平移矩阵
var translationMatrix = [
1, 0, 0, 0,
0, 1, 0, 0,
0, 0, 1, 0,
x, y, z, 1
];
缩放矩阵
var scaleMatrix = [
w, 0, 0, 0,
0, h, 0, 0,
0, 0, d, 0,
0, 0, 0, 1
];
旋转矩阵
var rotateZMatrix = [
cos(a), -sin(a), 0, 0,
sin(a), cos(a), 0, 0,
0, 0, 1, 0,
0, 0, 0, 1
];