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 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 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 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.
-
-
-
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-coordinatey
- the y-coordinate- Throws:
IllegalArgumentException
- if eitherx
ory
isDouble.NaN
,Double.POSITIVE_INFINITY
orDouble.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 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 a-b-c.- Parameters:
a
- first pointb
- second pointc
- 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 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 command-line arguments
-
-