提交 9fd09725 编写于 作者: M Mr.doob

Merge pull request #5506 from s9k/orbit-controls-angle-outside

OrbitControls: Added access to angle values from the outside
...@@ -100,6 +100,8 @@ THREE.OrbitControls = function ( object, domElement ) { ...@@ -100,6 +100,8 @@ THREE.OrbitControls = function ( object, domElement ) {
var dollyEnd = new THREE.Vector2(); var dollyEnd = new THREE.Vector2();
var dollyDelta = new THREE.Vector2(); var dollyDelta = new THREE.Vector2();
var theta;
var phi;
var phiDelta = 0; var phiDelta = 0;
var thetaDelta = 0; var thetaDelta = 0;
var scale = 1; var scale = 1;
...@@ -160,7 +162,7 @@ THREE.OrbitControls = function ( object, domElement ) { ...@@ -160,7 +162,7 @@ THREE.OrbitControls = function ( object, domElement ) {
// get X column of matrix // get X column of matrix
panOffset.set( te[ 0 ], te[ 1 ], te[ 2 ] ); panOffset.set( te[ 0 ], te[ 1 ], te[ 2 ] );
panOffset.multiplyScalar( - distance ); panOffset.multiplyScalar( - distance );
pan.add( panOffset ); pan.add( panOffset );
}; };
...@@ -173,11 +175,11 @@ THREE.OrbitControls = function ( object, domElement ) { ...@@ -173,11 +175,11 @@ THREE.OrbitControls = function ( object, domElement ) {
// get Y column of matrix // get Y column of matrix
panOffset.set( te[ 4 ], te[ 5 ], te[ 6 ] ); panOffset.set( te[ 4 ], te[ 5 ], te[ 6 ] );
panOffset.multiplyScalar( distance ); panOffset.multiplyScalar( distance );
pan.add( panOffset ); pan.add( panOffset );
}; };
// pass in x,y of change desired in pixel space, // pass in x,y of change desired in pixel space,
// right and down are positive // right and down are positive
this.pan = function ( deltaX, deltaY ) { this.pan = function ( deltaX, deltaY ) {
...@@ -248,11 +250,11 @@ THREE.OrbitControls = function ( object, domElement ) { ...@@ -248,11 +250,11 @@ THREE.OrbitControls = function ( object, domElement ) {
// angle from z-axis around y-axis // angle from z-axis around y-axis
var theta = Math.atan2( offset.x, offset.z ); theta = Math.atan2( offset.x, offset.z );
// angle from y-axis // angle from y-axis
var phi = Math.atan2( Math.sqrt( offset.x * offset.x + offset.z * offset.z ), offset.y ); phi = Math.atan2( Math.sqrt( offset.x * offset.x + offset.z * offset.z ), offset.y );
if ( this.autoRotate ) { if ( this.autoRotate ) {
...@@ -276,7 +278,7 @@ THREE.OrbitControls = function ( object, domElement ) { ...@@ -276,7 +278,7 @@ THREE.OrbitControls = function ( object, domElement ) {
// restrict radius to be between desired limits // restrict radius to be between desired limits
radius = Math.max( this.minDistance, Math.min( this.maxDistance, radius ) ); radius = Math.max( this.minDistance, Math.min( this.maxDistance, radius ) );
// move target to panned location // move target to panned location
this.target.add( pan ); this.target.add( pan );
...@@ -324,6 +326,18 @@ THREE.OrbitControls = function ( object, domElement ) { ...@@ -324,6 +326,18 @@ THREE.OrbitControls = function ( object, domElement ) {
}; };
this.getPolarAngle = function () {
return phi;
};
this.getAzimuthalAngle = function () {
return theta
};
function getAutoRotationAngle() { function getAutoRotationAngle() {
return 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed; return 2 * Math.PI / 60 / 60 * scope.autoRotateSpeed;
...@@ -418,7 +432,7 @@ THREE.OrbitControls = function ( object, domElement ) { ...@@ -418,7 +432,7 @@ THREE.OrbitControls = function ( object, domElement ) {
panEnd.set( event.clientX, event.clientY ); panEnd.set( event.clientX, event.clientY );
panDelta.subVectors( panEnd, panStart ); panDelta.subVectors( panEnd, panStart );
scope.pan( panDelta.x, panDelta.y ); scope.pan( panDelta.x, panDelta.y );
panStart.copy( panEnd ); panStart.copy( panEnd );
...@@ -478,7 +492,7 @@ THREE.OrbitControls = function ( object, domElement ) { ...@@ -478,7 +492,7 @@ THREE.OrbitControls = function ( object, domElement ) {
function onKeyDown( event ) { function onKeyDown( event ) {
if ( scope.enabled === false || scope.noKeys === true || scope.noPan === true ) return; if ( scope.enabled === false || scope.noKeys === true || scope.noPan === true ) return;
switch ( event.keyCode ) { switch ( event.keyCode ) {
case scope.keys.UP: case scope.keys.UP:
...@@ -614,7 +628,7 @@ THREE.OrbitControls = function ( object, domElement ) { ...@@ -614,7 +628,7 @@ THREE.OrbitControls = function ( object, domElement ) {
panEnd.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY ); panEnd.set( event.touches[ 0 ].pageX, event.touches[ 0 ].pageY );
panDelta.subVectors( panEnd, panStart ); panDelta.subVectors( panEnd, panStart );
scope.pan( panDelta.x, panDelta.y ); scope.pan( panDelta.x, panDelta.y );
panStart.copy( panEnd ); panStart.copy( panEnd );
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册