Package edu.princeton.cs.algs4
Class Point2D
 Object

 edu.princeton.cs.algs4.Point2D

 All Implemented Interfaces:
Comparable<Point2D>
public final class Point2D extends Object implements Comparable<Point2D>
ThePoint
class is an immutable data type to encapsulate a twodimensional point with realvalue 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 xcoordinate.static Comparator<Point2D>
Y_ORDER
Compares two points by ycoordinate.

Constructor Summary
Constructors Constructor Description Point2D(double x, double y)
Initializes a new point (x, y).

Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static double
area2(Point2D a, Point2D b, Point2D c)
Returns twice the signed area of the triangle abc.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 ycoordinate, breaking ties by xcoordinate.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 xcoordinate.double
y()
Returns the ycoordinate.



Field Detail

X_ORDER
public static final Comparator<Point2D> X_ORDER
Compares two points by xcoordinate.

Y_ORDER
public static final Comparator<Point2D> Y_ORDER
Compares two points by ycoordinate.

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 xcoordinatey
 the ycoordinate Throws:
IllegalArgumentException
 if eitherx
ory
isDouble.NaN
,Double.POSITIVE_INFINITY
orDouble.NEGATIVE_INFINITY


Method Detail

x
public double x()
Returns the xcoordinate. Returns:
 the xcoordinate

y
public double y()
Returns the ycoordinate. Returns:
 the ycoordinate

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 pointb
 second pointc
 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 abc. Parameters:
a
 first pointb
 second pointc
 third point Returns:
 twice the signed area of the triangle abc

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 ycoordinate, breaking ties by xcoordinate. Formally, the invoking point (x0, y0) is less than the argument point (x1, y1) if and only if eithery0 < y1
or ify0 == y1
andx0 < x1
. Specified by:
compareTo
in interfaceComparable<Point2D>
 Parameters:
that
 the other point Returns:
 the value
0
if this string is equal to the argument string (precisely whenequals()
returnstrue
); 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.

toString
public String toString()
Return a string representation of this point.

hashCode
public int hashCode()
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 commandline arguments

