使用矩阵进行变换
WebGL 中的矩阵是列主序的。
平移变换
1 | const vShaderSource = ` |
WebGL 中的矩阵是列主序的。
1 | const vShaderSource = ` |
使用库函数简化数学计算
1 | const vShaderSource = ` |
将 WebGL 坐标系转为极坐标,然后通过角度计算得出旋转后的左标位置。
旋转矩阵:
$$
\begin{bmatrix}
x’ \
y’ \
z’ \
1 \
\end{bmatrix} =
\begin{bmatrix}
\cos \beta & -\sin \beta & 0 & 0 \
\sin \beta & \cos \beta & 0 & 0 \
0 & 0 & 1 & 0 \
0 & 0 & 0 & 1 \
\end{bmatrix} ×
\begin{bmatrix}
x \
y \
z \
1 \
\end{bmatrix}
$$
使用u_SinBCosB存放SinB与CosB。
1 | /** |
与在普通的坐标系中一样,只需在需要位移的坐标位置加入相应的矢量即可。(x1, y1, z1, w1) + (x2, y2, z2, w2) -> (x1 + x2, y1 + y2, z1 + z2, w1 + w2)
平移矩阵:
$$
\begin{bmatrix}
x’ \
y’ \
z’ \
1
\end{bmatrix} =
\begin{bmatrix}
1 & 0 & 0 & Tx \
0 & 1 & 0 & Ty \
0 & 0 & 1 & Tz \
0 & 0 & 0 & 1 \
\end{bmatrix} ×
\begin{bmatrix}
x \
y \
z \
1 \
\end{bmatrix}
$$
1 | // position = P + ▲P |
gl.drawArrays(),装配图形。使用varying标识符
1 | const vShaderSource = ` |