cleaner way of doing perspective->orthographic

This commit is contained in:
zz85
2011-10-23 01:24:27 +08:00
parent cfc77699d3
commit 435cdb9ff7
+13 -16
View File
@@ -53,30 +53,27 @@ THREE.CombinedCamera.prototype.toPerspective = function () {
THREE.CombinedCamera.prototype.toOrthographic = function () {
// Orthographic from Perspective
var fov = this.fov / this.zoom;
var fov = this.fov;
var aspect = this.cameraP.aspect;
var near = this.cameraP.near;
var far = this.cameraP.far;
var nearHalfHeight = Math.tan( fov / 2 ) * near;
var nearPlaneHeight = 2 * nearHalfHeight;
var nearPlaneWidth = nearPlaneHeight * aspect;
var nearHalfWidth = nearPlaneWidth / 2;
// Just pretend we want the mid plane of the viewing frustum
var hyperfocus = ( near + far ) / 2;
var farHalfHeight = Math.tan( fov / 2 ) * far;
var farPlaneHeight = 2 * farHalfHeight;
var farPlaneWidth = farPlaneHeight * aspect;
var farHalfWidth = farPlaneWidth / 2;
var halfHeight = Math.tan( fov / 2 ) * hyperfocus;
var planeHeight = 2 * halfHeight;
var planeWidth = planeHeight * aspect;
var halfWidth = planeWidth / 2;
var averageHalfWidth = Math.abs(nearHalfWidth + farHalfWidth) / 2;
var averageHalfHeight = Math.abs(nearHalfHeight + farHalfHeight) / 2;
halfHeight /= this.zoom;
halfWidth /= this.zoom;
this.cameraO.left = -averageHalfWidth;
this.cameraO.right = averageHalfWidth;
this.cameraO.top = averageHalfHeight;
this.cameraO.bottom = -averageHalfHeight;
this.cameraO.left = -halfWidth;
this.cameraO.right = halfWidth;
this.cameraO.top = halfHeight;
this.cameraO.bottom = -halfHeight;
// this.cameraO.left = -farHalfWidth;
// this.cameraO.right = farHalfWidth;