Package 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.

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static class`
  `PlanetModel.DocValueEncoder`
  Utility class for encoding / decoding from lat/lon (decimal degrees) into sortable doc value numerics (integers)

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `final double`
  `a`
  Semi-major axis
  `final double`
  `b`
  Semi-minor axis
  `static final PlanetModel`
  `CLARKE_1866`
  Planet model corresponding to Clarke 1866 ellipsoid
  `final double`
  `DECODE`
  scalar value used to decode from integer back into double space
  `final PlanetModel.DocValueEncoder`
  `docValueEncoder`
  utility class used to encode/decode from lat/lon (decimal degrees) into doc value integers
  `final double`
  `inverseScale`
  The inverse of scale
  `final double`
  `inverseXYScaling`
  The inverse of xyScaling
  `final double`
  `inverseXYScalingSquared`
  The square of the inverse of xyScaling
  `final double`
  `inverseZScaling`
  The inverse of zScaling
  `final double`
  `inverseZScalingSquared`
  The square of the inverse of zScaling
  `final int`
  `MAX_ENCODED_VALUE`
  Max encoded value
  `final double`
  `MAX_VALUE`
  maximum magnitude value for *this* planet model
  `final GeoPoint`
  `MAX_X_POLE`
  Max X pole
  `final GeoPoint`
  `MAX_Y_POLE`
  Max Y pole
  `final double`
  `meanRadius`
  The mean radius of the planet
  `final int`
  `MIN_ENCODED_VALUE`
  Min encoded value
  `final GeoPoint`
  `MIN_X_POLE`
  Min X pole
  `final GeoPoint`
  `MIN_Y_POLE`
  Min Y pole
  `final double`
  `minimumPoleDistance`
  Minimum surface distance between poles
  `final GeoPoint`
  `NORTH_POLE`
  North pole
  `final double`
  `scale`
  The scale of the planet
  `final double`
  `scaledFlattening`
  The scaled flattening value
  `final GeoPoint`
  `SOUTH_POLE`
  South pole
  `static final PlanetModel`
  `SPHERE`
  Planet model corresponding to sphere.
  `final double`
  `squareRatio`
  The square ratio
  `static final PlanetModel`
  `WGS84`
  Planet model corresponding to WGS84 ellipsoid
  `final double`
  `xyScaling`
  The x/y scaling factor
  `final double`
  `zScaling`
  The z scaling factor

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `PlanetModel(double semiMajorAxis, double semiMinorAxis)`
  * Construct a Planet Model from the semi major axis, semi minor axis=.
  `PlanetModel(InputStream inputStream)`
  Deserialization constructor.

- ## Method Summary

  Modifier and Type
  Method
  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.
  `double`
  `decodeValue(int x)`
  Decodes a given integer back into the radian value according to the defined planet model
  `int`
  `encodeValue(double x)`
  encode the provided value from double to integer space
  `boolean`
  `equals(Object o)`
  `PlanetModel.DocValueEncoder`
  `getDocValueEncoder()`
  return reference to the DocValueEncoder used to encode/decode Geo3DDocValues
  `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`
  `getMeanRadius()`
  return the calculated mean radius (in units provided by ab and c)
  `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`

- ## Field Details

  - ### SPHERE

    public static final PlanetModel SPHERE
    Planet model corresponding to sphere.

  - ### WGS84

    public static final PlanetModel WGS84
    Planet model corresponding to WGS84 ellipsoid

  - ### CLARKE_1866

    public static final PlanetModel CLARKE_1866
    Planet model corresponding to Clarke 1866 ellipsoid

  - ### a

    public final double a
    Semi-major axis

  - ### b

    public final double b
    Semi-minor axis

  - ### xyScaling

    public final double xyScaling
    The x/y scaling factor

  - ### zScaling

    public final double zScaling
    The z scaling factor

  - ### inverseXYScaling

    public final double inverseXYScaling
    The inverse of xyScaling

  - ### inverseZScaling

    public final double inverseZScaling
    The inverse of zScaling

  - ### inverseXYScalingSquared

    public final double inverseXYScalingSquared
    The square of the inverse of xyScaling

  - ### inverseZScalingSquared

    public final double inverseZScalingSquared
    The square of the inverse of zScaling

  - ### scaledFlattening

    public final double scaledFlattening
    The scaled flattening value

  - ### squareRatio

    public final double squareRatio
    The square ratio

  - ### meanRadius

    public final double meanRadius
    The mean radius of the planet

  - ### 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

  - ### MAX_VALUE

    public final double MAX_VALUE
    maximum magnitude value for *this* planet model

  - ### DECODE

    public final double DECODE
    scalar value used to decode from integer back into double space

  - ### MAX_ENCODED_VALUE

    public final int MAX_ENCODED_VALUE
    Max encoded value

  - ### MIN_ENCODED_VALUE

    public final int MIN_ENCODED_VALUE
    Min encoded value

  - ### docValueEncoder

    public final PlanetModel.DocValueEncoder docValueEncoder
    utility class used to encode/decode from lat/lon (decimal degrees) into doc value integers

- ## Constructor Details

  - ### PlanetModel

    public PlanetModel(double semiMajorAxis, double semiMinorAxis)
    * Construct a Planet Model from the semi major axis, semi minor axis=.
    Parameters:
      `semiMajorAxis` - is the semi major axis (in meters) defined as 'a' in projection formulae.
      `semiMinorAxis` - is the semi minor axis (in meters) defined as 'b' in projection formulae.

  - ### PlanetModel

    public PlanetModel(InputStream inputStream) throws IOException
    Deserialization constructor.
    Parameters:
      `inputStream` - is the input stream.
    Throws:
      `IOException`

- ## Method Details

  - ### 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.

  - ### getMeanRadius

    public double getMeanRadius()
    return the calculated mean radius (in units provided by ab and c)

  - ### encodeValue

    public int encodeValue(double x)
    encode the provided value from double to integer space

  - ### decodeValue

    public double decodeValue(int x)
    Decodes a given integer back into the radian value according to the defined planet model

  - ### getDocValueEncoder

    public PlanetModel.DocValueEncoder getDocValueEncoder()
    return reference to the DocValueEncoder used to encode/decode Geo3DDocValues

  - ### 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`