org.apache.lucene.spatial3d.geom

## Class PlanetModel

- java.lang.Object
- - org.apache.lucene.spatial3d.geom.PlanetModel

- All Implemented Interfaces:
    SerializableObject

      public class PlanetModel
      extends Object
      implements SerializableObject

  Holds mathematical constants associated with the model of a planet.
  WARNING: This API is experimental and might change in incompatible ways in the next release.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `double` | `ab` The x/y scaling factor
    `double` | `c` The z scaling factor
    `double` | `flattening` The flattening value
    `double` | `inverseAb` The inverse of ab
    `double` | `inverseAbSquared` The square of the inverse of ab
    `double` | `inverseC` The inverse of c
    `double` | `inverseCSquared` The square of the inverse of c
    `double` | `inverseScale` The inverse of scale
    `GeoPoint` | `MAX_X_POLE` Max X pole
    `GeoPoint` | `MAX_Y_POLE` Max Y pole
    `GeoPoint` | `MIN_X_POLE` Min X pole
    `GeoPoint` | `MIN_Y_POLE` Min Y pole
    `double` | `minimumPoleDistance` Minimum surface distance between poles
    `GeoPoint` | `NORTH_POLE` North pole
    `double` | `scale` The scale of the planet
    `GeoPoint` | `SOUTH_POLE` South pole
    `static PlanetModel` | `SPHERE` Planet model corresponding to sphere.
    `double` | `squareRatio` The square ratio
    `static PlanetModel` | `WGS84` Planet model corresponding to WGS84
    `static double` | `WGS84_EQUATORIAL` Equatorial radius
    `static double` | `WGS84_MEAN` Mean radius
    `static double` | `WGS84_POLAR` Polar radius

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `PlanetModel(double ab, double c)` Constructor.
    `PlanetModel(InputStream inputStream)` Deserialization constructor.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `GeoPoint` | `bisection(GeoPoint pt1, GeoPoint pt2)` Compute a GeoPoint that's a bisection between two other GeoPoints.
    `GeoPoint` | `createSurfacePoint(double x, double y, double z)` Compute a GeoPoint that's based on (x,y,z) values, but is scaled to actually be on the planet surface.
    `GeoPoint` | `createSurfacePoint(Vector vector)` Compute a GeoPoint that's scaled to actually be on the planet surface.
    `boolean` | `equals(Object o)`
    `double` | `getMaximumMagnitude()` Find the maximum magnitude of all points on the ellipsoid.
    `double` | `getMaximumXValue()` Find the maximum x value.
    `double` | `getMaximumYValue()` Find the maximum y value.
    `double` | `getMaximumZValue()` Find the maximum z value.
    `double` | `getMinimumMagnitude()` Find the minimum magnitude of all points on the ellipsoid.
    `double` | `getMinimumXValue()` Find the minimum x value.
    `double` | `getMinimumYValue()` Find the minimum y value.
    `double` | `getMinimumZValue()` Find the minimum z value.
    `int` | `hashCode()`
    `boolean` | `isSphere()` Does this planet model describe a sphere?
    `boolean` | `pointOnSurface(double x, double y, double z)` Check if point is on surface.
    `boolean` | `pointOnSurface(Vector v)` Check if point is on surface.
    `boolean` | `pointOutside(double x, double y, double z)` Check if point is outside surface.
    `boolean` | `pointOutside(Vector v)` Check if point is outside surface.
    `double` | `surfaceDistance(GeoPoint pt1, GeoPoint pt2)` Compute surface distance between two points.
    `GeoPoint` | `surfacePointOnBearing(GeoPoint from, double dist, double bearing)` Compute new point given original point, a bearing direction, and an adjusted angle (as would be computed by the surfaceDistance() method above).
    `String` | `toString()`
    `void` | `write(OutputStream outputStream)` Serialize to output stream.

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

    - ### Methods inherited from interface org.apache.lucene.spatial3d.geom.SerializableObject

      `readBitSet, readBoolean, readByteArray, readClass, readDouble, readHeterogeneousArray, readHomogeneousArray, readInt, readLong, readObject, readObject, readObject, readObject, readPlanetObject, readPointArray, readPolygonArray, readString, writeBitSet, writeBoolean, writeByteArray, writeClass, writeDouble, writeHeterogeneousArray, writeHeterogeneousArray, writeHomogeneousArray, writeHomogeneousArray, writeInt, writeLong, writeObject, writePlanetObject, writePointArray, writePointArray, writePolygonArray, writePolygonArray, writeString`

