正交投影
正交投影是將世界空間的物體,映射到一個單位立方體上,然后縮放為單位立方體
// 平移
(left + right)/2 得到平移后的中心點位置,其他面類似
A =
1 0 0 -(left + right)/2
0 1 0 -(top + bottom)/2
0 0 1 -(far + near)/2
0 0 0 1
// 縮放
將平移后的立方體縮放為單位立方體(-1,1),2/r-l,使用右手坐標系,z方向為負,-2(f-n)
B =
2/(right - left) 0 0 0
0 2/(top - bottom) 0 0
0 0 -2(far - near) 0 0
0 0 0 1
// 相乘
C = B * A
// 最后結果
C =
2/(right - left) 0 0 0
0 2/(top - bottom) 0 0
0 0 2/(near-far) 0
(left+right)/(left-right) (bottom+top)/(bottom-top) (near+far)/(near-far) 1
var m4 = {
orthographic: function(left, right, bottom, top, near, far) {
return [
2 / (right - left), 0, 0, 0,
0, 2 / (top - bottom), 0, 0,
0, 0, 2 / (near - far), 0,
(left + right) / (left - right),
(bottom + top) / (bottom - top),
(near + far) / (near - far),
1,
];
}