mirror of
https://github.com/wahyd4/three.js.git
synced 2026-08-14 15:35:57 +10:00
cleaner way of doing perspective->orthographic
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user