Class S2Point

  • All Implemented Interfaces:
    Serializable, Point<Sphere2D>

    public class S2Point
    extends Object
    implements Point<Sphere2D>
    This class represents a point on the 2-sphere.

    We use the mathematical convention to use the azimuthal angle \( \theta \) in the x-y plane as the first coordinate, and the polar angle \( \varphi \) as the second coordinate (see Spherical Coordinates in MathWorld).

    Instances of this class are guaranteed to be immutable.

    See Also:
    Serialized Form
    • Field Detail

      • PLUS_I

        public static final S2Point PLUS_I
        +I (coordinates: \( \theta = 0, \varphi = \pi/2 \)).
      • PLUS_J

        public static final S2Point PLUS_J
        +J (coordinates: \( \theta = \pi/2, \varphi = \pi/2 \))).
      • PLUS_K

        public static final S2Point PLUS_K
        +K (coordinates: \( \theta = any angle, \varphi = 0 \)).
      • MINUS_I

        public static final S2Point MINUS_I
        -I (coordinates: \( \theta = \pi, \varphi = \pi/2 \)).
      • MINUS_J

        public static final S2Point MINUS_J
        -J (coordinates: \( \theta = 3\pi/2, \varphi = \pi/2 \)).
      • MINUS_K

        public static final S2Point MINUS_K
        -K (coordinates: \( \theta = any angle, \varphi = \pi \)).
      • NaN

        public static final S2Point NaN
        A vector with all coordinates set to NaN.
    • Method Detail

      • getTheta

        public double getTheta()
        Get the azimuthal angle \( \theta \) in the x-y plane.
        Returns:
        azimuthal angle \( \theta \) in the x-y plane
        See Also:
        S2Point(double, double)
      • getPhi

        public double getPhi()
        Get the polar angle \( \varphi \).
        Returns:
        polar angle \( \varphi \)
        See Also:
        S2Point(double, double)
      • getVector

        public Vector3D getVector()
        Get the corresponding normalized vector in the 3D euclidean space.
        Returns:
        normalized vector
      • getSpace

        public Space getSpace()
        Get the space to which the point belongs.
        Specified by:
        getSpace in interface Point<Sphere2D>
        Returns:
        containing space
      • isNaN

        public boolean isNaN()
        Returns true if any coordinate of this point is NaN; false otherwise
        Specified by:
        isNaN in interface Point<Sphere2D>
        Returns:
        true if any coordinate of this point is NaN; false otherwise
      • negate

        public S2Point negate()
        Get the opposite of the instance.
        Returns:
        a new vector which is opposite to the instance
      • distance

        public double distance​(Point<Sphere2D> point)
        Compute the distance between the instance and another point.
        Specified by:
        distance in interface Point<Sphere2D>
        Parameters:
        point - second point
        Returns:
        the distance between the instance and p
      • distance

        public static double distance​(S2Point p1,
                                      S2Point p2)
        Compute the distance (angular separation) between two points.
        Parameters:
        p1 - first vector
        p2 - second vector
        Returns:
        the angular separation between p1 and p2
      • equals

        public boolean equals​(Object other)
        Test for the equality of two points on the 2-sphere.

        If all coordinates of two points are exactly the same, and none are Double.NaN, the two points are considered to be equal.

        NaN coordinates are considered to affect globally the point and be equals to each other - i.e, if either (or all) coordinates of the point are equal to Double.NaN, the point is equal to NaN.

        Overrides:
        equals in class Object
        Parameters:
        other - Object to test for equality to this
        Returns:
        true if two points on the 2-sphere objects are equal, false if object is null, not an instance of S2Point, or not equal to this S2Point instance
      • equalsIeee754

        public boolean equalsIeee754​(Object other)
        Test for the equality of two points on the 2-sphere.

        If all coordinates of two points are exactly the same, and none are Double.NaN, the two points are considered to be equal.

        In compliance with IEEE754 handling, if any coordinates of any of the two points are NaN, then the points are considered different. This implies that S2Point.NaN.equals(S2Point.NaN) returns false despite the instance is checked against itself.

        Parameters:
        other - Object to test for equality to this
        Returns:
        true if two points objects are equal, false if object is null, not an instance of S2Point, or not equal to this S2Point instance
        Since:
        2.1
      • hashCode

        public int hashCode()
        Get a hashCode for the point.

        All NaN values have the same hash code.

        Overrides:
        hashCode in class Object
        Returns:
        a hash code value for this object