Module java.desktop
Package java.awt.geom

# Class Line2D.Double

java.lang.Object
java.awt.geom.Line2D
java.awt.geom.Line2D.Double

All Implemented Interfaces:
  `Shape`, `Serializable`, `Cloneable`

Enclosing class:
  Line2D

public static class Line2D.Double extends Line2D implements Serializable
A line segment specified with double coordinates.

Since:
  1.2
See Also:
  - Serialized Form

- ## Nested Class Summary

  ## Nested classes/interfaces declared in class java.awt.geom.Line2D

  `Line2D.Double, Line2D.Float`

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `double`
  `x1`
  The X coordinate of the start point of the line segment.
  `double`
  `x2`
  The X coordinate of the end point of the line segment.
  `double`
  `y1`
  The Y coordinate of the start point of the line segment.
  `double`
  `y2`
  The Y coordinate of the end point of the line segment.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `Double()`
  Constructs and initializes a Line with coordinates (0, 0) → (0, 0).
  `Double(double x1, double y1, double x2, double y2)`
  Constructs and initializes a `Line2D` from the specified coordinates.
  `Double(Point2D p1, Point2D p2)`
  Constructs and initializes a `Line2D` from the specified `Point2D` objects.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Rectangle2D`
  `getBounds2D()`
  Returns a high precision and more accurate bounding box of the `Shape` than the `getBounds` method.
  `Point2D`
  `getP1()`
  Returns the start `Point2D` of this `Line2D`.
  `Point2D`
  `getP2()`
  Returns the end `Point2D` of this `Line2D`.
  `double`
  `getX1()`
  Returns the X coordinate of the start point in double precision.
  `double`
  `getX2()`
  Returns the X coordinate of the end point in double precision.
  `double`
  `getY1()`
  Returns the Y coordinate of the start point in double precision.
  `double`
  `getY2()`
  Returns the Y coordinate of the end point in double precision.
  `void`
  `setLine(double x1, double y1, double x2, double y2)`
  Sets the location of the end points of this `Line2D` to the specified double coordinates.

  ### Methods declared in class java.awt.geom.Line2D

  `clone, contains, contains, contains, contains, getBounds, getPathIterator, getPathIterator, intersects, intersects, intersectsLine, intersectsLine, linesIntersect, ptLineDist, ptLineDist, ptLineDist, ptLineDistSq, ptLineDistSq, ptLineDistSq, ptSegDist, ptSegDist, ptSegDist, ptSegDistSq, ptSegDistSq, ptSegDistSq, relativeCCW, relativeCCW, relativeCCW, setLine, setLine`

  ### Methods declared in class java.lang.Object

  `equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### x1

    public double x1
    The X coordinate of the start point of the line segment.
    Since:
      1.2

  - ### y1

    public double y1
    The Y coordinate of the start point of the line segment.
    Since:
      1.2

  - ### x2

    public double x2
    The X coordinate of the end point of the line segment.
    Since:
      1.2

  - ### y2

    public double y2
    The Y coordinate of the end point of the line segment.
    Since:
      1.2

- ## Constructor Details

  - ### Double

    public Double()
    Constructs and initializes a Line with coordinates (0, 0) → (0, 0).
    Since:
      1.2

  - ### Double

    public Double(double x1, double y1, double x2, double y2)
    Constructs and initializes a `Line2D` from the specified coordinates.
    Parameters:
      `x1` - the X coordinate of the start point
      `y1` - the Y coordinate of the start point
      `x2` - the X coordinate of the end point
      `y2` - the Y coordinate of the end point
    Since:
      1.2

  - ### Double

    public Double(Point2D p1, Point2D p2)
    Constructs and initializes a `Line2D` from the specified `Point2D` objects.
    Parameters:
      `p1` - the start `Point2D` of this line segment
      `p2` - the end `Point2D` of this line segment
    Since:
      1.2

- ## Method Details

  - ### getX1

    public double getX1()
    Returns the X coordinate of the start point in double precision.
    Specified by:
      `getX1` in class `Line2D`
    Returns:
      the X coordinate of the start point of this `Line2D` object.
    Since:
      1.2

  - ### getY1

    public double getY1()
    Returns the Y coordinate of the start point in double precision.
    Specified by:
      `getY1` in class `Line2D`
    Returns:
      the Y coordinate of the start point of this `Line2D` object.
    Since:
      1.2

  - ### getP1

    public Point2D getP1()
    Returns the start `Point2D` of this `Line2D`.
    Specified by:
      `getP1` in class `Line2D`
    Returns:
      the start `Point2D` of this `Line2D`.
    Since:
      1.2

  - ### getX2

    public double getX2()
    Returns the X coordinate of the end point in double precision.
    Specified by:
      `getX2` in class `Line2D`
    Returns:
      the X coordinate of the end point of this `Line2D` object.
    Since:
      1.2

  - ### getY2

    public double getY2()
    Returns the Y coordinate of the end point in double precision.
    Specified by:
      `getY2` in class `Line2D`
    Returns:
      the Y coordinate of the end point of this `Line2D` object.
    Since:
      1.2

  - ### getP2

    public Point2D getP2()
    Returns the end `Point2D` of this `Line2D`.
    Specified by:
      `getP2` in class `Line2D`
    Returns:
      the end `Point2D` of this `Line2D`.
    Since:
      1.2

  - ### setLine

    public void setLine(double x1, double y1, double x2, double y2)
    Sets the location of the end points of this `Line2D` to the specified double coordinates.
    Specified by:
      `setLine` in class `Line2D`
    Parameters:
      `x1` - the X coordinate of the start point
      `y1` - the Y coordinate of the start point
      `x2` - the X coordinate of the end point
      `y2` - the Y coordinate of the end point
    Since:
      1.2

  - ### getBounds2D

    public Rectangle2D getBounds2D()
    Returns a high precision and more accurate bounding box of the `Shape` than the `getBounds` method. Note that there is no guarantee that the returned `Rectangle2D` is the smallest bounding box that encloses the `Shape`, only that the `Shape` lies entirely within the indicated `Rectangle2D`. The bounding box returned by this method is usually tighter than that returned by the `getBounds` method and never fails due to overflow problems since the return value can be an instance of the `Rectangle2D` that uses double precision values to store the dimensions.

    Note that the definition of insideness can lead to situations where points on the defining outline of the `shape` may not be considered contained in the returned `bounds` object, but only in cases where those points are also not considered contained in the original `shape`.

    If a `point` is inside the `shape` according to the `contains(point)` method, then it must be inside the returned `Rectangle2D` bounds object according to the `contains(point)` method of the `bounds`. Specifically:

    `shape.contains(p)` requires `bounds.contains(p)`

    If a `point` is not inside the `shape`, then it might still be contained in the `bounds` object:

    `bounds.contains(p)` does not imply `shape.contains(p)`

    Specified by:
      `getBounds2D` in interface `Shape`
    Returns:
      an instance of `Rectangle2D` that is a high-precision bounding box of the `Shape`.
    Since:
      1.2
    See Also:
      - `Shape.getBounds()`