GroundElevationVolume#maximumGroundElevationAngle
and minimum GroundElevationVolume#minimumGroundElevationAngle ground elevation angles, respectively. The ground elevation angles
are measured between the local horizontal at a point on the ellipsoid and a vector from that ellipsoid point to the origin, the
apex of the volume, which is usually the position of the sensor or platform it is attached to.
Because these angles are measured at the ground, the volume and footprint change with the origin's altitude, and no surface
extends past the ellipsoid horizon. The volume shape is also defined by minimum GroundElevationVolume#minimumClockAngle and
maximum GroundElevationVolume#maximumClockAngle clock angles and minimum GroundElevationVolume#minimumRadius and maximum
GroundElevationVolume#maximumRadius radii.
Unlike sensor types such as ConicSensor, whose orientation is set freely, this volume always points at nadir
and its heading is defined by the motion of its origin. For that reason it is referred to as a volume rather than a sensor.
The volume is positioned using GroundElevationVolume#modelMatrix, and its principal direction is along the
positive z-axis, which always points at nadir regardless of the model matrix's rotation. The x-axis is the model
matrix's x-axis projected onto the local horizontal plane. Clock angles are angles around the z-axis, rotating x into y.
Approximations and assumptions:
- Nadir points opposite the geodetic surface normal at the surface point beneath the origin, not toward the ellipsoid center.
- The volume is modeled as the region between two circular cones about nadir: an inner cone derived from the maximum ground elevation angle and an outer cone derived from the minimum.
- Each cone half-angle is derived from a ground elevation angle with the law of sines:
sin(halfAngle) = (Re / Rs) cos(elevationAngle), wherehalfAngleis measured from nadir,Reis the distance from the ellipsoid center to the surface point beneath the origin, andRsis the distance from the ellipsoid center to the origin. This is exact for a spherical body, but on an ellipsoid the error in ground elevation angle at the footprint boundary grows toward the horizon, where the ground's distance from the ellipsoid center differs most fromRe. The error also grows with the origin's altitude, since the footprint of a higher volume spans more of the ellipsoid. - Ground elevation angles are measured against the ellipsoid surface; terrain is ignored.
| Name | Type | Description | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
options |
Object |
optional
Object with the following properties:
|
Example:
// A ground elevation volume on a satellite, with the zero clock angle pointing north
const volume = scene.primitives.add(new IonSdkSensors.GroundElevationVolume({
modelMatrix : Cesium.Transforms.northEastDownToFixedFrame(Cesium.Cartesian3.fromDegrees(-123.0744619, 44.0503706, 700000.0)),
minimumGroundElevationAngle : Cesium.Math.toRadians(10.0),
maximumGroundElevationAngle : Cesium.Math.toRadians(70.0)
}));
Experimental
This feature is not final and is subject to change without Cesium's standard deprecation policy.
See:
Members
static IonSdkSensors.GroundElevationVolume.ellipsoidSurfaceIn3DSupported
packages/ion-sdk-sensors/Source/Scene/GroundElevationVolume.js 796
static IonSdkSensors.GroundElevationVolume.viewshedSupported
packages/ion-sdk-sensors/Source/Scene/GroundElevationVolume.js 805
classificationType : ClassificationType
packages/ion-sdk-sensors/Source/Scene/GroundElevationVolume.js 423
-
Default Value:
ClassificationType.BOTH
debugShowBoundingVolume : Boolean
packages/ion-sdk-sensors/Source/Scene/GroundElevationVolume.js 471
When true, draws the bounding sphere for each DrawCommand in the volume.
-
Default Value:
false
debugShowCrossingPoints : Boolean
packages/ion-sdk-sensors/Source/Scene/GroundElevationVolume.js 447
When true, draws the points where the volume boundary crosses off of and onto the ellipsoid.
-
Default Value:
false
When true, draws the proxy geometry used for shading the dome surfaces of the volume boundary.
-
Default Value:
false
When true, draws a bounding volume around the light source for the shadow map used for environment intersections.
Also, the contents of the shadow map are drawn to a viewport quad.
-
Default Value:
false
domeSurfaceMaterial : Material
packages/ion-sdk-sensors/Source/Scene/GroundElevationVolume.js 249
Material objects or a custom material, scripted with
Fabric.
When undefined, GroundElevationVolume#lateralSurfaceMaterial is used.
-
Default Value:
undefined
See:
readonly ellipsoid : Ellipsoid
packages/ion-sdk-sensors/Source/Scene/GroundElevationVolume.js 536
-
Default Value:
Ellipsoid.WGS84
ellipsoidSurfaceMaterial : Material
packages/ion-sdk-sensors/Source/Scene/GroundElevationVolume.js 223
Material objects or a custom material, scripted with
Fabric.
When undefined, GroundElevationVolume#lateralSurfaceMaterial is used.
-
Default Value:
undefined
See:
true, a volume intersecting the environment, e.g. terrain or models, will discard the portion of the volume that is occluded.
-
Default Value:
false
environmentIntersectionColor : Color
packages/ion-sdk-sensors/Source/Scene/GroundElevationVolume.js 353
-
Default Value:
Color.WHITE
environmentIntersectionWidth : Number
packages/ion-sdk-sensors/Source/Scene/GroundElevationVolume.js 363
-
Default Value:
5.0
environmentOcclusionMaterial : Material
packages/ion-sdk-sensors/Source/Scene/GroundElevationVolume.js 332
-
Default Value:
Material.ColorType
-
Default Value:
undefined
See:
intersectionColor : Color
packages/ion-sdk-sensors/Source/Scene/GroundElevationVolume.js 286
-
Default Value:
Color.WHITE
See:
-
Default Value:
5.0
See:
lateralSurfaceMaterial : Material
packages/ion-sdk-sensors/Source/Scene/GroundElevationVolume.js 194
Material objects or a custom material, scripted with
Fabric.
-
Default Value:
Material.ColorType
See:
-
Default Value:
CesiumMath.TWO_PI
maximumGroundElevationAngle : Number
packages/ion-sdk-sensors/Source/Scene/GroundElevationVolume.js 166
-
Default Value:
CesiumMath.PI_OVER_TWO
GroundElevationVolume#radius and takes precedence over it when both are provided.
-
Default Value:
Number.POSITIVE_INFINITY
-
Default Value:
0.0
minimumGroundElevationAngle : Number
packages/ion-sdk-sensors/Source/Scene/GroundElevationVolume.js 157
-
Default Value:
0.0
-
Default Value:
0.0
modelMatrix : Matrix4
packages/ion-sdk-sensors/Source/Scene/GroundElevationVolume.js 131
-
Default Value:
Matrix4.IDENTITY
GroundElevationVolume#maximumRadius, which takes precedence over this property when both are provided.
-
Default Value:
Number.POSITIVE_INFINITY
true, the volume is shown.
-
Default Value:
true
true, the dome surfaces are shown.
These surfaces are only shown in 3D (see Scene#mode).
-
Default Value:
true
See:
true, the ellipsoid/volume intersection surfaces are shown.
-
Default Value:
true
See:
showEnvironmentIntersection : Boolean
packages/ion-sdk-sensors/Source/Scene/GroundElevationVolume.js 344
true, a line is shown where the volume intersects the environment, e.g. terrain or models.
-
Default Value:
false
showEnvironmentOcclusion : Boolean
packages/ion-sdk-sensors/Source/Scene/GroundElevationVolume.js 324
true, the portion of the volume occluded by the environment will be drawn with GroundElevationVolume#environmentOcclusionMaterial.
GroundElevationVolume#environmentConstraint must also be true.
-
Default Value:
false
true, a polyline is shown where the volume intersects the ellipsoid.
-
Default Value:
true
See:
true, the volume's lateral surfaces, i.e., the outer sides of the volume, are shown.
These surfaces are only shown in 3D (see Scene#mode).
-
Default Value:
true
See:
true, a volume intersecting the ellipsoid is drawn through the ellipsoid and potentially out
to the other side.
-
Default Value:
false
Scene#mode.)
-
Default Value:
false
Experimental
This feature is not final and is subject to change without Cesium's standard deprecation policy.
See:
viewshedOccludedColor : Color
packages/ion-sdk-sensors/Source/Scene/GroundElevationVolume.js 402
-
Default Value:
Color.RED
Experimental
This feature is not final and is subject to change without Cesium's standard deprecation policy.
-
Default Value:
2048
Experimental
This feature is not final and is subject to change without Cesium's standard deprecation policy.
viewshedVisibleColor : Color
packages/ion-sdk-sensors/Source/Scene/GroundElevationVolume.js 390
-
Default Value:
Color.LIME
Experimental
This feature is not final and is subject to change without Cesium's standard deprecation policy.
Methods
Once an object is destroyed, it should not be used; calling any function other than
isDestroyed will result in a DeveloperError exception. Therefore,
assign the return value (undefined) to the object as done in the example.
Returns:
Throws:
-
DeveloperError : This object was destroyed, i.e., destroy() was called.
Example:
volume = volume && volume.destroy();
If this object was destroyed, it should not be used; calling any function other than
isDestroyed will result in a DeveloperError exception.
Returns:
true if this object was destroyed; otherwise, false.
Viewer or CesiumWidget render the scene to
get the draw commands needed to render this primitive.
Do not call this function directly. This is documented just to list the exceptions that may be propagated when the scene is rendered:
Throws:
-
DeveloperError : this.minimumGroundElevationAngle and this.maximumGroundElevationAngle must be between zero and 90 degrees, with the minimum less than or equal to the maximum.
-
DeveloperError : this.radius must be greater than or equal to zero.
-
DeveloperError : this.lateralSurfaceMaterial must be defined.
