模块 java.desktop

类 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) 坐标空间中的二次参数曲线段。

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

自从:
1.2
  • 内部类总结

    内部类
    修饰符和类型
    描述
    static class 
    double 坐标指定的二次参数曲线段。
    static class 
    float 坐标指定的二次参数曲线段。
  • 构造方法总结

    构造方法
    修饰符
    构造方法
    描述
    protected
    这是一个不能直接实例化的抽象类。
  • 方法总结

    修饰符和类型
    方法
    描述
    创建一个与此对象具有相同类和相同内容的新对象。
    boolean
    contains(double x, double y)
    测试指定坐标是否在 Shape 的边界内,如 definition of insideness 所述。
    boolean
    contains(double x, double y, double w, double h)
    测试 Shape 的内部是否完全包含指定的矩形区域。
    boolean
    测试指定的 Point2D 是否在 Shape 的边界内,如 definition of insideness 所述。
    boolean
    测试 Shape 的内部是否完全包含指定的 Rectangle2D
    返回一个整数 Rectangle 完全包围 Shape
    返回 ShapegetBounds 方法更高精度和更准确的边界框。
    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
    返回起点。
    abstract Point2D
    返回终点。
    返回定义此 QuadCurve2D 形状边界的迭代对象。
    getPathIterator(AffineTransform at, double flatness)
    返回定义此 QuadCurve2D 的展平形状边界的迭代对象。
    abstract double
    double 精度返回起点的 X 坐标。
    abstract double
    double 精度返回终点的 X 坐标。
    abstract double
    double 精度返回起点的 Y 坐标。
    abstract double
    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
    将此 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数组中索引srcoffsrcoff+5处的坐标指定的二次曲线,并将得到的两条细分曲线存储到相应索引处的两个结果数组中。
    void
    细分这个QuadCurve2D并将得到的两条细分曲线存储到leftright曲线参数中。
    static void
    细分由src参数指定的二次曲线,并将得到的两条细分曲线存储到leftright曲线参数中。

    在类 java.lang.Object 中声明的方法

    equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • 构造方法详细信息

    • QuadCurve2D

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

    • 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()
      返回控制点。
      返回:
      a 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 - 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 - 起点的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 对象之一或两者可以与此 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 - 左边 6 个坐标开始的数组偏移量
      right - 用于存储细分曲线后半部分坐标的数组
      rightoff - 右边 6 个坐标开始的数组偏移量
      自从:
      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 的边界内,如 definition of insideness 所述。
      指定者:
      contains 在接口 Shape
      参数:
      x - 指定要测试的X坐标
      y - 指定待测Y坐标
      返回:
      true 如果指定坐标在 Shape 边界内; false否则。
      自从:
      1.2
    • contains

      public boolean contains(Point2D  p)
      测试指定的 Point2D 是否在 Shape 的边界内,如 definition of insideness 所述。
      指定者:
      contains 在接口 Shape
      参数:
      p - 要测试的指定 Point2D
      返回:
      true 如果指定的 Point2DShape 的边界内; 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 对象更准确的几何交集计算,因此如果需要更精确的答案可以使用。
      指定者:
      intersects 在接口 Shape
      参数:
      x - 指定矩形区域左上角的X坐标
      y - 指定矩形区域左上角的Y坐标
      w - 指定矩形区域的宽度
      h - 指定矩形区域的高度
      返回:
      true 如果 Shape 的内部与矩形区域的内部相交,或者两者极有可能相交,并且相交计算的执行成本太高; false否则。
      自从:
      1.2
      参见:
    • intersects

      public boolean intersects(Rectangle2D  r)
      测试 Shape 的内部是否与指定的 Rectangle2D 的内部相交。 Shape.intersects() 方法允许 Shape 实现在以下情况下保守地返回 true
      • Rectangle2DShape 相交的可能性很高,但是
      • 准确确定该交叉点的计算非常昂贵。
      这意味着对于某些 Shapes 此方法可能返回 true 即使 Rectangle2D 不与 Shape 相交。 Area 类执行比大多数 Shape 对象更准确的几何交集计算,因此如果需要更精确的答案可以使用。
      指定者:
      intersects 在接口 Shape
      参数:
      r - 指定的 Rectangle2D
      返回:
      true 如果 Shape 的内部与指定的 Rectangle2D 的内部相交,或者两者极有可能相交,并且相交计算的执行成本太高; 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 此方法可能返回 false 即使 Shape 包含矩形区域。 Area 类执行比大多数 Shape 对象更精确的几何计算,因此可以在需要更精确的答案时使用。
      指定者:
      contains 在接口 Shape
      参数:
      x - 指定矩形区域左上角的X坐标
      y - 指定矩形区域左上角的Y坐标
      w - 指定矩形区域的宽度
      h - 指定矩形区域的高度
      返回:
      true 如果 Shape 的内部完全包含指定的矩形区域; false 否则,或者,如果 Shape 包含矩形区域并且 intersects 方法返回 true 并且包含计算将过于昂贵而无法执行。
      自从:
      1.2
      参见:
    • contains

      public boolean contains(Rectangle2D  r)
      测试 Shape 的内部是否完全包含指定的 Rectangle2DShape.contains() 方法允许 Shape 实现在以下情况下保守地返回 false
      • intersect 方法返回 true
      • 确定 Shape 是否完全包含 Rectangle2D 的计算非常昂贵。
      这意味着对于某些 Shapes 此方法可能返回 false 即使 Shape 包含 Rectangle2DArea 类执行比大多数 Shape 对象更精确的几何计算,因此可以在需要更精确的答案时使用。
      指定者:
      contains 在接口 Shape
      参数:
      r - 指定的 Rectangle2D
      返回:
      true 如果 Shape 的内部完全包含 Rectangle2Dfalse 否则,或者,如果 Shape 包含 Rectangle2D 并且 intersects 方法返回 true 并且包含计算的执行成本太高。
      自从:
      1.2
      参见:
    • getBounds2D

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

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

      如果根据 contains(point) 方法 pointshape 内部,那么根据 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()
      返回一个整数 Rectangle 完全包围 Shape 。请注意,不能保证返回的 Rectangle 是包围 Shape 的最小边界框,只能保证 Shape 完全位于指示的 Rectangle 内。如果 Shape 溢出整数数据类型的有限范围,则返回的 Rectangle 也可能无法完全包围 ShapegetBounds2D 方法通常会返回更紧密的边界框,因为它在表示方掩码有更大的灵活性。

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

      如果根据 contains(point) 方法 pointshape 内部,那么根据 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 类不保证对此 QuadCurve2D 对象的几何图形的修改不会影响已在进行中的该几何图形的任何迭代。
      指定者:
      getPathIterator 在接口 Shape
      参数:
      at - 可选的 AffineTransform 应用于形状边界
      返回:
      定义形状边界的 PathIterator 对象。
      自从:
      1.2
    • getPathIterator

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

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