public class DuvenhageAlgorithm extends Object implements IntersectionAlgorithm
The algorithm is described in the 2009 paper: Using An Implicit Min/Max KD-Tree for Doing Efficient Terrain Line of Sight Calculations.
| Constructor and Description |
|---|
DuvenhageAlgorithm(TileUpdater updater,
int maxCachedTiles,
boolean flatBody)
Simple constructor.
|
| Modifier and Type | Method and Description |
|---|---|
double |
getElevation(double latitude,
double longitude)
Get elevation at a given ground point.
|
NormalizedGeodeticPoint |
intersection(ExtendedEllipsoid ellipsoid,
Vector3D position,
Vector3D los)
Compute intersection of line with Digital Elevation Model.
|
NormalizedGeodeticPoint |
refineIntersection(ExtendedEllipsoid ellipsoid,
Vector3D position,
Vector3D los,
NormalizedGeodeticPoint closeGuess)
Refine intersection of line with Digital Elevation Model.
|
public DuvenhageAlgorithm(TileUpdater updater, int maxCachedTiles, boolean flatBody)
updater - updater used to load Digital Elevation Model tilesmaxCachedTiles - maximum number of tiles stored in the cacheflatBody - if true, the body is considered flat, i.e. lines computed
from entry/exit points in the DEM are considered to be straight lines also
in geodetic coordinates. The sagitta resulting from real ellipsoid curvature
is therefore not corrected in this case. As this computation is not
costly (a few percents overhead), it is highly recommended to set this parameter
to false. This flag is mainly intended for comparison purposes with other systems.public NormalizedGeodeticPoint intersection(ExtendedEllipsoid ellipsoid, Vector3D position, Vector3D los) throws RuggedException
intersection in interface IntersectionAlgorithmellipsoid - reference ellipsoidposition - pixel position in ellipsoid framelos - pixel line-of-sight in ellipsoid frameRuggedException - if intersection cannot be foundpublic NormalizedGeodeticPoint refineIntersection(ExtendedEllipsoid ellipsoid, Vector3D position, Vector3D los, NormalizedGeodeticPoint closeGuess) throws RuggedException
This method is used to refine an intersection when a close guess is
already known. The intersection is typically looked for by a direct
cell intersection in the tile which already
contains the close guess, or any similar very fast algorithm.
refineIntersection in interface IntersectionAlgorithmellipsoid - reference ellipsoidposition - pixel position in ellipsoid framelos - pixel line-of-sight in ellipsoid framecloseGuess - guess close to the real intersectionRuggedException - if intersection cannot be foundpublic double getElevation(double latitude,
double longitude)
throws RuggedException
getElevation in interface IntersectionAlgorithmlatitude - ground point latitudelongitude - ground point longitudeRuggedException - if Digital Elevation Model does not cover pointCopyright © 2014–2016 CS Syst?mes d'Information. All rights reserved.