AlgorithmId.java

  1. /* Copyright 2013-2022 CS GROUP
  2.  * Licensed to CS GROUP (CS) under one or more
  3.  * contributor license agreements.  See the NOTICE file distributed with
  4.  * this work for additional information regarding copyright ownership.
  5.  * CS licenses this file to You under the Apache License, Version 2.0
  6.  * (the "License"); you may not use this file except in compliance with
  7.  * the License.  You may obtain a copy of the License at
  8.  *
  9.  *   http://www.apache.org/licenses/LICENSE-2.0
  10.  *
  11.  * Unless required by applicable law or agreed to in writing, software
  12.  * distributed under the License is distributed on an "AS IS" BASIS,
  13.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14.  * See the License for the specific language governing permissions and
  15.  * limitations under the License.
  16.  */
  17. package org.orekit.rugged.api;


  18. /** Enumerate for Digital Elevation Model intersection.
  19.  * @author Luc Maisonobe
  20.  */
  21. public enum AlgorithmId {

  22.     /** Fast algorithm due to Bernardt Duvenhage.
  23.      * <p>
  24.      * The algorithm is described in the 2009 paper:
  25.      * <a href="http://researchspace.csir.co.za/dspace/bitstream/10204/3041/1/Duvenhage_2009.pdf">Using
  26.      * An Implicit Min/Max KD-Tree for Doing Efficient Terrain Line of Sight Calculations</a>.
  27.      * </p>
  28.      */
  29.     DUVENHAGE,

  30.     /** Fast algorithm due to Bernardt Duvenhage.
  31.      * <p>
  32.      * The algorithm is described in the 2009 paper:
  33.      * <a href="http://researchspace.csir.co.za/dspace/bitstream/10204/3041/1/Duvenhage_2009.pdf">Using
  34.      * An Implicit Min/Max KD-Tree for Doing Efficient Terrain Line of Sight Calculations</a>.
  35.      * </p>
  36.      * <p>
  37.      * This version of the duvenhage's algorithm considers the body to be flat, i.e. lines computed
  38.      * from entry/exit points in the Digital Elevation Model are considered to be straight lines
  39.      * also in geodetic coordinates. The sagitta resulting from real ellipsoid curvature is therefore
  40.      * <em>not</em> corrected in this case. As this computation is not costly (a few percents overhead),
  41.      * the full {@link #DUVENHAGE} is recommended instead of this one. This choice is mainly intended
  42.      * for comparison purposes with other systems.
  43.      * </p>
  44.      */
  45.     DUVENHAGE_FLAT_BODY,

  46.     /** Basic, <em>very slow</em> algorithm, designed only for tests and validation purposes.
  47.      * <p>
  48.      * The algorithm simply computes entry and exit points at high and low altitudes,
  49.      * and scans all Digital Elevation Models in the sub-tiles defined by these two
  50.      * corner points. It is not designed for operational use.
  51.      * </p>
  52.      */
  53.     BASIC_SLOW_EXHAUSTIVE_SCAN_FOR_TESTS_ONLY,

  54.     /** Algorithm that simply uses a constant elevation over ellipsoid.
  55.      * <p>
  56.      * Intersections are computed only with respect to the reference ellipsoid
  57.      * and a user-specified elevation. If the user-specified elevation is 0.0,
  58.      * then this algorithm is equivalent to {@link #IGNORE_DEM_USE_ELLIPSOID},
  59.      * only slower.
  60.      * </p>
  61.      */
  62.     CONSTANT_ELEVATION_OVER_ELLIPSOID,

  63.     /** Dummy algorithm that simply ignores the Digital Elevation Model.
  64.      * <p>
  65.      * Intersections are computed only with respect to the reference ellipsoid.
  66.      * </p>
  67.      * <p>
  68.      * This algorithm is equivalent to {@link #CONSTANT_ELEVATION_OVER_ELLIPSOID}
  69.      * when the elevation is set to 0.0, but this one is much faster in this
  70.      * specific case.
  71.      * </p>
  72.      */
  73.     IGNORE_DEM_USE_ELLIPSOID

  74. }