1   /* Copyright 2013-2017 CS Systèmes d'Information
2    * Licensed to CS Systèmes d'Information (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  
19  
20  /** Enumerate for Digital Elevation Model intersection.
21   * @author Luc Maisonobe
22   */
23  public enum AlgorithmId {
24  
25      /** Fast algorithm due to Bernardt Duvenhage.
26       * <p>
27       * The algorithm is described in the 2009 paper:
28       * <a href="http://researchspace.csir.co.za/dspace/bitstream/10204/3041/1/Duvenhage_2009.pdf">Using
29       * An Implicit Min/Max KD-Tree for Doing Efficient Terrain Line of Sight Calculations</a>.
30       * </p>
31       */
32      DUVENHAGE,
33  
34      /** Fast algorithm due to Bernardt Duvenhage.
35       * <p>
36       * The algorithm is described in the 2009 paper:
37       * <a href="http://researchspace.csir.co.za/dspace/bitstream/10204/3041/1/Duvenhage_2009.pdf">Using
38       * An Implicit Min/Max KD-Tree for Doing Efficient Terrain Line of Sight Calculations</a>.
39       * </p>
40       * <p>
41       * This version of the duvenhage's algorithm considers the body to be flat, i.e. lines computed
42       * from entry/exit points in the Digital Elevation Model are considered to be straight lines
43       * also in geodetic coordinates. The sagitta resulting from real ellipsoid curvature is therefore
44       * <em>not</em> corrected in this case. As this computation is not costly (a few percents overhead),
45       * the full {@link #DUVENHAGE} is recommended instead of this one. This choice is mainly intended
46       * for comparison purposes with other systems.
47       * </p>
48       */
49      DUVENHAGE_FLAT_BODY,
50  
51      /** Basic, <em>very slow</em> algorithm, designed only for tests and validation purposes.
52       * <p>
53       * The algorithm simply computes entry and exit points at high and low altitudes,
54       * and scans all Digital Elevation Models in the sub-tiles defined by these two
55       * corner points. It is not designed for operational use.
56       * </p>
57       */
58      BASIC_SLOW_EXHAUSTIVE_SCAN_FOR_TESTS_ONLY,
59  
60      /** Algorithm that simply uses a constant elevation over ellipsoid.
61       * <p>
62       * Intersections are computed only with respect to the reference ellipsoid
63       * and a user-specified elevation. If the user-specified elevation is 0.0,
64       * then this algorithm is equivalent to {@link #IGNORE_DEM_USE_ELLIPSOID},
65       * only slower.
66       * </p>
67       */
68      CONSTANT_ELEVATION_OVER_ELLIPSOID,
69  
70      /** Dummy algorithm that simply ignores the Digital Elevation Model.
71       * <p>
72       * Intersections are computed only with respect to the reference ellipsoid.
73       * </p>
74       * <p>
75       * This algorithm is equivalent to {@link #CONSTANT_ELEVATION_OVER_ELLIPSOID}
76       * when the elevation is set to 0.0, but this one is much faster in this
77       * specific case.
78       * </p>
79       */
80      IGNORE_DEM_USE_ELLIPSOID
81  
82  }