# Class Arc2D.Double

java.lang.Object
java.awt.geom.RectangularShape
java.awt.geom.Arc2D
java.awt.geom.Arc2D.Double

All Implemented Interfaces:
  `Shape, Serializable, Cloneable`

Enclosing class:
  `Arc2D`

public static class Arc2D.Double extends Arc2D implements Serializable
This class defines an arc specified in `double` precision.

Since:
  1.2
See Also:
  - Serialized Form

- ## Nested Class Summary

  ### Nested classes/interfaces declared in class Arc2D

  `Arc2D.Double, Arc2D.Float`
  Modifier and Type
  Class
  Description
  `static class`
  `Arc2D.Double`
  This class defines an arc specified in `double` precision.
  `static class`
  `Arc2D.Float`
  This class defines an arc specified in `float` precision.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `double`
  `extent`
  The angular extent of the arc in degrees.
  `double`
  `height`
  The overall height of the full ellipse of which this arc is a partial section (not considering the angular extents).
  `double`
  `start`
  The starting angle of the arc in degrees.
  `double`
  `width`
  The overall width of the full ellipse of which this arc is a partial section (not considering the angular extents).
  `double`
  `x`
  The X coordinate of the upper-left corner of the framing rectangle of the arc.
  `double`
  `y`
  The Y coordinate of the upper-left corner of the framing rectangle of the arc.

  ### Fields declared in class Arc2D

  `CHORD, OPEN, PIE`
  Modifier and Type
  Field
  Description
  `static final int`
  `CHORD`
  The closure type for an arc closed by drawing a straight line segment from the start of the arc segment to the end of the arc segment.
  `static final int`
  `OPEN`
  The closure type for an open arc with no path segments connecting the two ends of the arc segment.
  `static final int`
  `PIE`
  The closure type for an arc closed by drawing straight line segments from the start of the arc segment to the center of the full ellipse and from that point to the end of the arc segment.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `Double()`
  Constructs a new OPEN arc, initialized to location (0, 0), size (0, 0), angular extents (start = 0, extent = 0).
  `Double(double x, double y, double w, double h, double start, double extent, int type)`
  Constructs a new arc, initialized to the specified location, size, angular extents, and closure type.
  `Double(int type)`
  Constructs a new arc, initialized to location (0, 0), size (0, 0), angular extents (start = 0, extent = 0), and the specified closure type.
  `Double(Rectangle2D ellipseBounds, double start, double extent, int type)`
  Constructs a new arc, initialized to the specified location, size, angular extents, and closure type.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `double`
  `getAngleExtent()`
  Returns the angular extent of the arc.
  `double`
  `getAngleStart()`
  Returns the starting angle of the arc.
  `double`
  `getHeight()`
  Returns the height of the framing rectangle in `double` precision.
  `double`
  `getWidth()`
  Returns the width of the framing rectangle in `double` precision.
  `double`
  `getX()`
  Returns the X coordinate of the upper-left corner of the framing rectangle in `double` precision.
  `double`
  `getY()`
  Returns the Y coordinate of the upper-left corner of the framing rectangle in `double` precision.
  `boolean`
  `isEmpty()`
  Determines whether the `RectangularShape` is empty.
  `protected Rectangle2D`
  `makeBounds(double x, double y, double w, double h)`
  Constructs a `Rectangle2D` of the appropriate precision to hold the parameters calculated to be the framing rectangle of this arc.
  `void`
  `setAngleExtent(double angExt)`
  Sets the angular extent of this arc to the specified double value.
  `void`
  `setAngleStart(double angSt)`
  Sets the starting angle of this arc to the specified double value.
  `void`
  `setArc(double x, double y, double w, double h, double angSt, double angExt, int closure)`
  Sets the location, size, angular extents, and closure type of this arc to the specified double values.

  ### Methods declared in class Arc2D

  `contains, contains, contains, containsAngle, equals, getArcType, getBounds2D, getEndPoint, getPathIterator, getStartPoint, hashCode, intersects, setAngles, setAngles, setAngleStart, setArc, setArc, setArc, setArcByCenter, setArcByTangent, setArcType, setFrame`
  Modifier and Type
  Method
  Description
  `boolean`
  `contains(double x, double y)`
  Determines whether or not the specified point is inside the boundary of the arc.
  `boolean`
  `contains(double x, double y, double w, double h)`
  Determines whether or not the interior of the arc entirely contains the specified rectangle.
  `boolean`
  `contains(Rectangle2D r)`
  Determines whether or not the interior of the arc entirely contains the specified rectangle.
  `boolean`
  `containsAngle(double angle)`
  Determines whether or not the specified angle is within the angular extents of the arc.
  `boolean`
  `equals(Object obj)`
  Determines whether or not the specified `Object` is equal to this `Arc2D`.
  `int`
  `getArcType()`
  Returns the arc closure type of the arc: `Arc2D.OPEN`, `Arc2D.CHORD`, or `Arc2D.PIE`.
  `Rectangle2D`
  `getBounds2D()`
  Returns the high-precision framing rectangle of the arc.
  `Point2D`
  `getEndPoint()`
  Returns the ending point of the arc.
  `PathIterator`
  `getPathIterator(AffineTransform at)`
  Returns an iteration object that defines the boundary of the arc.
  `Point2D`
  `getStartPoint()`
  Returns the starting point of the arc.
  `int`
  `hashCode()`
  Returns the hashcode for this `Arc2D`.
  `boolean`
  `intersects(double x, double y, double w, double h)`
  Determines whether or not the interior of the arc intersects the interior of the specified rectangle.
  `void`
  `setAngles(double x1, double y1, double x2, double y2)`
  Sets the starting angle and angular extent of this arc using two sets of coordinates.
  `void`
  `setAngles(Point2D p1, Point2D p2)`
  Sets the starting angle and angular extent of this arc using two points.
  `void`
  `setAngleStart(Point2D p)`
  Sets the starting angle of this arc to the angle that the specified point defines relative to the center of this arc.
  `void`
  `setArc(Arc2D a)`
  Sets this arc to be the same as the specified arc.
  `void`
  `setArc(Point2D loc, Dimension2D size, double angSt, double angExt, int closure)`
  Sets the location, size, angular extents, and closure type of this arc to the specified values.
  `void`
  `setArc(Rectangle2D rect, double angSt, double angExt, int closure)`
  Sets the location, size, angular extents, and closure type of this arc to the specified values.
  `void`
  `setArcByCenter(double x, double y, double radius, double angSt, double angExt, int closure)`
  Sets the position, bounds, angular extents, and closure type of this arc to the specified values.
  `void`
  `setArcByTangent(Point2D p1, Point2D p2, Point2D p3, double radius)`
  Sets the position, bounds, and angular extents of this arc to the specified value.
  `void`
  `setArcType(int type)`
  Sets the closure type of this arc to the specified value: `OPEN`, `CHORD`, or `PIE`.
  `void`
  `setFrame(double x, double y, double w, double h)`
  Sets the location and size of the framing rectangle of this `Shape` to the specified rectangular values.

  ### Methods declared in class RectangularShape

  `clone, contains, getBounds, getCenterX, getCenterY, getFrame, getMaxX, getMaxY, getMinX, getMinY, getPathIterator, intersects, setFrame, setFrame, setFrameFromCenter, setFrameFromCenter, setFrameFromDiagonal, setFrameFromDiagonal`
  Modifier and Type
  Method
  Description
  `Object`
  `clone()`
  Creates a new object of the same class and with the same contents as this object.
  `boolean`
  `contains(Point2D p)`
  Tests if a specified `Point2D` is inside the boundary of the `Shape`, as described by the definition of insideness.
  `Rectangle`
  `getBounds()`
  Returns an integer `Rectangle` that completely encloses the `Shape`.
  `double`
  `getCenterX()`
  Returns the X coordinate of the center of the framing rectangle of the `Shape` in `double` precision.
  `double`
  `getCenterY()`
  Returns the Y coordinate of the center of the framing rectangle of the `Shape` in `double` precision.
  `Rectangle2D`
  `getFrame()`
  Returns the framing `Rectangle2D` that defines the overall shape of this object.
  `double`
  `getMaxX()`
  Returns the largest X coordinate of the framing rectangle of the `Shape` in `double` precision.
  `double`
  `getMaxY()`
  Returns the largest Y coordinate of the framing rectangle of the `Shape` in `double` precision.
  `double`
  `getMinX()`
  Returns the smallest X coordinate of the framing rectangle of the `Shape` in `double` precision.
  `double`
  `getMinY()`
  Returns the smallest Y coordinate of the framing rectangle of the `Shape` in `double` precision.
  `PathIterator`
  `getPathIterator(AffineTransform at, double flatness)`
  Returns an iterator object that iterates along the `Shape` object's boundary and provides access to a flattened view of the outline of the `Shape` object's geometry.
  `boolean`
  `intersects(Rectangle2D r)`
  Tests if the interior of the `Shape` intersects the interior of a specified `Rectangle2D`.
  `void`
  `setFrame(Point2D loc, Dimension2D size)`
  Sets the location and size of the framing rectangle of this `Shape` to the specified `Point2D` and `Dimension2D`, respectively.
  `void`
  `setFrame(Rectangle2D r)`
  Sets the framing rectangle of this `Shape` to be the specified `Rectangle2D`.
  `void`
  `setFrameFromCenter(double centerX, double centerY, double cornerX, double cornerY)`
  Sets the framing rectangle of this `Shape` based on the specified center point coordinates and corner point coordinates.
  `void`
  `setFrameFromCenter(Point2D center, Point2D corner)`
  Sets the framing rectangle of this `Shape` based on a specified center `Point2D` and corner `Point2D`.
  `void`
  `setFrameFromDiagonal(double x1, double y1, double x2, double y2)`
  Sets the diagonal of the framing rectangle of this `Shape` based on the two specified coordinates.
  `void`
  `setFrameFromDiagonal(Point2D p1, Point2D p2)`
  Sets the diagonal of the framing rectangle of this `Shape` based on two specified `Point2D` objects.

  ### Methods declared in class Object

  `finalize, getClass, notify, notifyAll, toString, wait, wait, wait`
  Modifier and Type
  Method
  Description
  `protected void`
  `finalize()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Finalization is deprecated and subject to removal in a future release.
  `final Class<?>`
  `getClass()`
  Returns the runtime class of this `Object`.
  `final void`
  `notify()`
  Wakes up a single thread that is waiting on this object's monitor.
  `final void`
  `notifyAll()`
  Wakes up all threads that are waiting on this object's monitor.
  `String`
  `toString()`
  Returns a string representation of the object.
  `final void`
  `wait()`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted.
  `final void`
  `wait(long timeoutMillis)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.
  `final void`
  `wait(long timeoutMillis, int nanos)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

- ## Field Details

  - ### x

    public double x
    The X coordinate of the upper-left corner of the framing rectangle of the arc.
    Since:
      1.2

  - ### y

    public double y
    The Y coordinate of the upper-left corner of the framing rectangle of the arc.
    Since:
      1.2

  - ### width

    public double width
    The overall width of the full ellipse of which this arc is a partial section (not considering the angular extents).
    Since:
      1.2

  - ### height

    public double height
    The overall height of the full ellipse of which this arc is a partial section (not considering the angular extents).
    Since:
      1.2

  - ### start

    public double start
    The starting angle of the arc in degrees.
    Since:
      1.2

  - ### extent

    public double extent
    The angular extent of the arc in degrees.
    Since:
      1.2

- ## Constructor Details

  - ### Double

    public Double()
    Constructs a new OPEN arc, initialized to location (0, 0), size (0, 0), angular extents (start = 0, extent = 0).
    Since:
      1.2

  - ### Double

    public Double(int type)
    Constructs a new arc, initialized to location (0, 0), size (0, 0), angular extents (start = 0, extent = 0), and the specified closure type.
    Parameters:
      `type` - The closure type for the arc: `Arc2D.OPEN`, `Arc2D.CHORD`, or `Arc2D.PIE`.
    Since:
      1.2

  - ### Double

    public Double(double x, double y, double w, double h, double start, double extent, int type)
    Constructs a new arc, initialized to the specified location, size, angular extents, and closure type.
    Parameters:
      `x` - The X coordinate of the upper-left corner of the arc's framing rectangle.
      `y` - The Y coordinate of the upper-left corner of the arc's framing rectangle.
      `w` - The overall width of the full ellipse of which this arc is a partial section.
      `h` - The overall height of the full ellipse of which this arc is a partial section.
      `start` - The starting angle of the arc in degrees.
      `extent` - The angular extent of the arc in degrees.
      `type` - The closure type for the arc: `Arc2D.OPEN`, `Arc2D.CHORD`, or `Arc2D.PIE`.
    Since:
      1.2

  - ### Double

    public Double(Rectangle2D ellipseBounds, double start, double extent, int type)
    Constructs a new arc, initialized to the specified location, size, angular extents, and closure type.
    Parameters:
      `ellipseBounds` - The framing rectangle that defines the outer boundary of the full ellipse of which this arc is a partial section.
      `start` - The starting angle of the arc in degrees.
      `extent` - The angular extent of the arc in degrees.
      `type` - The closure type for the arc: `Arc2D.OPEN`, `Arc2D.CHORD`, or `Arc2D.PIE`.
    Since:
      1.2

- ## Method Details

  - ### getX

    public double getX()
    Returns the X coordinate of the upper-left corner of the framing rectangle in `double` precision. Note that the arc partially inscribes the framing rectangle of this `RectangularShape`.
    Specified by:
      `getX` in class `RectangularShape`
    Returns:
      the X coordinate of the upper-left corner of the framing rectangle.
    Since:
      1.2

  - ### getY

    public double getY()
    Returns the Y coordinate of the upper-left corner of the framing rectangle in `double` precision. Note that the arc partially inscribes the framing rectangle of this `RectangularShape`.
    Specified by:
      `getY` in class `RectangularShape`
    Returns:
      the Y coordinate of the upper-left corner of the framing rectangle.
    Since:
      1.2

  - ### getWidth

    public double getWidth()
    Returns the width of the framing rectangle in `double` precision. Note that the arc partially inscribes the framing rectangle of this `RectangularShape`.
    Specified by:
      `getWidth` in class `RectangularShape`
    Returns:
      the width of the framing rectangle.
    Since:
      1.2

  - ### getHeight

    public double getHeight()
    Returns the height of the framing rectangle in `double` precision. Note that the arc partially inscribes the framing rectangle of this `RectangularShape`.
    Specified by:
      `getHeight` in class `RectangularShape`
    Returns:
      the height of the framing rectangle.
    Since:
      1.2

  - ### getAngleStart

    public double getAngleStart()
    Returns the starting angle of the arc.
    Specified by:
      `getAngleStart` in class `Arc2D`
    Returns:
      A double value that represents the starting angle of the arc in degrees.
    Since:
      1.2
    See Also:
      - `Arc2D.setAngleStart(double)`

  - ### getAngleExtent

    public double getAngleExtent()
    Returns the angular extent of the arc.
    Specified by:
      `getAngleExtent` in class `Arc2D`
    Returns:
      A double value that represents the angular extent of the arc in degrees.
    Since:
      1.2
    See Also:
      - `Arc2D.setAngleExtent(double)`

  - ### isEmpty

    public boolean isEmpty()
    Determines whether the `RectangularShape` is empty. When the `RectangularShape` is empty, it encloses no area.
    Specified by:
      `isEmpty` in class `RectangularShape`
    Returns:
      `true` if the `RectangularShape` is empty; `false` otherwise.
    Since:
      1.2

  - ### setArc

    public void setArc(double x, double y, double w, double h, double angSt, double angExt, int closure)
    Sets the location, size, angular extents, and closure type of this arc to the specified double values.
    Specified by:
      `setArc` in class `Arc2D`
    Parameters:
      `x` - The X coordinate of the upper-left corner of the arc.
      `y` - The Y coordinate of the upper-left corner of the arc.
      `w` - The overall width of the full ellipse of which this arc is a partial section.
      `h` - The overall height of the full ellipse of which this arc is a partial section.
      `angSt` - The starting angle of the arc in degrees.
      `angExt` - The angular extent of the arc in degrees.
      `closure` - The closure type for the arc: `Arc2D.OPEN`, `Arc2D.CHORD`, or `Arc2D.PIE`.
    Since:
      1.2

  - ### setAngleStart

    public void setAngleStart(double angSt)
    Sets the starting angle of this arc to the specified double value.
    Specified by:
      `setAngleStart` in class `Arc2D`
    Parameters:
      `angSt` - The starting angle of the arc in degrees.
    Since:
      1.2
    See Also:
      - `Arc2D.getAngleStart()`

  - ### setAngleExtent

    public void setAngleExtent(double angExt)
    Sets the angular extent of this arc to the specified double value.
    Specified by:
      `setAngleExtent` in class `Arc2D`
    Parameters:
      `angExt` - The angular extent of the arc in degrees.
    Since:
      1.2
    See Also:
      - `Arc2D.getAngleExtent()`

  - ### makeBounds

    protected Rectangle2D makeBounds(double x, double y, double w, double h)
    Constructs a `Rectangle2D` of the appropriate precision to hold the parameters calculated to be the framing rectangle of this arc.
    Specified by:
      `makeBounds` in class `Arc2D`
    Parameters:
      `x` - The X coordinate of the upper-left corner of the framing rectangle.
      `y` - The Y coordinate of the upper-left corner of the framing rectangle.
      `w` - The width of the framing rectangle.
      `h` - The height of the framing rectangle.
    Returns:
      a `Rectangle2D` that is the framing rectangle of this arc.
    Since:
      1.2