Module  java.desktop
软件包  java.awt.geom

Class QuadCurve2D

  • All Implemented Interfaces:
    ShapeCloneable
    已知直接子类:
    QuadCurve2D.DoubleQuadCurve2D.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 描述
      static class  QuadCurve2D.Double
      double坐标指定的二次参数曲线段。
      static class  QuadCurve2D.Float
      float协调指定的二次参数曲线段。
    • 构造方法摘要

      构造方法  
      Modifier Constructor 描述
      protected QuadCurve2D​()
      这是一个无法直接实例化的抽象类。
    • 方法摘要

      所有方法  静态方法  接口方法  抽象方法  具体的方法 
      Modifier and Type 方法 描述
      Object clone​()
      创建与该对象相同的类和新内容相同的新对象。
      boolean contains​(double x, double y)
      测试指定的坐标是否在 Shape的边界内,如 definition of insideness所述
      boolean contains​(double x, double y, double w, double h)
      测试 Shape的内部 Shape完全包含指定的矩形区域。
      boolean contains​(Point2D p)
      测试指定Point2D是的边界内Shape ,如所描述的definition of insideness
      boolean contains​(Rectangle2D r)
      测试 Shape的内部 Shape全部包含指定的 Rectangle2D
      Rectangle getBounds​()
      返回一个整数Rectangle完全包围Shape
      abstract Point2D getCtrlPt​()
      返回控制点。
      abstract double getCtrlX​()
      double精度返回控制点的X坐标。
      abstract double getCtrlY​()
      double精度返回控制点的Y坐标。
      double getFlatness​()
      返回 QuadCurve2D的控制点与连接终点的线的平坦度或最大距离。
      static double getFlatness​(double[] coords, int offset)
      返回控制点与连接终点的线的平坦度或最大距离,由指定的数组中存储在指示索引处的控制点指定的二次曲线。
      static double getFlatness​(double x1, double y1, double ctrlx, double ctrly, double x2, double y2)
      返回由指示的控制点指定的二次曲线的平滑度或控制点与连接端点的线的最大距离。
      double getFlatnessSq​()
      返回这个 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​()
      返回终点。
      PathIterator getPathIterator​(AffineTransform at)
      返回定义 QuadCurve2D形状边界的迭代对象。
      PathIterator 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 intersects​(Rectangle2D r)
      测试 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 setCurve​(QuadCurve2D c)
      将此 QuadCurve2D的终点和控制点的位置设置为与指定的 QuadCurve2D
      static int solveQuadratic​(double[] eqn)
      eqn其系数在 eqn数组中,并将非复数根返回到同一个数组中,返回根数。
      static int solveQuadratic​(double[] eqn, double[] res)
      eqn其系数在 eqn数组中的二次方,并将非复数根放入 res数组中,返回根数。
      static void subdivide​(double[] src, int srcoff, double[] left, int leftoff, double[] right, int rightoff)
      细分由存储在 src阵列中的坐标指定的二次曲线,索引为 srcoffsrcoff + 5,并将生成的两个细分曲线存储在相应索引处的两个结果数组中。
      void subdivide​(QuadCurve2D left, QuadCurve2D right)
      细分此 QuadCurve2D ,并将生成的两个细分曲线存储到 leftright曲线参数中。
      static void subdivide​(QuadCurve2D src, QuadCurve2D left, QuadCurve2D right)
      细分由 src参数指定的二次曲线,并将生成的两个细分曲线存储到 leftright曲线参数中。
    • 构造方法详细信息

      • QuadCurve2D

        protected QuadCurve2D​()
        这是一个无法直接实例化的抽象类。 类型特定的实现子类可用于实例化,并提供了许多格式,用于存储满足以下各种存取方法所必需的信息。
        从以下版本开始:
        1.2
        另请参见:
        QuadCurve2D.FloatQuadCurve2D.Double
    • 方法详细信息

      • getX1

        public abstract double getX1​()
        double的精度返回起始点的X坐标。
        结果
        起始点的X坐标。
        从以下版本开始:
        1.2
      • getY1

        public abstract double getY1​()
        返回起始点的Y坐标在 double精度。
        结果
        起始点的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 - x1的X坐标
        y1 - 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 - 索引为 pts ,从中开始获取坐标值并将其分配给此 QuadCurve2D
        从以下版本开始:
        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 - x1的X坐标
        y1 - 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 - x1的X坐标
        y1 - y1的Y坐标
        ctrlx - 控制点的X坐标
        ctrly - 控制点的Y坐标
        x2 - 终点的X坐标
        y2 - 终点的Y坐标
        结果
        由指定坐标定义的二次曲线的平坦度。
        从以下版本开始:
        1.2
      • getFlatnessSq

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

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

        public double getFlatnessSq​()
        返回 QuadCurve2D的平坦度或控制点与连接终点的线的最大距离的 QuadCurve2D
        结果
        该平方度的平方度这 QuadCurve2D
        从以下版本开始:
        1.2
      • getFlatness

        public double getFlatness​()
        返回 QuadCurve2D度或控制点与连接端点的线的最大距离。
        结果
        平坦度这 QuadCurve2D
        从以下版本开始:
        1.2
      • subdivide

        public void subdivide​(QuadCurve2D left,
                              QuadCurve2D right)
        细分此QuadCurve2D ,并将所得的两条细分曲线存储到leftright曲线参数中。 leftright对象中的任何一个或两者可以与此QuadCurve2Dnull相同。
        参数
        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 - 偏移到 leftoff左坐标开头的数组
        right - 用于存储细分曲线后半部分坐标的数组
        rightoff - 偏移到数组的开头的6个正确的坐标
        从以下版本开始:
        1.2
      • solveQuadratic

        public static int solveQuadratic​(double[] eqn)
        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其系数在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的边界内,如 definition of insideness所述
        Specified by:
        contains在接口 Shape
        参数
        x - 要测试的指定X坐标
        y - 要测试的指定Y坐标
        结果
        true如果指定的坐标在Shape边界内; 否则为false
        从以下版本开始:
        1.2
      • contains

        public boolean contains​(Point2D p)
        测试指定Point2D是的边界内Shape ,如所描述的definition of insideness
        Specified by:
        contains在接口 Shape
        参数
        p - 要测试的指定的 Point2D
        结果
        true如果指定Point2D是的边界内Shape ; 否则为false
        从以下版本开始:
        1.2
      • intersects

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

        Shape.intersects()方法允许Shape实现保守返回true当:

        • 矩形区域和Shape相交的概率很高,但是
        • 准确地确定这个交叉点的计算是非常昂贵的。
        这意味着对于某些Shapes这种方法也可能返回true即使矩形区域没有相交Shape Area类比大多数Shape对象执行几何交集的更精确的计算,因此如果需要更精确的答案,则可以使用它。
        Specified by:
        intersects接口 Shape
        参数
        x - 指定矩形区域左上角的X坐标
        y - 指定矩形区域左上角的Y坐标
        w - 指定矩形区域的宽度
        h - 指定矩形区域的高度
        结果
        true如果Shape的内部和矩形区域的内部相交,或者两者都很可能相交,并且交叉点计算将太昂贵执行; false否则。
        从以下版本开始:
        1.2
        另请参见:
        Area
      • intersects

        public boolean intersects​(Rectangle2D r)
        测试Shape的内部是否与指定的内部相交Rectangle2D Shape.intersects()方法允许Shape实现保守返回true时:
        • Rectangle2DShape相交的概率很高,但是
        • 准确地确定这个交叉点的计算是非常昂贵的。
        这意味着对于一些Shapes这个方法可能会返回true即使Rectangle2D不与Shape相交。 Area类比大多数Shape对象执行更准确的几何交集计算,因此如果需要更精确的答案,则可以使用它。
        Specified by:
        intersects在接口 Shape
        参数
        r - 指定的 Rectangle2D
        结果
        true如果Shape的内部和指定的Rectangle2D的内部相交,或者两者都很可能相交,并且交叉点计算将太昂贵执行; false否则。
        从以下版本开始:
        1.2
        另请参见:
        Shape.intersects(double, double, double, double)
      • contains

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

        Shape.contains()方法允许Shape实现保守返回false当:

        • intersect方法返回true
        • 确定Shape是否完全包含矩形区域的计算是非常昂贵的。
        这意味着对于Shapes这个方法可能会返回false即使Shape包含矩形区域。 Area类执行比大多数Shape对象更准确的几何计算,因此如果需要更精确的答案,则可以使用它。
        Specified by:
        contains在接口 Shape
        参数
        x - 指定矩形区域左上角的X坐标
        y - 指定矩形区域左上角的Y坐标
        w - 指定矩形区域的宽度
        h - 指定矩形区域的高度
        结果
        true如果内部的Shape完全包含指定的矩形区域; false否则,或者如果Shape包含矩形区域,并且intersects方法返回true ,并且遏制计算将太昂贵执行。
        从以下版本开始:
        1.2
        另请参见:
        AreaShape.intersects(double, double, double, double)
      • contains

        public boolean contains​(Rectangle2D r)
        测试Shape的内部Shape完全包含指定的Rectangle2D Shape.contains()方法允许Shape实现保守返回false当:
        • intersect方法返回true
        • 计算确定Shape是否完全包含Rectangle2D是非常昂贵的。
        这意味着对于某些Shapes这种方法也可能返回false即使Shape包含Rectangle2D Area类比大多数Shape对象执行更准确的几何计算,因此如果需要更精确的答案,则可以使用它。
        Specified by:
        contains在接口 Shape
        参数
        r - 指定的 Rectangle2D
        结果
        true如果内部的Shape完全包含Rectangle2D ; false否则或如果Shape包含Rectangle2Dintersects方法返回true并且包含计算将太昂贵执行。
        从以下版本开始:
        1.2
        另请参见:
        Shape.contains(double, double, double, double)
      • getBounds

        public Rectangle getBounds​()
        返回一个整数Rectangle完全包围Shape 请注意,不保证返回的Rectangle是封闭的最小边界框Shape ,只表示Shape完全在指定的范围内Rectangle 如果Shape溢出整数数据类型的有限范围,则返回的Rectangle也可能无法完全包围Shape getBounds2D方法通常返回更严格的边界框,因为它具有更大的表示灵活性。

        请注意, definition of insideness可能导致在返回的bounds对象中不包含shape定义轮廓上的点的情况,但仅在这些点也未被包含在原始shape

        如果point是内部shape根据contains(point)方法,那么它必须是内部返回Rectangle界限根据对象contains(point)所述的方法bounds 特别:

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

        如果一个point不在shape ,那么它可能仍然包含在bounds对象中:

        bounds.contains(x,y)并不表示shape.contains(x,y)

        Specified by:
        getBounds在接口 Shape
        结果
        整数 Rectangle完全包围了 Shape
        从以下版本开始:
        1.2
        另请参见:
        Shape.getBounds2D()
      • getPathIterator

        public PathIterator getPathIterator​(AffineTransform at)
        返回定义QuadCurve2D形状边界的迭代对象。 此类的迭代器不是多线程安全的,这意味着此QuadCurve2D类不保证对此QuadCurve2D对象的几何的修改不会影响已处理的该几何的任何迭代。
        Specified by:
        getPathIterator在接口 Shape
        参数
        at - 可选的AffineTransform适用于形状边界
        结果
        一个定义形状边界的PathIterator对象。
        从以下版本开始:
        1.2
      • getPathIterator

        public PathIterator getPathIterator​(AffineTransform at,
                                            double flatness)
        返回定义此QuadCurve2D的展平形状边界的迭代对象。 此类的迭代器不是多线程安全的,这意味着此QuadCurve2D类不保证对此QuadCurve2D对象的几何的修改不会影响已经在处理的该几何的任何迭代。
        Specified by:
        getPathIterator在接口 Shape
        参数
        at - 可选的 AffineTransform适用于形状的边界
        flatness - 分割曲线的控制点相对于连接该曲线的端点的线的最大距离,该曲线由连接端点的直线代替。
        结果
        一个 PathIterator对象,定义了形状的平坦边界。
        从以下版本开始:
        1.2
      • clone

        public Object clone​()
        创建与该对象相同的类和新内容相同的新对象。
        重写:
        cloneObject
        结果
        这个实例的一个克隆。
        异常
        OutOfMemoryError - 如果没有足够的内存
        从以下版本开始:
        1.2
        另请参见:
        Cloneable