- - ### Field Detail

    - #### SPHERE

          public static final PlanetModel SPHERE

      Planet model corresponding to sphere.

    - #### WGS84_MEAN

          public static final double WGS84_MEAN

      Mean radius
      See Also:
        Constant Field Values

    - #### WGS84_POLAR

          public static final double WGS84_POLAR

      Polar radius
      See Also:
        Constant Field Values

    - #### WGS84_EQUATORIAL

          public static final double WGS84_EQUATORIAL

      Equatorial radius
      See Also:
        Constant Field Values

    - #### WGS84

          public static final PlanetModel WGS84

      Planet model corresponding to WGS84

    - #### ab

          public final double ab

      The x/y scaling factor

    - #### c

          public final double c

      The z scaling factor

    - #### inverseAb

          public final double inverseAb

      The inverse of ab

    - #### inverseC

          public final double inverseC

      The inverse of c

    - #### inverseAbSquared

          public final double inverseAbSquared

      The square of the inverse of ab

    - #### inverseCSquared

          public final double inverseCSquared

      The square of the inverse of c

    - #### flattening

          public final double flattening

      The flattening value

    - #### squareRatio

          public final double squareRatio

      The square ratio

    - #### scale

          public final double scale

      The scale of the planet

    - #### inverseScale

          public final double inverseScale

      The inverse of scale

    - #### NORTH_POLE

          public final GeoPoint NORTH_POLE

      North pole

    - #### SOUTH_POLE

          public final GeoPoint SOUTH_POLE

      South pole

    - #### MIN_X_POLE

          public final GeoPoint MIN_X_POLE

      Min X pole

    - #### MAX_X_POLE

          public final GeoPoint MAX_X_POLE

      Max X pole

    - #### MIN_Y_POLE

          public final GeoPoint MIN_Y_POLE

      Min Y pole

    - #### MAX_Y_POLE

          public final GeoPoint MAX_Y_POLE

      Max Y pole

    - #### minimumPoleDistance

          public final double minimumPoleDistance

      Minimum surface distance between poles

  - ### Constructor Detail

    - #### PlanetModel

          public PlanetModel(double ab,
                             double c)

      Constructor.
      Parameters:
        `ab` - is the x/y scaling factor.
        `c` - is the z scaling factor.

    - #### PlanetModel

          public PlanetModel(InputStream inputStream)
                      throws IOException

      Deserialization constructor.
      Parameters:
        `inputStream` - is the input stream.
      Throws:
        `IOException`

  - ### Method Detail

    - #### write

          public void write(OutputStream outputStream)
                     throws IOException

      Description copied from interface: `SerializableObject`
      Serialize to output stream.
      Specified by:
        `write` in interface `SerializableObject`
      Parameters:
        `outputStream` - is the output stream to write to.
      Throws:
        `IOException`

    - #### isSphere

          public boolean isSphere()

      Does this planet model describe a sphere?
      Returns:
        true if so.

    - #### getMinimumMagnitude

          public double getMinimumMagnitude()

      Find the minimum magnitude of all points on the ellipsoid.
      Returns:
        the minimum magnitude for the planet.

    - #### getMaximumMagnitude

          public double getMaximumMagnitude()

      Find the maximum magnitude of all points on the ellipsoid.
      Returns:
        the maximum magnitude for the planet.

    - #### getMinimumXValue

          public double getMinimumXValue()

      Find the minimum x value.
      Returns:
        the minimum X value.

    - #### getMaximumXValue

          public double getMaximumXValue()

      Find the maximum x value.
      Returns:
        the maximum X value.

    - #### getMinimumYValue

          public double getMinimumYValue()

      Find the minimum y value.
      Returns:
        the minimum Y value.

    - #### getMaximumYValue

          public double getMaximumYValue()

      Find the maximum y value.
      Returns:
        the maximum Y value.

    - #### getMinimumZValue

          public double getMinimumZValue()

      Find the minimum z value.
      Returns:
        the minimum Z value.

    - #### getMaximumZValue

          public double getMaximumZValue()

      Find the maximum z value.
      Returns:
        the maximum Z value.

    - #### pointOnSurface

          public boolean pointOnSurface(Vector v)

      Check if point is on surface.
      Parameters:
        `v` - is the point to check.
      Returns:
        true if the point is on the planet surface.

    - #### pointOnSurface

          public boolean pointOnSurface(double x,
                                        double y,
                                        double z)

      Check if point is on surface.
      Parameters:
        `x` - is the x coord.
        `y` - is the y coord.
        `z` - is the z coord.

    - #### pointOutside

          public boolean pointOutside(Vector v)

      Check if point is outside surface.
      Parameters:
        `v` - is the point to check.
      Returns:
        true if the point is outside the planet surface.

    - #### pointOutside

          public boolean pointOutside(double x,
                                      double y,
                                      double z)

      Check if point is outside surface.
      Parameters:
        `x` - is the x coord.
        `y` - is the y coord.
        `z` - is the z coord.

    - #### createSurfacePoint

          public GeoPoint createSurfacePoint(Vector vector)

      Compute a GeoPoint that's scaled to actually be on the planet surface.
      Parameters:
        `vector` - is the vector.
      Returns:
        the scaled point.

    - #### createSurfacePoint

          public GeoPoint createSurfacePoint(double x,
                                             double y,
                                             double z)

      Compute a GeoPoint that's based on (x,y,z) values, but is scaled to actually be on the planet surface.
      Parameters:
        `x` - is the x value.
        `y` - is the y value.
        `z` - is the z value.
      Returns:
        the scaled point.

    - #### bisection

          public GeoPoint bisection(GeoPoint pt1,
                                    GeoPoint pt2)

      Compute a GeoPoint that's a bisection between two other GeoPoints.
      Parameters:
        `pt1` - is the first point.
        `pt2` - is the second point.
      Returns:
        the bisection point, or null if a unique one cannot be found.

    - #### surfaceDistance

          public double surfaceDistance(GeoPoint pt1,
                                        GeoPoint pt2)

      Compute surface distance between two points.
      Parameters:
        `pt1` - is the first point.
        `pt2` - is the second point.
      Returns:
        the adjusted angle, when multiplied by the mean earth radius, yields a surface distance. This will differ from GeoPoint.arcDistance() only when the planet model is not a sphere. @see `GeoPoint.arcDistance(Vector)`

    - #### surfacePointOnBearing

          public GeoPoint surfacePointOnBearing(GeoPoint from,
                                                double dist,
                                                double bearing)

      Compute new point given original point, a bearing direction, and an adjusted angle (as would be computed by the surfaceDistance() method above). The original point can be anywhere on the globe. The bearing direction ranges from 0 (due east at the equator) to pi/2 (due north) to pi (due west at the equator) to 3 pi/4 (due south) to 2 pi.
      Parameters:
        `from` - is the starting point.
        `dist` - is the adjusted angle.
        `bearing` - is the direction to proceed.
      Returns:
        the new point, consistent with the bearing direction and distance.

    - #### equals

          public boolean equals(Object o)

      Overrides:
        `equals` in class `Object`

    - #### hashCode

          public int hashCode()

      Overrides:
        `hashCode` in class `Object`

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`

Copyright © 2000-2019 Apache Software Foundation. All Rights Reserved.