diff --git a/src/alternativa/engine3d/core/Camera3D.as b/src/alternativa/engine3d/core/Camera3D.as index 49d6d07..5a3593d 100644 --- a/src/alternativa/engine3d/core/Camera3D.as +++ b/src/alternativa/engine3d/core/Camera3D.as @@ -407,6 +407,29 @@ public class Camera3D extends Object3D { occluders.length = 0; context3D = null; } + + /** + * Setup Camera3D position using x, y, z coordinates + */ + + public function setPosition(x:Number, y:Number, z:Number):void{ + this.x = x; + this.y = y; + this.z = z; + } + + /** + * Camera3D lookAt method + */ + public function lookAt(x:Number, y:Number, z:Number):void{ + var deltaX:Number = x - this.x; + var deltaY:Number = y - this.y; + var deltaZ:Number = z - this.z; + var rotX = Math.atan2(deltaZ, Math.sqrt(deltaX * deltaX + deltaY * deltaY)); + rotationX = rotX - 0.5 * Math.PI; + rotationY = 0; + rotationZ = - Math.atan2(deltaX,deltaY); + } /** * @private diff --git a/src/alternativa/engine3d/utils/Object3DUtils.as b/src/alternativa/engine3d/utils/Object3DUtils.as index 1f5917c..417c905 100644 --- a/src/alternativa/engine3d/utils/Object3DUtils.as +++ b/src/alternativa/engine3d/utils/Object3DUtils.as @@ -22,6 +22,20 @@ package alternativa.engine3d.utils { private static const toRootTransform:Transform3D = new Transform3D(); private static const fromRootTransform:Transform3D = new Transform3D(); + + /** + * @public + * Convert Degress to Radians and Radians to Degrees + */ + + public static function toRadians(degrees:Number):Number{ + return degrees * Math.PI / 180; + } + + public static function toDegrees(radians:Number):Number{ + return radians * 180 / Math.PI; + } + /** * @private