TerrainAzimuthElevationMaskCreateDelayedMask Method (TerrainProvider, Double, Double, Cartographic, Int32, Double, Double) |
Creates an azimuth-elevation mask which can compute its values dynamically from the specified terrain provider.
The values will be computed and stored when requested rather than computed all at once initially. This can
increase performance and decrease memory requirements in cases where a large number of masks must be computed.
Namespace:
AGI.Foundation.Terrain
Assembly:
AGI.Foundation.TerrainAnalysis (in AGI.Foundation.TerrainAnalysis.dll) Version: 24.3.420.0 (24.3.420.0)
Syntax public static DelayedTerrainAzimuthElevationMask CreateDelayedMask(
TerrainProvider provider,
double minimumTerrainHeight,
double maximumTerrainHeight,
Cartographic observerPosition,
int numberOfAzimuthSteps,
double stepSize,
double maximumSearchAngle
)
Public Shared Function CreateDelayedMask (
provider As TerrainProvider,
minimumTerrainHeight As Double,
maximumTerrainHeight As Double,
observerPosition As Cartographic,
numberOfAzimuthSteps As Integer,
stepSize As Double,
maximumSearchAngle As Double
) As DelayedTerrainAzimuthElevationMask
public:
static DelayedTerrainAzimuthElevationMask^ CreateDelayedMask(
TerrainProvider^ provider,
double minimumTerrainHeight,
double maximumTerrainHeight,
Cartographic observerPosition,
int numberOfAzimuthSteps,
double stepSize,
double maximumSearchAngle
)
static member CreateDelayedMask :
provider : TerrainProvider *
minimumTerrainHeight : float *
maximumTerrainHeight : float *
observerPosition : Cartographic *
numberOfAzimuthSteps : int *
stepSize : float *
maximumSearchAngle : float -> DelayedTerrainAzimuthElevationMask
Parameters
- provider
- Type: AGI.Foundation.TerrainTerrainProvider
The source of terrain from which to compute the mask. - minimumTerrainHeight
- Type: SystemDouble
The minimum height in meters that can be returned by the
TerrainProvider's GetHeightRelativeToShape(Double, Double) method.
Setting this value lower than necessary will not affect the results, but it will decrease
performance. Setting it too high can cause incorrect results.
- maximumTerrainHeight
- Type: SystemDouble
The maximum height in meters that can be returned by the
TerrainProvider's GetHeightRelativeToShape(Double, Double) method.
Setting this value higher than necessary will not affect the results, but it will decrease
performance. Setting it too low can cause incorrect results.
- observerPosition
- Type: AGI.Foundation.CoordinatesCartographic
The planetodetic position of the stationary observer around which the mask is computed. - numberOfAzimuthSteps
- Type: SystemInt32
The number of azimuth steps to use to compute the mask.
This will define the resolution of the mask around the horizon. - stepSize
- Type: SystemDouble
The size of the step along each azimuth ray, in radians. - maximumSearchAngle
- Type: SystemDouble
The maximum angle, in radians, to move along each azimuth ray in constructing the mask.
Return Value
Type:
DelayedTerrainAzimuthElevationMaskThe azimuth-elevation mask.
Exceptions Remarks
This method works by casting a ray out from the observerPosition in a number of directions to
determine the minimum elevation angle that is visible above the terrain in that direction. More specifically,
the various distances at which the minimum elevation angle increases in that direction are determined.
Selecting values for numberOfAzimuthSteps, stepSize, and
maximumSearchAngle requires making a trade-off between the accuracy of the result and the time
to compute it. The ideal values to use depend on the specifics of the problem being solved and the
nature of the terrain data employed.
numberOfAzimuthSteps is the number of rays to cast out from the observerPosition
in computing the mask. A value of 360 casts a ray for each degree, and is a reasonable value to use. Notice that
when a value of 360 is used, the count of elevation masks will be 361 because it contains the elevation for both
0 and 360. The elevation data for 360 copies data from 0 with the exception of the azimuth for efficiency.
stepSize is the distance between steps along the ray, in radians. A reasonable value for this
parameter would sample approximately three times per terrain grid cell, or 1/3 of the smallest of
DeltaLongitude and DeltaLatitude.
maximumSearchAngle is the maximum angle, in radians, to move along each ray. In other words,
this parameter indicates the stopping point for sampling along the ray. A reasonable value will take into account
the difference between the maximum and minimum heights of terrain provided by provider and
potentially how close together the minimum and maximum heights are located.
Examples The following example shows one way this value might be chosen:
double approximateHeightOfMtEverest = 8850.0;
double semimajorAxisLength = WorldGeodeticSystem1984.Shape.SemimajorAxisLength;
double maximumSearchAngle = Math.Acos(semimajorAxisLength / (semimajorAxisLength + approximateHeightOfMtEverest));
See Also