Module java.desktop
Package java.awt.geom

Class QuadCurve2D

java.lang.Object
java.awt.geom.QuadCurve2D
所有已实现的接口:
Shape, Cloneable
直接已知的子类:
QuadCurve2D.Double, QuadCurve2D.Float

public abstract class QuadCurve2D extends Object implements Shape, Cloneable
QuadCurve2D类在(x,y)坐标空间中定义了一个二次参数曲线段。

这个类只是所有存储2D二次曲线段的对象的抽象超类。坐标的实际存储表示留给子类。

自从:
1.2
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static class 
    double坐标指定的二次参数曲线段。
    static class 
    float坐标指定的二次参数曲线段。
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    protected
    这是一个抽象类,不能直接实例化。
  • Method Summary

    Modifier and Type
    Method
    Description
    clone()
    创建一个与此对象具有相同类和相同内容的新对象。
    boolean
    contains(double x, double y)
    测试指定的坐标是否在Shape的边界内,如内部定义所述。
    boolean
    contains(double x, double y, double w, double h)
    测试Shape的内部是否完全包含指定的矩形区域。
    boolean
    测试指定的Point2D是否在Shape的边界内,如内部定义所述。
    boolean
    测试Shape的内部是否完全包含指定的Rectangle2D
    返回一个完全包围Shape的整数Rectangle
    返回Shape的高精度和更准确的边界框,比getBounds方法更准确。
    abstract Point2D
    返回控制点。
    abstract double
    返回double精度中控制点的X坐标。
    abstract double
    返回double精度中控制点的Y坐标。
    double
    返回此QuadCurve2D的控制点到连接端点的线的最大距离,即平坦度。
    static double
    getFlatness(double[] coords, int offset)
    返回指定数组中指定索引处存储的控制点所指定的二次曲线的平坦度,即控制点到连接端点的线的最大距离。
    static double
    getFlatness(double x1, double y1, double ctrlx, double ctrly, double x2, double y2)
    返回指定控制点指定的二次曲线的平坦度,即控制点到连接端点的线的最大距离。
    double
    返回此QuadCurve2D的平方平坦度,即控制点到连接端点的线的最大距离。
    static double
    getFlatnessSq(double[] coords, int offset)
    返回指定数组中指定索引处存储的控制点所指定的二次曲线的平方平坦度,即控制点到连接端点的线的最大距离。
    static double
    getFlatnessSq(double x1, double y1, double ctrlx, double ctrly, double x2, double y2)
    返回指定控制点指定的二次曲线的平方平坦度,即控制点到连接端点的线的最大距离。
    abstract Point2D
    getP1()
    返回起始点。
    abstract Point2D
    getP2()
    返回结束点。
    返回一个迭代对象,定义了此QuadCurve2D形状的边界。
    getPathIterator(AffineTransform at, double flatness)
    返回一个迭代对象,定义了此QuadCurve2D的平坦形状的边界。
    abstract double
    getX1()
    返回double精度中起始点的X坐标。
    abstract double
    getX2()
    返回double精度中结束点的X坐标。
    abstract double
    getY1()
    返回double精度中起始点的Y坐标。
    abstract double
    getY2()
    返回double精度中结束点的Y坐标。
    boolean
    intersects(double x, double y, double w, double h)
    测试Shape的内部是否与指定矩形区域的内部相交。
    boolean
    测试Shape的内部是否与指定Rectangle2D的内部相交。
    void
    setCurve(double[] coords, int offset)
    将此QuadCurve2D的端点和控制点的位置设置为指定数组中指定偏移量处的double坐标。
    abstract void
    setCurve(double x1, double y1, double ctrlx, double ctrly, double x2, double y2)
    将此曲线的端点和控制点的位置设置为指定的double坐标。
    void
    setCurve(Point2D[] pts, int offset)
    将此QuadCurve2D的端点和控制点的位置设置为指定数组中指定偏移量处的Point2D对象的坐标。
    void
    setCurve(Point2D p1, Point2D cp, Point2D p2)
    将此QuadCurve2D的端点和控制点的位置设置为指定的Point2D坐标。
    void
    将此QuadCurve2D的端点和控制点的位置设置为指定QuadCurve2D中的端点和控制点的位置相同。
    static int
    solveQuadratic(double[] eqn)
    解决eqn数组中系数的二次方程,并将非复根放回同一数组,返回根的数量。
    static int
    solveQuadratic(double[] eqn, double[] res)
    解决eqn数组中系数的二次方程,并将非复根放入res数组,返回根的数量。
    static void
    subdivide(double[] src, int srcoff, double[] left, int leftoff, double[] right, int rightoff)
    src数组中存储的坐标指定的二次曲线细分为两个结果数组中的两个细分曲线。
    void
    细分此QuadCurve2D并将结果的两个细分曲线存储到leftright曲线参数中。
    static void
    细分由src参数指定的二次曲线,并将结果的两个细分曲线存储到leftright曲线参数中。

    Methods declared in class java.lang.Object

    equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • QuadCurve2D

      protected QuadCurve2D()
      这是一个抽象类,不能直接实例化。有特定类型的实现子类可用于实例化,并提供多种格式来存储满足下面各种访问器方法所需的信息。
      自从:
      1.2
      参见:
  • Method Details

    • getX1

      public abstract double getX1()
      返回double精度中起始点的X坐标。
      返回:
      起始点的X坐标。
      自从:
      1.2
    • getY1

      public abstract double getY1()
      返回double精度中起始点的Y坐标。
      返回:
      起始点的Y坐标。
      自从:
      1.2
    • getP1

      public abstract Point2D getP1()
      返回起始点。
      返回:
      一个Point2D,即此QuadCurve2D的起始点。
      自从:
      1.2
    • getCtrlX

      public abstract double getCtrlX()
      返回double精度中控制点的X坐标。
      返回:
      控制点的X坐标
      自从:
      1.2
    • getCtrlY

      public abstract double getCtrlY()
      返回double精度中控制点的Y坐标。
      返回:
      控制点的Y坐标。
      自从:
      1.2
    • getCtrlPt

      public abstract Point2D getCtrlPt()
      返回控制点。
      返回:
      一个Point2D,即此Point2D的控制点。
      自从:
      1.2
    • getX2

      public abstract double getX2()
      返回double精度中结束点的X坐标。
      返回:
      结束点的x坐标。
      自从:
      1.2
    • getY2

      public abstract double getY2()
      返回double精度中结束点的Y坐标。
      返回:
      结束点的Y坐标。
      自从:
      1.2
    • getP2

      public abstract Point2D getP2()
      返回结束点。
      返回:
      一个Point对象,即此Point2D的结束点。
      自从:
      1.2
    • setCurve

      public abstract void setCurve(double x1, double y1, double ctrlx, double ctrly, double x2, double y2)
      将此曲线的端点和控制点的位置设置为指定的double坐标。
      参数:
      x1 - 起始点的X坐标
      y1 - 起始点的Y坐标
      ctrlx - 控制点的X坐标
      ctrly - 控制点的Y坐标
      x2 - 结束点的X坐标
      y2 - 结束点的Y坐标
      自从:
      1.2
    • setCurve

      public void setCurve(double[] coords, int offset)
      将此QuadCurve2D的端点和控制点的位置设置为指定数组中指定偏移量处的double坐标。
      参数:
      coords - 包含坐标值的数组
      offset - 从数组中开始获取坐标值并将其分配给此QuadCurve2D的索引
      自从:
      1.2
    • setCurve

      public void setCurve(Point2D p1, Point2D cp, Point2D p2)
      将此QuadCurve2D的端点和控制点的位置设置为指定Point2D坐标。
      参数:
      p1 - 起始点
      cp - 控制点
      p2 - 结束点
      自从:
      1.2
    • setCurve

      public void setCurve(Point2D[] pts, int offset)
      将此QuadCurve2D的端点和控制点的位置设置为指定数组中指定偏移量处的Point2D对象的坐标。
      参数:
      pts - 包含定义坐标值的Point2D数组
      offset - 从中开始获取坐标值并将其分配给此QuadCurve2Dpts数组中的索引
      自版本:
      1.2
    • setCurve

      public void setCurve(QuadCurve2D c)
      将此QuadCurve2D的端点和控制点位置设置为指定QuadCurve2D中的位置。
      参数:
      c - 指定的QuadCurve2D
      自版本:
      1.2
    • getFlatnessSq

      public static double getFlatnessSq(double x1, double y1, double ctrlx, double ctrly, double x2, double y2)
      返回由指定控制点指定的二次曲线的平坦度的平方,或控制点到连接端点的线的最大距离。
      参数:
      x1 - 起始点的X坐标
      y1 - 起始点的Y坐标
      ctrlx - 控制点的X坐标
      ctrly - 控制点的Y坐标
      x2 - 结束点的X坐标
      y2 - 结束点的Y坐标
      返回:
      由指定坐标定义的二次曲线的平坦度的平方。
      自版本:
      1.2
    • getFlatness

      public static double getFlatness(double x1, double y1, double ctrlx, double ctrly, double x2, double y2)
      返回由指定控制点指定的二次曲线的平坦度,或控制点到连接端点的线的最大距离。
      参数:
      x1 - 起始点的X坐标
      y1 - 起始点的Y坐标
      ctrlx - 控制点的X坐标
      ctrly - 控制点的Y坐标
      x2 - 结束点的X坐标
      y2 - 结束点的Y坐标
      返回:
      由指定坐标定义的二次曲线的平坦度。
      自版本:
      1.2
    • getFlatnessSq

      public static double getFlatnessSq(double[] coords, int offset)
      返回由指定数组中指定索引处存储的控制点指定的二次曲线的平坦度的平方,或控制点到连接端点的线的最大距离。
      参数:
      coords - 包含坐标值的数组
      offset - 从中开始获取数组值的coords数组中的索引
      返回:
      由指定数组中指定索引处的值定义的二次曲线的平坦度。
      自版本:
      1.2
    • getFlatness

      public static double getFlatness(double[] coords, int offset)
      返回由指定数组中指定索引处存储的控制点指定的二次曲线的平坦度,或控制点到连接端点的线的最大距离。
      参数:
      coords - 包含坐标值的数组
      offset - 从中开始获取坐标值的coords数组中的索引
      返回:
      由指定数组中指定偏移量处定义的二次曲线的平坦度。
      自版本:
      1.2
    • getFlatnessSq

      public double getFlatnessSq()
      返回此QuadCurve2D的平坦度的平方,或控制点到连接端点的线的最大距离。
      返回:
      QuadCurve2D的平坦度的平方。
      自版本:
      1.2
    • getFlatness

      public double getFlatness()
      返回此QuadCurve2D的平坦度,或控制点到连接端点的线的最大距离。
      返回:
      QuadCurve2D的平坦度。
      自版本:
      1.2
    • subdivide

      public void subdivide(QuadCurve2D left, QuadCurve2D right)
      将此QuadCurve2D细分,并将结果的两个细分曲线存储到leftright曲线参数中。 leftright对象中的任何一个或两者都可以与此QuadCurve2D相同,或为null
      参数:
      left - 用于存储细分曲线左侧或第一半的QuadCurve2D对象
      right - 用于存储细分曲线右侧或第二半的QuadCurve2D对象
      自版本:
      1.2
    • subdivide

      public static void subdivide(QuadCurve2D src, QuadCurve2D left, QuadCurve2D right)
      细分由src参数指定的二次曲线,并将结果的两个细分曲线存储到leftright曲线参数中。 leftright对象中的任何一个或两者都可以与src对象相同,或为null
      参数:
      src - 要细分的二次曲线
      left - 用于存储细分曲线左侧或第一半的QuadCurve2D对象
      right - 用于存储细分曲线右侧或第二半的QuadCurve2D对象
      自版本:
      1.2
    • subdivide

      public static void subdivide(double[] src, int srcoff, double[] left, int leftoff, double[] right, int rightoff)
      细分由src数组中索引srcoffsrcoff + 5处存储的坐标指定的二次曲线,并将结果的两个细分曲线存储到相应索引处的两个结果数组中。 leftright数组中的任何一个或两者都可以为null,或者是与src数组相同的数组和偏移量的引用。请注意,第一个细分曲线中的最后一个点与第二个细分曲线中的第一个点相同。因此,可以将相同的数组传递给leftright,并使用偏移量,使得rightoff等于leftoff + 4,以避免为此公共点分配额外存储空间。
      参数:
      src - 包含源曲线坐标的数组
      srcoff - 源坐标数组中6个源坐标的开始偏移量
      left - 用于存储细分曲线左侧坐标的数组
      leftoff - 存储细分曲线左侧坐标的数组的开始偏移量
      right - 用于存储细分曲线右侧坐标的数组
      rightoff - 存储细分曲线右侧坐标的数组的开始偏移量
      自版本:
      1.2
    • solveQuadratic

      public static int solveQuadratic(double[] eqn)
      解决eqn数组中系数表示的二次方程,并将非复根放回相同数组,返回根的数量。要解决的二次方程由以下方程表示:
           eqn = {C, B, A};
           ax^2 + bx + c = 0
       
      返回值-1用于区分常数方程(可能始终为0或永远不为0)和没有零点的方程。
      参数:
      eqn - 包含二次系数的数组
      返回:
      根的数量,如果方程是常数则返回-1
      自版本:
      1.2
    • solveQuadratic

      public static int solveQuadratic(double[] eqn, double[] res)
      解决eqn数组中系数表示的二次方程,并将非复根放入res数组中,返回根的数量。要解决的二次方程由以下方程表示:
           eqn = {C, B, A};
           ax^2 + bx + c = 0
       
      返回值-1用于区分常数方程(可能始终为0或永远不为0)和没有零点的方程。
      参数:
      eqn - 用于解决二次方程的指定系数数组
      res - 包含解二次方程得到的非复根的数组
      返回:
      根的数量,如果方程是常数则返回-1
      自版本:
      1.3
    • contains

      public boolean contains(double x, double y)
      测试指定坐标是否在Shape的边界内,如内部定义所述。
      在接口中由:
      contains in interface Shape
      参数:
      x - 要测试的指定X坐标
      y - 要测试的指定Y坐标
      返回:
      如果指定坐标在Shape的边界内,则返回true;否则返回false
      自版本:
      1.2
    • contains

      public boolean contains(Point2D p)
      测试指定的Point2D是否在Shape的边界内,如内部定义所述。
      在接口中由:
      contains in interface Shape
      参数:
      p - 要测试的指定Point2D
      返回:
      如果指定的Point2DShape的边界内,则返回true;否则返回false
      自版本:
      1.2
    • intersects

      public boolean intersects(double x, double y, double w, double h)
      测试Shape的内部是否与指定的矩形区域的内部相交。如果任何点同时包含在Shape的内部和指定的矩形区域内,则认为矩形区域与Shape相交。

      Shape.intersects()方法允许Shape实现在以下情况下保守地返回true

      • 矩形区域和Shape相交的可能性很高,但
      • 准确确定此交集的计算代价过高。
      这意味着对于某些Shape,即使矩形区域与Shape不相交,此方法可能返回true。与大多数Shape对象相比,Area类执行更准确的几何交集计算,因此如果需要更精确的答案,则可以使用该类。
      指定者:
      intersects 在接口 Shape
      参数:
      x - 指定矩形区域左上角的X坐标
      y - 指定矩形区域左上角的Y坐标
      w - 指定矩形区域的宽度
      h - 指定矩形区域的高度
      返回值:
      如果Shape的内部与矩形区域的内部相交,或者两者高度可能相交且计算相交的代价太高,则返回true; 否则返回false
      自版本:
      1.2
      参见:
    • intersects

      public boolean intersects(Rectangle2D r)
      测试Shape的内部是否与指定的Rectangle2D的内部相交。当存在高概率Rectangle2DShape相交,但准确确定此交集的计算代价过高时,Shape.intersects()方法允许Shape实现保守地返回true
      • 即使Rectangle2D不与Shape相交,对于某些Shapes,此方法可能返回true
      • 与大多数Shape对象相比,Area类执行更准确的几何相交计算,因此如果需要更精确的答案,则可以使用该类。
      指定者:
      intersects 在接口 Shape
      参数:
      r - 指定的Rectangle2D
      返回值:
      如果Shape的内部与指定的Rectangle2D的内部相交,或者两者高度可能相交且计算相交的代价太高,则返回true; 否则返回false
      自版本:
      1.2
      参见:
    • contains

      public boolean contains(double x, double y, double w, double h)
      测试Shape的内部是否完全包含指定的矩形区域。所有位于矩形区域内部的坐标必须位于整个矩形区域内部的Shape中才被视为包含在Shape内部。

      Shape.contains()方法允许Shape实现在以下情况下保守地返回false

      • intersect方法返回true
      • 确定Shape是否完全包含矩形区域的计算代价过高。
      这意味着对于某些Shapes,即使Shape包含矩形区域,此方法可能返回false。与大多数Shape对象相比,Area类执行更准确的几何计算,因此如果需要更精确的答案,则可以使用该类。
      指定者:
      contains 在接口 Shape
      参数:
      x - 指定矩形区域左上角的X坐标
      y - 指定矩形区域左上角的Y坐标
      w - 指定矩形区域的宽度
      h - 指定矩形区域的高度
      返回值:
      如果Shape的内部完全包含指定的矩形区域,则返回true; 否则返回false,或者如果Shape包含矩形区域且intersects方法返回true且包含计算代价过高,则返回false
      自版本:
      1.2
      参见:
    • contains

      public boolean contains(Rectangle2D r)
      测试Shape的内部是否完全包含指定的Rectangle2D。当存在高概率Rectangle2DShape相交,但准确确定此交集的计算代价过高时,Shape.contains()方法允许Shape实现保守地返回false
      • intersect方法返回true
      • 确定Shape是否完全包含Rectangle2D的计算代价过高。
      这意味着对于某些Shapes,即使Shape包含Rectangle2D,此方法可能返回false。与大多数Shape对象相比,Area类执行更准确的几何计算,因此如果需要更精确的答案,则可以使用该类。
      指定者:
      contains 在接口 Shape
      参数:
      r - 指定的Rectangle2D
      返回值:
      如果Shape的内部完全包含Rectangle2D,则返回true; 否则返回false,或者如果Shape包含Rectangle2Dintersects方法返回true且包含计算代价过高,则返回false
      自版本:
      1.2
      参见:
    • getBounds2D

      public Rectangle2D getBounds2D()
      返回Shape的边界框的高精度和更准确的值,而不是getBounds方法。请注意,返回的Rectangle2D不一定是包围Shape的最小边界框,只是Shape完全位于指示的Rectangle2D内部。由此方法返回的边界框通常比getBounds方法返回的边界框更紧凑,并且不会因为溢出问题而失败,因为返回值可以是使用双精度值存储维度的Rectangle2D的实例。

      请注意,内部定义的定义可能导致shape的定义轮廓上的点可能不被视为包含在返回的bounds对象中,但只有在这些点也不被视为包含在原始shape中的情况下才是如此。

      如果point根据contains(point)方法在shape内部,则根据boundscontains(point)方法,它必须在返回的Rectangle2D边界对象内部。具体来说:

      shape.contains(p)要求bounds.contains(p)

      如果point不在shape内部,则它可能仍包含在bounds对象中:

      bounds.contains(p)不意味着shape.contains(p)

      指定者:
      getBounds2D 在接口 Shape
      返回值:
      一个高精度的Rectangle2D实例,用于表示Shape的边界框。
      自版本:
      1.2
      参见:
    • getBounds

      public Rectangle getBounds()
      返回一个完全包围Shape的整数Rectangle。请注意,返回的Rectangle不一定是包围Shape的最小边界框,只是Shape完全位于指示的Rectangle内部。如果Shape超出整数数据类型的有限范围,则返回的Rectangle也可能无法完全包围Shape。由于其更大的表示灵活性,getBounds2D方法通常返回更紧凑的边界框。

      请注意,内部定义的定义可能导致shape的定义轮廓上的点可能不被视为包含在返回的bounds对象中,但只有在这些点也不被视为包含在原始shape中的情况下才是如此。

      如果point根据contains(point)方法在shape内部,则根据boundscontains(point)方法,它必须在返回的Rectangle边界对象内部。具体来说:

      shape.contains(x,y)要求bounds.contains(x,y)

      如果point不在shape内部,则它可能仍包含在bounds对象中:

      bounds.contains(x,y)不意味着shape.contains(x,y)

      指定者:
      getBounds 在接口 Shape
      返回值:
      一个整数Rectangle,完全包围了Shape
      自版本:
      1.2
      参见:
    • getPathIterator

      public PathIterator getPathIterator(AffineTransform at)
      返回一个迭代对象,定义了此QuadCurve2D形状的边界。此类的迭代器不是多线程安全的,这意味着这个QuadCurve2D类不能保证对该对象的几何形状的修改不会影响已经在进行中的任何几何形状的迭代。
      指定者:
      getPathIterator 在接口 Shape
      参数:
      at - 可选的应用于形状边界的AffineTransform
      返回值:
      一个PathIterator对象,定义了形状的边界。
      自版本:
      1.2
    • getPathIterator

      public PathIterator getPathIterator(AffineTransform at, double flatness)
      返回一个迭代对象,定义了此QuadCurve2D的平坦形状的边界。此类的迭代器不是多线程安全的,这意味着这个QuadCurve2D类不能保证对该对象的几何形状的修改不会影响已经在进行中的任何几何形状的迭代。
      指定者:
      getPathIterator 在接口 Shape
      参数:
      at - 可选的应用于形状边界的AffineTransform
      flatness - 在将此曲线的控制点细分为直线连接曲线端点之前,这些控制点可以与连接曲线端点的线的最大距离。
      返回值:
      一个PathIterator对象,定义了形状的平坦边界。
      自版本:
      1.2
    • clone

      public Object clone()
      创建一个与此对象相同类和相同内容的新对象。
      覆盖:
      clone 在类 Object
      返回值:
      此实例的克隆。
      抛出:
      OutOfMemoryError - 如果内存不足。
      自版本:
      1.2
      参见: