/*global define*/ define([ '../Core/Cartesian2', '../Core/Cartesian3', '../Core/Cartesian4', '../Core/Cartographic', '../Core/defaultValue', '../Core/defined', '../Core/defineProperties', '../Core/DeveloperError', '../Core/EasingFunction', '../Core/Ellipsoid', '../Core/IntersectionTests', '../Core/Math', '../Core/Matrix3', '../Core/Matrix4', '../Core/Quaternion', '../Core/Ray', '../Core/Rectangle', '../Core/Transforms', './CameraFlightPath', './PerspectiveFrustum', './SceneMode' ], function( Cartesian2, Cartesian3, Cartesian4, Cartographic, defaultValue, defined, defineProperties, DeveloperError, EasingFunction, Ellipsoid, IntersectionTests, CesiumMath, Matrix3, Matrix4, Quaternion, Ray, Rectangle, Transforms, CameraFlightPath, PerspectiveFrustum, SceneMode) { "use strict"; /** * The camera is defined by a position, orientation, and view frustum. *

* The orientation forms an orthonormal basis with a view, up and right = view x up unit vectors. *

* The viewing frustum is defined by 6 planes. * Each plane is represented by a {@link Cartesian4} object, where the x, y, and z components * define the unit vector normal to the plane, and the w component is the distance of the * plane from the origin/camera position. * * @alias Camera * * @constructor * * @demo {@link http://cesiumjs.org/Cesium/Apps/Sandcastle/index.html?src=Camera.html|Cesium Sandcastle Camera Demo} * @demo {@link http://cesiumjs.org/Cesium/Apps/Sandcastle/index.html?src=Camera%20Tutorial.html">Sandcastle Example from the