);
xaxis = normal(cross(Up, zaxis))
yaxis = cross(zaxis, xaxis)
xaxis.x
xaxis.y
xaxis.z
-dot(xaxis, eye)
这个函数作用世界坐标转换,怎么转呢?就是以eye 坐标为中心,xaxis为X轴,yaxis 为Y轴 zaxis 为Z轴转换的。世界坐标都要经过这样转换,转换到摄像机相对坐标,然后投影。
D3DXMatrixPerspectiveFov
D3DXMatrixOrthoLH(左手坐标系正交投影)
看看算法:
D3DXMATRIX * D3DXMatrixPerspectiveFov
);
xScale
0
0
0
where:
yScale = cot(fovY/2)
xScale = yScale / aspect ratio
可以看出透视投影,3维点x坐标跟FOV(广角)和投射屏幕纵横比(或者胶卷纵横比)有关系,而y坐标只跟广角有关联。
D3DXMATRIX * D3DXMatrixOrthoLH(
);
2/w
0
0
0
正交透视X,Y只跟最后投影屏幕的宽高相关联