Bladeren bron

Angles should be specified in radians

Fredrik Bondza 10 jaren geleden
bovenliggende
commit
0c6cbb8235
2 gewijzigde bestanden met toevoegingen van 28 en 9 verwijderingen
  1. 25 1
      src/Cameras/babylon.followCamera.js
  2. 3 8
      src/Cameras/babylon.followCamera.ts

+ 25 - 1
src/Cameras/babylon.followCamera.js

@@ -59,5 +59,29 @@ var BABYLON;
         return FollowCamera;
     })(BABYLON.TargetCamera);
     BABYLON.FollowCamera = FollowCamera;
+    var ArcFollowCamera = (function (_super) {
+        __extends(ArcFollowCamera, _super);
+        function ArcFollowCamera(name, alpha, beta, radius, target, scene) {
+            _super.call(this, name, BABYLON.Vector3.Zero(), scene);
+            this.alpha = alpha;
+            this.beta = beta;
+            this.radius = radius;
+            this.target = target;
+            this._cartesianCoordinates = BABYLON.Vector3.Zero();
+            this.follow();
+        }
+        ArcFollowCamera.prototype.follow = function () {
+            this._cartesianCoordinates.x = this.radius * Math.cos(this.alpha) * Math.cos(this.beta);
+            this._cartesianCoordinates.y = this.radius * Math.sin(this.beta);
+            this._cartesianCoordinates.z = this.radius * Math.sin(this.alpha) * Math.cos(this.beta);
+            this.position = this.target.position.add(this._cartesianCoordinates);
+            this.setTarget(this.target.position);
+        };
+        ArcFollowCamera.prototype._checkInputs = function () {
+            _super.prototype._checkInputs.call(this);
+            this.follow();
+        };
+        return ArcFollowCamera;
+    })(BABYLON.TargetCamera);
+    BABYLON.ArcFollowCamera = ArcFollowCamera;
 })(BABYLON || (BABYLON = {}));
-//# sourceMappingURL=babylon.followCamera.js.map

+ 3 - 8
src/Cameras/babylon.followCamera.ts

@@ -63,7 +63,6 @@
 
     export class ArcFollowCamera extends TargetCamera {
 
-        private _radPerDeg:number = Math.PI / 180;
         private _cartesianCoordinates:Vector3 = Vector3.Zero();
 
         constructor(name:string, public alpha:number, public beta:number, public radius:number, public target:AbstractMesh, scene:Scene) {
@@ -71,14 +70,10 @@
             this.follow();
         }
 
-        private _degToRad(deg) {
-            return deg * this._radPerDeg;
-        }
-
         private follow():void {
-            this._cartesianCoordinates.x = this.radius * Math.cos(this._degToRad(this.alpha)) * Math.cos(this._degToRad(this.beta));
-            this._cartesianCoordinates.y = this.radius * Math.sin(this._degToRad(this.beta));
-            this._cartesianCoordinates.z = this.radius * Math.sin(this._degToRad(this.alpha)) * Math.cos(this._degToRad(this.beta));
+            this._cartesianCoordinates.x = this.radius * Math.cos(this.alpha) * Math.cos(this.beta);
+            this._cartesianCoordinates.y = this.radius * Math.sin(this.beta);
+            this._cartesianCoordinates.z = this.radius * Math.sin(this.alpha) * Math.cos(this.beta);
 
             this.position = this.target.position.add(this._cartesianCoordinates);
             this.setTarget(this.target.position);