## Class Point2D

• Object
• edu.princeton.cs.algs4.Point2D
• All Implemented Interfaces:
`Comparable<Point2D>`

```public final class Point2D
extends Object
implements Comparable<Point2D>```
The `Point` class is an immutable data type to encapsulate a two-dimensional point with real-value coordinates.

Note: in order to deal with the difference behavior of double and Double with respect to -0.0 and +0.0, the Point2D constructor converts any coordinates that are -0.0 to +0.0.

For additional documentation, see Section 1.2 of Algorithms, 4th Edition by Robert Sedgewick and Kevin Wayne.

Author:
Robert Sedgewick, Kevin Wayne
• ### Field Summary

Fields
Modifier and Type Field Description
`static Comparator<Point2D>` `R_ORDER`
Compares two points by polar radius.
`static Comparator<Point2D>` `X_ORDER`
Compares two points by x-coordinate.
`static Comparator<Point2D>` `Y_ORDER`
Compares two points by y-coordinate.
• ### Constructor Summary

Constructors
Constructor Description
```Point2D​(double x, double y)```
Initializes a new point (x, y).
• ### Method Summary

All Methods
Modifier and Type Method Description
`static double` ```area2​(Point2D a, Point2D b, Point2D c)```
Returns twice the signed area of the triangle a-b-c.
`Comparator<Point2D>` `atan2Order()`
Compares two points by atan2() angle (between –π and π) with respect to this point.
`static int` ```ccw​(Point2D a, Point2D b, Point2D c)```
Returns true if a→b→c is a counterclockwise turn.
`int` `compareTo​(Point2D that)`
Compares two points by y-coordinate, breaking ties by x-coordinate.
`double` `distanceSquaredTo​(Point2D that)`
Returns the square of the Euclidean distance between this point and that point.
`double` `distanceTo​(Point2D that)`
Returns the Euclidean distance between this point and that point.
`Comparator<Point2D>` `distanceToOrder()`
Compares two points by distance to this point.
`void` `draw()`
Plot this point using standard draw.
`void` `drawTo​(Point2D that)`
Plot a line from this point to that point using standard draw.
`boolean` `equals​(Object other)`
Compares this point to the specified point.
`int` `hashCode()`
Returns an integer hash code for this point.
`static void` `main​(String[] args)`
Unit tests the point data type.
`Comparator<Point2D>` `polarOrder()`
Compares two points by polar angle (between 0 and 2π) with respect to this point.
`double` `r()`
Returns the polar radius of this point.
`double` `theta()`
Returns the angle of this point in polar coordinates.
`String` `toString()`
Return a string representation of this point.
`double` `x()`
Returns the x-coordinate.
`double` `y()`
Returns the y-coordinate.
• ### Methods inherited from class java.lang.Object

`clone, getClass, notify, notifyAll, wait, wait, wait`
• ### Field Detail

• #### X_ORDER

`public static final Comparator<Point2D> X_ORDER`
Compares two points by x-coordinate.
• #### Y_ORDER

`public static final Comparator<Point2D> Y_ORDER`
Compares two points by y-coordinate.
• #### R_ORDER

`public static final Comparator<Point2D> R_ORDER`
Compares two points by polar radius.
• ### Constructor Detail

• #### Point2D

```public Point2D​(double x,
double y)```
Initializes a new point (x, y).
Parameters:
`x` - the x-coordinate
`y` - the y-coordinate
Throws:
`IllegalArgumentException` - if either `x` or `y` is `Double.NaN`, `Double.POSITIVE_INFINITY` or `Double.NEGATIVE_INFINITY`
• ### Method Detail

• #### x

`public double x()`
Returns the x-coordinate.
Returns:
the x-coordinate
• #### y

`public double y()`
Returns the y-coordinate.
Returns:
the y-coordinate
• #### r

`public double r()`
Returns the polar radius of this point.
Returns:
the polar radius of this point in polar coordinates: sqrt(x*x + y*y)
• #### theta

`public double theta()`
Returns the angle of this point in polar coordinates.
Returns:
the angle (in radians) of this point in polar coordinates (between –π and π)
• #### ccw

```public static int ccw​(Point2D a,
Point2D b,
Point2D c)```
Returns true if a→b→c is a counterclockwise turn.
Parameters:
`a` - first point
`b` - second point
`c` - third point
Returns:
{ -1, 0, +1 } if a→b→c is a { clockwise, collinear; counterclockwise } turn.
• #### area2

```public static double area2​(Point2D a,
Point2D b,
Point2D c)```
Returns twice the signed area of the triangle a-b-c.
Parameters:
`a` - first point
`b` - second point
`c` - third point
Returns:
twice the signed area of the triangle a-b-c
• #### distanceTo

`public double distanceTo​(Point2D that)`
Returns the Euclidean distance between this point and that point.
Parameters:
`that` - the other point
Returns:
the Euclidean distance between this point and that point
• #### distanceSquaredTo

`public double distanceSquaredTo​(Point2D that)`
Returns the square of the Euclidean distance between this point and that point.
Parameters:
`that` - the other point
Returns:
the square of the Euclidean distance between this point and that point
• #### compareTo

`public int compareTo​(Point2D that)`
Compares two points by y-coordinate, breaking ties by x-coordinate. Formally, the invoking point (x0, y0) is less than the argument point (x1, y1) if and only if either `y0 < y1` or if `y0 == y1` and `x0 < x1`.
Specified by:
`compareTo` in interface `Comparable<Point2D>`
Parameters:
`that` - the other point
Returns:
the value `0` if this string is equal to the argument string (precisely when `equals()` returns `true`); a negative integer if this point is less than the argument point; and a positive integer if this point is greater than the argument point
• #### polarOrder

`public Comparator<Point2D> polarOrder()`
Compares two points by polar angle (between 0 and 2π) with respect to this point.
Returns:
the comparator
• #### atan2Order

`public Comparator<Point2D> atan2Order()`
Compares two points by atan2() angle (between –π and π) with respect to this point.
Returns:
the comparator
• #### distanceToOrder

`public Comparator<Point2D> distanceToOrder()`
Compares two points by distance to this point.
Returns:
the comparator
• #### equals

`public boolean equals​(Object other)`
Compares this point to the specified point.
Overrides:
`equals` in class `Object`
Parameters:
`other` - the other point
Returns:
`true` if this point equals `other`; `false` otherwise
• #### toString

`public String toString()`
Return a string representation of this point.
Overrides:
`toString` in class `Object`
Returns:
a string representation of this point in the format (x, y)
• #### hashCode

`public int hashCode()`
Returns an integer hash code for this point.
Overrides:
`hashCode` in class `Object`
Returns:
an integer hash code for this point
• #### draw

`public void draw()`
Plot this point using standard draw.
• #### drawTo

`public void drawTo​(Point2D that)`
Plot a line from this point to that point using standard draw.
Parameters:
`that` - the other point
• #### main

`public static void main​(String[] args)`
Unit tests the point data type.
Parameters:
`args` - the command-line arguments