摄像机由位置,方向和视锥台定义。
方向与视图形成正交基础,上和右=视图x上单位矢量。
视锥由6个平面定义。 每个平面都由
new Camera(scene)
方向与视图形成正交基础,上和右=视图x上单位矢量。
视锥由6个平面定义。 每个平面都由
Cartesian4
对象表示,其中x,y和z分量定义垂直于该平面的单位矢量,而w分量是该平面与原点/相机位置的距离。
Parameters:
Example
// Create a camera looking down the negative z-axis, positioned at the origin,
// with a field of view of 60 degrees, and 1:1 aspect ratio.
var camera = new bmgl.Camera(scene);
camera.position = new bmgl.Cartesian3();
camera.direction = bmgl.Cartesian3.negate(bmgl.Cartesian3.UNIT_Z, new bmgl.Cartesian3());
camera.up = bmgl.Cartesian3.clone(bmgl.Cartesian3.UNIT_Y);
camera.frustum.fov = bmgl.Math.PI_OVER_THREE;
camera.frustum.near = 1.0;
camera.frustum.far = 2.0;
Members
(static) DEFAULT_OFFSET : HeadingPitchRange
当相机飞到包含边界球体的位置时使用的默认方向/间距/范围。
(static) DEFAULT_VIEW_FACTOR : Number
要乘以相机位置并在设置相机以查看矩形后将其添加回的标量。值为零表示相机将查看整个
Camera#DEFAULT_VIEW_RECTANGLE
,大于零的值将使其远离范围,小于零的值将使其靠近范围。
(static) DEFAULT_VIEW_RECTANGLE : Rectangle
创建时相机将查看的默认矩形。
(readonly) changed : Event
获取照相机更改
percentageChanged
时将引发的事件。
constrainedAxis : Cartesian3
如果设置,相机将无法在任何方向上旋转超过此轴。
-
Default Value:
undefined
defaultLookAmount : Number
当没有为Look方法提供参数时旋转相机的默认值。
-
Default Value:
Math.PI / 60.0
defaultMoveAmount : Number
移动方法未提供参数时移动相机的默认值。
-
Default Value:
100000.0;
defaultRotateAmount : Number
当没有为Rotate方法提供参数时旋转相机的默认量。
-
Default Value:
Math.PI / 3600.0
defaultZoomAmount : Number
当没有为缩放方法提供参数时移动相机的默认量。
-
Default Value:
100000.0;
direction : Cartesian3
相机的视图方向。
(readonly) directionWC : Cartesian3
获取摄像机在世界坐标中的视图方向。
frustum : Frustum
视野中的空间区域。
-
Default Value:
PerspectiveFrustum()
See:
(readonly) heading : Number
获取以弧度表示的相机标题。
(readonly) inverseTransform : Matrix4
获取逆相机转换。
-
Default Value:
Matrix4.IDENTITY
(readonly) inverseViewMatrix : Matrix4
获取逆视图矩阵。
See:
maximumZoomFactor : Number
乘以从表面缩小时用于确定在何处夹住相机位置的地图大小的系数。默认值为1.5。仅对二维有效,地图可旋转。
-
Default Value:
1.5
(readonly) moveEnd : Event
获取相机停止移动时将引发的事件。
(readonly) moveStart : Event
获取摄像机开始移动时将引发的事件。
percentageChanged : number
在
changed
事件发生之前,相机必须更改的数量。该值是[0,1]范围内的百分比。
-
Default Value:
0.5
(readonly) pitch : Number
获取以弧度表示的相机间距。
position : Cartesian3
相机的位置。
(readonly) positionCartographic : Cartographic
获取相机的
Cartographic
位置,经度和纬度以弧度表示,高度以米为单位。在二维和哥伦布视图中,当相机位于地图之外时,返回的经度和纬度可能超出有效经度和纬度的范围。
(readonly) positionWC : Cartesian3
获取摄像机在世界坐标中的位置。
right : Cartesian3
相机的正确方向。
(readonly) rightWC : Cartesian3
获取摄像机在世界坐标中的正确方向。
(readonly) roll : Number
使相机以弧度滚动。
(readonly) transform : Matrix4
获取相机的参考帧。这个转换的逆矩阵被附加到视图矩阵中。
-
Default Value:
Matrix4.IDENTITY
up : Cartesian3
相机的向上方向。
(readonly) upWC : Cartesian3
获取摄像机在世界坐标中的向上方向。
(readonly) viewMatrix : Matrix4
获取视图矩阵。
Methods
cameraToWorldCoordinates(cartesian, result) → {Cartesian4}
将相机参考帧中的向量或点转换为世界坐标。
Parameters:
将点从相机的参考帧转换为世界坐标。
Parameters:
将矢量从相机的参考帧转换为世界坐标。
Parameters:
如果正在进行,取消当前的相机飞行。相机留在当前位置。
计算椭圆体上的近似可见矩形。
Parameters:
返回从相机到边界球前面的距离。
Parameters:
将相机转到主视图。使用
Camera#.DEFAULT_VIEW_RECTANGLE
设置三维场景的默认视图。二维和哥伦布视图的主视图显示整个地图。
Parameters:
将相机从当前位置飞到新位置。
Parameters:
options
(Object)
Name | Description |
---|---|
options.destination
(Cartesian3 | Rectangle)
|
摄像机在WGS84(世界)坐标中的最终位置,或从俯视图可见的矩形。 |
options.orientation
Object
|
包含方向和向上属性或航向、纵摇和横摇属性的对象。默认情况下,该方向将指向三维中的帧中心,并在Columbus视图中指向负Z方向。在哥伦布视图中,向上方向将指向局部北三维方向和正Y方向。在无限滚动模式下,方向不用于二维。 |
options.duration
Number
|
以秒为单位的飞行时间。如果忽略,bigemap-gl将根据航班要行驶的距离计算理想持续时间。 |
options.complete
Camera~FlightCompleteCallback
|
飞行完成后执行的功能。 |
options.cancel
Camera~FlightCancelledCallback
|
航班取消时执行的功能。 |
options.endTransform
Matrix4
|
转换矩阵表示飞行完成后相机将处于的参考帧。 |
options.maximumHeight
Number
|
飞行高峰期的最大高度。 |
options.pitchAdjustHeight
Number
|
如果相机的飞行速度高于该值,请在飞行过程中调整俯仰以向下看,并将地球保持在视区中。 |
options.flyOverLongitude
Number
|
地球上两点之间总是有两种方式。这个选项强制相机选择战斗方向飞越经度。 |
options.flyOverLongitudeWeight
Number
|
只有在飞行长度不超过飞行长度的短距离乘以飞行长度重量时,才能飞越飞行长度指定的长度。 |
options.convert
Boolean
|
是否将目的地从世界坐标转换为场景坐标(仅在不使用3D时相关)。默认为true 。
|
options.easingFunction
(EasingFunction | EasingFunction~Callback)
|
控制在飞行期间如何插入时间。 |
Example
// 1. Fly to a position with a top-down view
viewer.camera.flyTo({
destination : bmgl.Cartesian3.fromDegrees(-117.16, 32.71, 15000.0)
});
// 2. Fly to a Rectangle with a top-down view
viewer.camera.flyTo({
destination : bmgl.Rectangle.fromDegrees(west, south, east, north)
});
// 3. Fly to a position with an orientation using unit vectors.
viewer.camera.flyTo({
destination : bmgl.Cartesian3.fromDegrees(-122.19, 46.25, 5000.0),
orientation : {
direction : new bmgl.Cartesian3(-0.04231243104240401, -0.20123236049443421, -0.97862924300734),
up : new bmgl.Cartesian3(-0.47934589305293746, -0.8553216253114552, 0.1966022179118339)
}
});
// 4. Fly to a position with an orientation using heading, pitch and roll.
viewer.camera.flyTo({
destination : bmgl.Cartesian3.fromDegrees(-122.19, 46.25, 5000.0),
orientation : {
heading : bmgl.Math.toRadians(175.0),
pitch : bmgl.Math.toRadians(-35.0),
roll : 0.0
}
});
Throws
-
DeveloperError : 如果给出方向或向上,则两者都是必需的。
将相机飞到当前视图包含提供的边界球体的位置。
偏移量是以边界球中心为中心的局部东北向上参考框中的航向/俯仰/范围。航向和俯仰角在本地东北向上参考框架中定义。航向是从Y轴到X轴的角度。螺距是从xy平面开始的旋转。正俯仰角在平面以下。负的螺距角在平面上方。范围是距中心的距离。如果范围为零,则计算范围以使整个边界球可见。
在二维和哥伦布视图中,必须有一个自上而下的视图。相机将放在目标上方向下看。高于目标的高度将是范围。航向将与当地北部对齐。
Parameters:
options
(Object)
Name | Description |
---|---|
options.duration
Number
|
以秒为单位的飞行时间。如果忽略,bigemap-gl将根据航班要行驶的距离计算理想持续时间。 |
options.offset
HeadingPitchRange
|
在以目标为中心的局部东北向上参考帧中距目标的偏移。 |
options.complete
Camera~FlightCompleteCallback
|
飞行完成后执行的功能。 |
options.cancel
Camera~FlightCancelledCallback
|
航班取消时执行的功能。 |
options.endTransform
Matrix4
|
转换矩阵表示飞行完成后相机将处于的参考帧。 |
options.maximumHeight
Number
|
飞行高峰期的最大高度。 |
options.pitchAdjustHeight
Number
|
如果相机的飞行速度高于该值,请在飞行过程中调整俯仰以向下看,并将地球保持在视区中。 |
options.flyOverLongitude
Number
|
地球上两点之间总是有两种方式。这个选项强制相机选择战斗方向飞越经度。 |
options.flyOverLongitudeWeight
Number
|
只有在飞行长度不超过飞行长度的短距离乘以飞行长度重量时,才能飞越飞行长度指定的长度。 |
options.easingFunction
(EasingFunction | EasingFunction~Callback)
|
控制在飞行期间如何插入时间。 |
获取相机位置的大小。在3D中,这是矢量大小。在二维和哥伦布视图中,这是到地图的距离。
从相机位置通过世界坐标中
windowPosition
处的像素创建光线。
Parameters:
返回以米为单位的像素大小。
Parameters:
drawingBufferWidth
(Number)
绘图缓冲区宽度。
drawingBufferHeight
(Number)
绘图缓冲区高度。
获取在椭球体或地图上查看矩形所需的相机位置
Parameters:
将相机的每个方向向量围绕
axis
旋转angle
Parameters:
angle
(Number)
以弧度表示的旋转角度。默认为defaultLookAmount
。
使用目标和偏移设置相机位置和方向。目标必须以世界坐标给出。偏移可以是笛卡尔坐标系,也可以是以目标为中心的东北向上局部参照系中的航向/俯仰/范围。如果偏移量是笛卡尔坐标系的,那么它是相对于由变换矩阵定义的参照系中心的偏移量。如果偏移量为航向/俯仰/范围,则航向和俯仰角在变换矩阵定义的参考框中定义。航向是从Y轴到X轴的角度。螺距是从xy平面开始的旋转。正俯仰角在平面以下。负的螺距角在平面上方。范围是距中心的距离。在2d中,必须有一个自顶向下的视图。相机将放在目标上方向下看。目标上方的高度将是偏移量的大小。航向将根据偏移量确定。如果无法从偏移量确定航向,则航向将为北。
Parameters:
Example
// 1. Using a cartesian offset
var center = bmgl.Cartesian3.fromDegrees(-98.0, 40.0);
viewer.camera.lookAt(center, new bmgl.Cartesian3(0.0, -4790000.0, 3930000.0));
// 2. Using a HeadingPitchRange offset
var center = bmgl.Cartesian3.fromDegrees(-72.0, 40.0);
var heading = bmgl.Math.toRadians(50.0);
var pitch = bmgl.Math.toRadians(-20.0);
var range = 5000.0;
viewer.camera.lookAt(center, new bmgl.HeadingPitchRange(heading, pitch, range));
Throws
-
DeveloperError : 变形时不支持LookAt。
使用目标和变换矩阵设置相机位置和方向。偏移量可以是笛卡尔或航向/俯仰/范围。如果偏移量是笛卡尔坐标系的,那么它是相对于由变换矩阵定义的参照系中心的偏移量。如果偏移量为航向/俯仰/范围,则航向和俯仰角在变换矩阵定义的参考框中定义。航向是从Y轴到X轴的角度。螺距是从xy平面开始的旋转。正俯仰角在平面以下。负的螺距角在平面上方。范围是距中心的距离。在2d中,必须有一个自顶向下的视图。相机将放置在参考框架的中心上方。目标上方的高度将是偏移量的大小。航向将根据偏移量确定。如果无法从偏移量确定航向,则航向将为北。
Parameters:
Example
// 1. Using a cartesian offset
var transform = bmgl.Transforms.eastNorthUpToFixedFrame(bmgl.Cartesian3.fromDegrees(-98.0, 40.0));
viewer.camera.lookAtTransform(transform, new bmgl.Cartesian3(0.0, -4790000.0, 3930000.0));
// 2. Using a HeadingPitchRange offset
var transform = bmgl.Transforms.eastNorthUpToFixedFrame(bmgl.Cartesian3.fromDegrees(-72.0, 40.0));
var heading = bmgl.Math.toRadians(50.0);
var pitch = bmgl.Math.toRadians(-20.0);
var range = 5000.0;
viewer.camera.lookAtTransform(transform, new bmgl.HeadingPitchRange(heading, pitch, range));
Throws
-
DeveloperError : 变形时不支持LookAtTransform。
如果不是在二维模式下,则沿其上方向向量的相反方向,以弧度围绕其右向量旋转相机。
Parameters:
amount
(Number)
以弧度表示的旋转量。默认为defaultLookAmount
。
See:
如果不是在二维模式下,则沿其右向量的相反方向,以弧度为单位,围绕其上方向向量旋转相机。
Parameters:
amount
(Number)
以弧度表示的旋转量。默认为defaultLookAmount
。
See:
如果不是在二维模式下,则沿其右向量的方向,以弧度为单位,围绕其上方向向量旋转相机。
Parameters:
amount
(Number)
以弧度表示的旋转量。默认为defaultLookAmount
。
See:
如果不是在二维模式下,则将相机绕其右向量以弧度的数量沿其上方向旋转。
Parameters:
amount
(Number)
以弧度表示的旋转量。默认为defaultLookAmount
。
See:
将相机位置沿
direction
转换amount
。
Parameters:
amount
(Number)
以米为单位的移动量。默认为defaultMoveAmount
。
See:
沿相机视图向量的相反方向,将相机的位置转换为
amount
。在二维模式下,这将缩小相机,而不是平移相机的位置。
Parameters:
amount
(Number)
以米为单位的移动量。默认为defaultMoveAmount
。
See:
沿相机上方向向量的相反方向,将相机的位置转换为
amount
。
Parameters:
amount
(Number)
以米为单位的移动量。默认为defaultMoveAmount
。
See:
沿相机的视图向量将相机的位置转换为
amount
。在二维模式下,这将放大相机,而不是平移相机的位置。
Parameters:
amount
(Number)
以米为单位的移动量。默认为defaultMoveAmount
。
See:
沿相机右向量的相反方向,将相机的位置平移
amount
。
Parameters:
amount
(Number)
以米为单位的移动量。默认为defaultMoveAmount
。
See:
沿相机的右向量将相机的位置转换为
amount
。
Parameters:
amount
(Number)
以米为单位的移动量。默认为defaultMoveAmount
。
See:
沿相机的上方向向量将相机的位置转换为
amount
。
Parameters:
amount
(Number)
以米为单位的移动量。默认为defaultMoveAmount
。
See:
选择椭球体或地图。
Parameters:
将相机绕
axis
旋转angle
。相机位置到相机参考帧中心的距离保持不变。
Parameters:
angle
(Number)
以弧度表示的旋转角度。默认为defaultRotateAmount
。
以向下的角度围绕相机参考帧的中心旋转相机。
Parameters:
angle
(Number)
以弧度表示的旋转角度。默认为defaultRotateAmount
。
以向左的角度围绕相机参考帧的中心旋转相机。
Parameters:
angle
(Number)
以弧度表示的旋转角度。默认为defaultRotateAmount
。
以向右的角度围绕相机参考帧的中心旋转相机。
Parameters:
angle
(Number)
以弧度表示的旋转角度。默认为defaultRotateAmount
。
以向上的角度围绕相机参考帧的中心旋转相机。
Parameters:
angle
(Number)
以弧度表示的旋转角度。默认为defaultRotateAmount
。
设置相机位置、方向和变换。
Parameters:
options
(Object)
Name | Description |
---|---|
options.destination
(Cartesian3 | Rectangle)
|
摄像机在WGS84(世界)坐标中的最终位置,或从俯视图可见的矩形。 |
options.orientation
Object
|
包含方向和向上属性或航向、纵摇和横摇属性的对象。默认情况下,该方向将指向三维中的帧中心,并在Columbus视图中指向负Z方向。在哥伦布视图中,向上方向将指向局部北三维方向和正Y方向。在无限滚动模式下,方向不用于二维。 |
options.endTransform
Matrix4
|
表示相机参考帧的变换矩阵。 |
options.convert
Boolean
|
是否将目的地从世界坐标转换为场景坐标(仅在不使用3D时相关)。默认为true 。
|
Example
// 1. Set position with a top-down view
viewer.camera.setView({
destination : bmgl.Cartesian3.fromDegrees(-117.16, 32.71, 15000.0)
});
// 2 Set view with heading, pitch and roll
viewer.camera.setView({
destination : cartesianPosition,
orientation: {
heading : bmgl.Math.toRadians(90.0), // east, default value is 0.0 (north)
pitch : bmgl.Math.toRadians(-90), // default value (looking down)
roll : 0.0 // default value
}
});
// 3. Change heading, pitch and roll with the camera position remaining the same.
viewer.camera.setView({
orientation: {
heading : bmgl.Math.toRadians(90.0), // east, default value is 0.0 (north)
pitch : bmgl.Math.toRadians(-90), // default value (looking down)
roll : 0.0 // default value
}
});
// 4. View rectangle with a top-down view
viewer.camera.setView({
destination : bmgl.Rectangle.fromDegrees(west, south, east, north)
});
// 5. Set position with an orientation using unit vectors.
viewer.camera.setView({
destination : bmgl.Cartesian3.fromDegrees(-122.19, 46.25, 5000.0),
orientation : {
direction : new bmgl.Cartesian3(-0.04231243104240401, -0.20123236049443421, -0.97862924300734),
up : new bmgl.Cartesian3(-0.47934589305293746, -0.8553216253114552, 0.1966022179118339)
}
});
将截锥/投影切换为正交。此函数在二维中是不可操作的,它始终是正交的。
将截锥/投影切换到透视。此函数在二维中是禁止运算的,它必须始终是正交的。
逆时针旋转相机,以一定的弧度围绕其方向向量旋转。
Parameters:
amount
(Number)
以弧度表示的旋转量。默认为defaultLookAmount
。
See:
将相机沿其方向向量顺时针旋转一定数量,以弧度为单位。
Parameters:
amount
(Number)
以弧度表示的旋转量。默认为defaultLookAmount
。
See:
设置相机,使当前视图包含提供的边界球体。
偏移量是以边界球中心为中心的局部东北向上参考框中的航向/俯仰/范围。航向和俯仰角在本地东北向上参考框架中定义。航向是从Y轴到X轴的角度。螺距是从xy平面开始的旋转。正俯仰角在平面以下。负的螺距角在平面上方。范围是距中心的距离。如果范围为零,则计算范围以使整个边界球体可见。
在二维中,必须有一个俯视图。相机将放在目标上方向下看。高于目标的高度将是范围。航向将根据偏移量确定。如果无法从偏移量确定航向,则航向将为北。
Parameters:
Throws
-
DeveloperError : 变形时不支持ViewBoundingSphere。
将一个向量或点从世界坐标转换到相机的参考帧。
Parameters:
将点从世界坐标转换为相机的参考帧。
Parameters:
将矢量从世界坐标转换为相机的参考帧。
Parameters:
沿相机的视图向量缩放
amount
。
Parameters:
amount
(Number)
要移动的数量。默认为defaultZoomAmount
。
See:
沿相机视图向量的相反方向缩放
amount
。
Parameters:
amount
(Number)
要移动的数量。默认为defaultZoomAmount
。
See:
Type Definitions
FlightCancelledCallback()
当航班取消时执行的一种功能。
一种在飞行结束时执行的功能。