define([ '../Core/BoundingSphere', '../Core/Cartesian2', '../Core/Cartesian3', '../Core/Cartesian4', '../Core/Cartographic', '../Core/defaultValue', '../Core/defined', '../Core/defineProperties', '../Core/DeveloperError', '../Core/EasingFunction', '../Core/Ellipsoid', '../Core/EllipsoidGeodesic', '../Core/Event', '../Core/HeadingPitchRange', '../Core/HeadingPitchRoll', '../Core/Intersect', '../Core/IntersectionTests', '../Core/Math', '../Core/Matrix3', '../Core/Matrix4', '../Core/OrthographicFrustum', '../Core/OrthographicOffCenterFrustum', '../Core/PerspectiveFrustum', '../Core/Quaternion', '../Core/Ray', '../Core/Rectangle', '../Core/Transforms', './CameraFlightPath', './MapMode2D', './SceneMode' ], function( BoundingSphere, Cartesian2, Cartesian3, Cartesian4, Cartographic, defaultValue, defined, defineProperties, DeveloperError, EasingFunction, Ellipsoid, EllipsoidGeodesic, Event, HeadingPitchRange, HeadingPitchRoll, Intersect, IntersectionTests, CesiumMath, Matrix3, Matrix4, OrthographicFrustum, OrthographicOffCenterFrustum, PerspectiveFrustum, Quaternion, Ray, Rectangle, Transforms, CameraFlightPath, MapMode2D, 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 * * @param {Scene} scene The scene. * * @demo {@link https://cesiumjs.org/Cesium/Apps/Sandcastle/index.html?src=Camera.html|Cesium Sandcastle Camera Demo} * @demo {@link https://cesiumjs.org/Cesium/Apps/Sandcastle/index.html?src=Camera%20Tutorial.html">Sandcastle Example from the