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