JavaTM 2 Platform
Standard Ed. 5.0

java.awt.geom
类 CubicCurve2D

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

public abstract class CubicCurve2D
extends Object
implements Shape, Cloneable

CubicCurve2D 类定义 (x, y) 坐标空间内的三次参数曲线段。

此类是存储 2D 三次曲线段的所有对象的惟一抽象超类。坐标的实际存储表示形式要靠子类来完成。


嵌套类摘要
static class CubicCurve2D.Double
          使用 double 坐标指定的三次参数曲线段。
static class CubicCurve2D.Float
          使用 float 坐标指定的三次参数曲线段。
 
构造方法摘要
protected CubicCurve2D()
          这是一个不可直接实例化的抽象类。
 
方法摘要
 Object clone()
          创建一个与此对象具有相同类的新对象。
 boolean contains(double x, double y)
          测试指定坐标是否位于形状的边界内。
 boolean contains(double x, double y, double w, double h)
          测试形状的内部是否完全包含指定设置的矩形坐标。
 boolean contains(Point2D p)
          测试指定 Point2D 是否在形状的边界内。
 boolean contains(Rectangle2D r)
          测试形状的内部是否完全包含指定的 Rectangle2D
 Rectangle getBounds()
          返回形状的边界框。
abstract  Point2D getCtrlP1()
          返回第一个控制点。
abstract  Point2D getCtrlP2()
          返回第二个控制点。
abstract  double getCtrlX1()
          以 double 精度返回第一个控制点的 X 坐标。
abstract  double getCtrlX2()
          以 double 精度返回第二个控制点的 X 坐标。
abstract  double getCtrlY1()
          以 double 精度返回第一个控制点的 Y 坐标。
abstract  double getCtrlY2()
          以 double 精度返回第二个控制点的 Y 坐标。
 double getFlatness()
          返回此曲线的平面度。
static double getFlatness(double[] coords, int offset)
          返回由控制点(存储在指示数组中的指示索引处)指定的三次曲线的平面度。
static double getFlatness(double x1, double y1, double ctrlx1, double ctrly1, double ctrlx2, double ctrly2, double x2, double y2)
          返回由指示控制点指定的三次曲线的平面度。
 double getFlatnessSq()
          返回此曲线平面度的平方。
static double getFlatnessSq(double[] coords, int offset)
          返回由控制点(存储在指示数组中的指示索引处)指定的三次曲线平面度的平方。
static double getFlatnessSq(double x1, double y1, double ctrlx1, double ctrly1, double ctrlx2, double ctrly2, double x2, double y2)
          返回由指示的控制点指定的三次曲线平面度的平方。
abstract  Point2D getP1()
          返回起始点。
abstract  Point2D getP2()
          返回结束点。
 PathIterator getPathIterator(AffineTransform at)
          返回定义形状边界的迭代对象。
 PathIterator getPathIterator(AffineTransform at, double flatness)
          返回定义变平形状边界的迭代对象。
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)
          测试形状是否与指定设置的矩形坐标的内部相交。
 boolean intersects(Rectangle2D r)
          测试形状是否与指定 Rectangle2D 的内部相交。
 void setCurve(CubicCurve2D c)
          将此曲线端点和控制点的位置设置为与指定的 CubicCurve2D 相同。
 void setCurve(double[] coords, int offset)
          将此曲线端点和控制点的位置设置为指定数组中指定偏移量的 double 坐标。
abstract  void setCurve(double x1, double y1, double ctrlx1, double ctrly1, double ctrlx2, double ctrly2, double x2, double y2)
          将此曲线端点和控制点的位置设置为指定的 double 坐标。
 void setCurve(Point2D[] pts, int offset)
          将此曲线端点和控制点的位置设置为指定数组中指定偏移量的 Point2D 对象的坐标。
 void setCurve(Point2D p1, Point2D cp1, Point2D cp2, Point2D p2)
          将此曲线端点和控制点的位置设置为指定的 Point2D 坐标。
static int solveCubic(double[] eqn)
          解其系数位于 eqn 数组中的三次曲线,并将非复数的根放回该数组,同时返回根数。
static int solveCubic(double[] eqn, double[] res)
          解其系数位于 eqn 数组中的三次曲线,并将非复数的根放入 res 数组,同时返回根数。
 void subdivide(CubicCurve2D left, CubicCurve2D right)
          细分此三次曲线并将得到的两个细分的曲线存储到 left 和 right 两个曲线参数中。
static void subdivide(CubicCurve2D src, CubicCurve2D left, CubicCurve2D right)
          细分由 src 参数指定的三次曲线并将得到的两个细分曲线存储到 leftright 曲线参数中。
static void subdivide(double[] src, int srcoff, double[] left, int leftoff, double[] right, int rightoff)
          细分由存储在 src 数组 srcoff 到 (srcoff + 7) 索引处的坐标指定的三次曲线,并将得到的两个细分曲线存储到所得数组的相应索引中。
 
从类 java.lang.Object 继承的方法
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
从接口 java.awt.Shape 继承的方法
getBounds2D
 

构造方法详细信息

CubicCurve2D

protected CubicCurve2D()
这是一个不可直接实例化的抽象类。特定于类型的实现子类可用于实例化,并提供用于存储满足以下各种访问器方法所需信息的许多格式。

另请参见:
CubicCurve2D.Float, CubicCurve2D.Double
方法详细信息

getX1

public abstract double getX1()
以 double 精度返回起始点的 X 坐标。

返回:
CubicCurve2D 起始点的 X 坐标。

getY1

public abstract double getY1()
以 double 精度返回起始点的 Y 坐标。

返回:
CubicCurve2D 起始点的 Y 坐标。

getP1

public abstract Point2D getP1()
返回起始点。

返回:
作为 CubicCurve2D 起始点的 Point2D

getCtrlX1

public abstract double getCtrlX1()
以 double 精度返回第一个控制点的 X 坐标。

返回:
CubicCurve2D 第一个控制点的 X 坐标。

getCtrlY1

public abstract double getCtrlY1()
以 double 精度返回第一个控制点的 Y 坐标。

返回:
CubicCurve2D 第一个控制点的 Y 坐标。

getCtrlP1

public abstract Point2D getCtrlP1()
返回第一个控制点。

返回:
CubicCurve2D 第一个控制点的 Point2D

getCtrlX2

public abstract double getCtrlX2()
以 double 精度返回第二个控制点的 X 坐标。

返回:
CubicCurve2D 第二个控制点的 X 坐标。

getCtrlY2

public abstract double getCtrlY2()
以 double 精度返回第二个控制点的 Y 坐标。

返回:
CubicCurve2D 第二个控制点的 Y 坐标。

getCtrlP2

public abstract Point2D getCtrlP2()
返回第二个控制点。

返回:
作为 CubicCurve2D 第二个控制点的 Point2D

getX2

public abstract double getX2()
以 double 精度返回结束点的 X 坐标。

返回:
CubicCurve2D 结束点的 X 坐标。

getY2

public abstract double getY2()
以 double 精度返回结束点的 Y 坐标。

返回:
CubicCurve2D 结束点的 Y 坐标。

getP2

public abstract Point2D getP2()
返回结束点。

返回:
作为 CubicCurve2D 结束点的 Point2D

setCurve

public abstract void setCurve(double x1,
                              double y1,
                              double ctrlx1,
                              double ctrly1,
                              double ctrlx2,
                              double ctrly2,
                              double x2,
                              double y2)
将此曲线端点和控制点的位置设置为指定的 double 坐标。

参数:
x1, y1 - 用于设置此 CubicCurve2D 起始点的第一个指定坐标
ctrlx1, ctrly1 - 用于设置此 CubicCurve2D 第一个控制点的第二个指定坐标
ctrlx2, ctrly2 - 用于设置此 CubicCurve2D 第二个控制点的第三个指定坐标
x2, y2 - 用于设置此 CubicCurve2D 结束点的第四个指定坐标

setCurve

public void setCurve(double[] coords,
                     int offset)
将此曲线端点和控制点的位置设置为指定数组中指定偏移量的 double 坐标。

参数:
coords - 包含坐标的 double 数组
offset - coords 的索引,从该索引处开始将此曲线端点和控制点设置为 coords 中包含的坐标

setCurve

public void setCurve(Point2D p1,
                     Point2D cp1,
                     Point2D cp2,
                     Point2D p2)
将此曲线端点和控制点的位置设置为指定的 Point2D 坐标。

参数:
p1 - 用于设置此曲线起始点的第一个指定的 Point2D
cp1 - 用于设置此曲线第一个控制点的第二个指定的 Point2D
cp2 - 用于设置此曲线第二个控制点的第三个指定的 Point2D
p2 - 用于设置此曲线结束点的第四个指定的 Point2D

setCurve

public void setCurve(Point2D[] pts,
                     int offset)
将此曲线端点和控制点的位置设置为指定数组中指定偏移量的 Point2D 对象的坐标。

参数:
pts - Point2D 对象的数组
offset - pts 的索引,从该索引处开始将此曲线端点和控制点设置为 pts 中包含的点

setCurve

public void setCurve(CubicCurve2D c)
将此曲线端点和控制点的位置设置为与指定的 CubicCurve2D 相同。

参数:
c - 指定的 CubicCurve2D

getFlatnessSq

public static double getFlatnessSq(double x1,
                                   double y1,
                                   double ctrlx1,
                                   double ctrly1,
                                   double ctrlx2,
                                   double ctrly2,
                                   double x2,
                                   double y2)
返回由指示的控制点指定的三次曲线平面度的平方。平面度是控制点到连接端点的线之间的最大距离。

参数:
x1, y1 - 指定 CubicCurve2D 起始点的第一个指定的坐标
ctrlx1, ctrly1 - 指定 CubicCurve2D 第一个控制点的第二个指定的坐标
ctrlx2, ctrly2 - 指定 CubicCurve2D 第二个控制点的第三个指定的坐标
x2, y2 - 指定 CubicCurve2D 结束点的第四个指定的坐标
返回:
由指定坐标所表示的 CubicCurve2D 平面度的平方。

getFlatness

public static double getFlatness(double x1,
                                 double y1,
                                 double ctrlx1,
                                 double ctrly1,
                                 double ctrlx2,
                                 double ctrly2,
                                 double x2,
                                 double y2)
返回由指示控制点指定的三次曲线的平面度。平面度是控制点到连接端点的线之间的最大距离。

参数:
x1, y1 - 指定 CubicCurve2D 起始点的第一个指定的坐标
ctrlx1, ctrly1 - 指定 CubicCurve2D 第一个控制点的第二个指定的坐标
ctrlx2, ctrly2 - 指定 CubicCurve2D 第二个控制点的第三个指定的坐标
x2, y2 - 指定 CubicCurve2D 结束点的第四个指定的坐标
返回:
由指定坐标所表示的 CubicCurve2D 的平面度。

getFlatnessSq

public static double getFlatnessSq(double[] coords,
                                   int offset)
返回由控制点(存储在指示数组中的指示索引处)指定的三次曲线平面度的平方。平面度是控制点到连接端点的线之间的最大距离。

参数:
coords - 包含坐标的数组
offset - coords 的索引,从该索引处开始将此曲线端点和控制点设置为 coords 中包含的坐标
返回:
coords 中指定偏移量处的坐标指定的 CubicCurve2D 平面度的平方。

getFlatness

public static double getFlatness(double[] coords,
                                 int offset)
返回由控制点(存储在指示数组中的指示索引处)指定的三次曲线的平面度。平面度是控制点到连接端点的线之间的最大距离。

参数:
coords - 包含坐标的数组
offset - coords 的索引,从该索引处开始将此曲线端点和控制点设置为 coords 中包含的坐标
返回:
coords 中指定偏移量处的坐标指定的 CubicCurve2D 的平面度。

getFlatnessSq

public double getFlatnessSq()
返回此曲线平面度的平方。平面度是控制点到连接端点的线之间的最大距离。

返回:
此曲线平面度的平方。

getFlatness

public double getFlatness()
返回此曲线的平面度。平面度是控制点到连接端点的线之间的最大距离。

返回:
此曲线的平面度。

subdivide

public void subdivide(CubicCurve2D left,
                      CubicCurve2D right)
细分此三次曲线并将得到的两个细分的曲线存储到 left 和 right 两个曲线参数中。left 和 right 两个对象中的任何一个或两者都可以与此对象相同,也可以为 null。

参数:
left - 用于存储左边一半或第一半细分曲线的三次曲线对象
right - 用于存储右边一半或第二半细分曲线的三次曲线对象

subdivide

public static void subdivide(CubicCurve2D src,
                             CubicCurve2D left,
                             CubicCurve2D right)
细分由 src 参数指定的三次曲线并将得到的两个细分曲线存储到 leftright 曲线参数中。leftright 两个对象的任何一个或两者都可以与 src 对象相同,也可以为 null

参数:
src - 要细分的三次曲线
left - 用于存储左边一半或第一半细分曲线的三次曲线对象
right - 用于存储右边一半或第二半细分曲线的三次曲线对象

subdivide

public static void subdivide(double[] src,
                             int srcoff,
                             double[] left,
                             int leftoff,
                             double[] right,
                             int rightoff)
细分由存储在 src 数组 srcoff 到 (srcoff + 7) 索引处的坐标指定的三次曲线,并将得到的两个细分曲线存储到所得数组的相应索引中。leftright 数组中的任何一个或两者都可以为 null,也可以是到与 src 相同的数组的引用。注意,第一个细分曲线的最后一点就是第二个细分曲线的第一点。因此,可以为 leftright 传递相同的数组并使用偏移量(如 rightoff 等于 (leftoff + 6)),以避免为此公共点分配额外的存储区。

参数:
src - 保存源曲线坐标的数组
srcoff - 6 个源坐标的开头在数组中的偏移量
left - 存储第一半细分曲线坐标的数组
leftoff - 6 个左坐标的开头在数组中的偏移量
right - 存储第二半细分曲线坐标的数组
rightoff - 6 个右坐标的开头在数组中的偏移量

solveCubic

public static int solveCubic(double[] eqn)
解其系数位于 eqn 数组中的三次曲线,并将非复数的根放回该数组,同时返回根数。由以下方程表示三次曲线的解:
     eqn = {c, b, a, d}
     dx^3 + ax^2 + bx + c = 0
 
返回值 -1 用于区分常数方程(可以始终为 0 或永远不为 0 )与不包含任何零的方程。

参数:
eqn - 包含三次曲线系数的数组
返回:
根数,如果方程是常数方程,则返回 -1。

solveCubic

public static int solveCubic(double[] eqn,
                             double[] res)
解其系数位于 eqn 数组中的三次曲线,并将非复数的根放入 res 数组,同时返回根数。由以下方程表示三次曲线的解:eqn = {c, b, a, d} dx^3 + ax^2 + bx + c = 0。返回值 -1 用于区分常数方程(可以始终为 0 或永远不为 0 )与不包含任何零的方程。

参数:
eqn - 用于解三次曲线方程的系数的指定数组
res - 包含求解三次曲线方程所得非复数根的数组
返回:
根数,如果方程是常数方程,则返回 -1

contains

public boolean contains(double x,
                        double y)
测试指定坐标是否位于形状的边界内。

指定者:
接口 Shape 中的 contains
参数:
x, y - 要测试的指定坐标
返回:
如果坐标在形状的边界内,则返回 true;否则返回 false

contains

public boolean contains(Point2D p)
测试指定 Point2D 是否在形状的边界内。

指定者:
接口 Shape 中的 contains
参数:
p - 要测试的指定 Point2D
返回:
如果 p 在形状的边界内,则返回 true;否则返回 false

intersects

public boolean intersects(double x,
                          double y,
                          double w,
                          double h)
测试形状是否与指定设置的矩形坐标的内部相交。

指定者:
接口 Shape 中的 intersects
参数:
x, y - 指定矩形区域的左上角的坐标
w - 指定矩形区域的宽度
h - 指定矩形区域的高度
返回:
如果形状与指定矩形区域的内部相交,则返回 true;否则返回 false
另请参见:
Area

intersects

public boolean intersects(Rectangle2D r)
测试形状是否与指定 Rectangle2D 的内部相交。

指定者:
接口 Shape 中的 intersects
参数:
r - 要测试的指定 Rectangle2D
返回:
如果形状与指定 Rectangle2D 的内部相交,则返回 true;否则返回 false
另请参见:
Shape.intersects(double, double, double, double)

contains

public boolean contains(double x,
                        double y,
                        double w,
                        double h)
测试形状的内部是否完全包含指定设置的矩形坐标。

指定者:
接口 Shape 中的 contains
参数:
x, y - 指定矩形形状左上角的坐标
w - 指定矩形形状的宽度
h - 指定矩形形状的高度
返回:
如果形状完全包含指定设置的矩形坐标,则返回 true;否则返回 false
另请参见:
Area, Shape.intersects(double, double, double, double)

contains

public boolean contains(Rectangle2D r)
测试形状的内部是否完全包含指定的 Rectangle2D

指定者:
接口 Shape 中的 contains
参数:
r - 要测试的指定 Rectangle2D
返回:
如果形状完全包含指定的 Rectangle2D,则返回 true;否则返回 false
另请参见:
Shape.contains(double, double, double, double)

getBounds

public Rectangle getBounds()
返回形状的边界框。

指定者:
接口 Shape 中的 getBounds
返回:
作为形状边界框的 Rectangle
另请参见:
Shape.getBounds2D()

getPathIterator

public PathIterator getPathIterator(AffineTransform at)
返回定义形状边界的迭代对象。此类的迭代器不是多线程安全的,这意味着此 CubicCurve2D 类不保证对此 CubicCurve2D 对象几何形状所作的修改不会对该几何形状中正进行的迭代产生影响。

指定者:
接口 Shape 中的 getPathIterator
参数:
at - 一个可选的 AffineTransform,用于在迭代中返回的坐标,如果需要未变换的坐标,则为 null
返回:
返回此 CubicCurve2D 轮廓几何形状的 PathIterator 对象,一次一段。

getPathIterator

public PathIterator getPathIterator(AffineTransform at,
                                    double flatness)
返回定义变平形状边界的迭代对象。此类的迭代器不是多线程安全的,这意味着此 CubicCurve2D 类不保证对此 CubicCurve2D 对象几何形状所作的修改不会对该几何形状中正在进行的迭代产生影响。

指定者:
接口 Shape 中的 getPathIterator
参数:
at - 一个可选的 AffineTransform,用于迭代中返回的坐标,如果需要未变换的坐标,则为 null
flatness - 在由连接端点的直线取代细分曲线之前,给定曲线的控制点可以从共线变化的最大量
返回:
返回此 CubicCurve2D 轮廓几何形状的 PathIterator 对象,一次一段。

clone

public Object clone()
创建一个与此对象具有相同类的新对象。

覆盖:
Object 中的 clone
返回:
此实例的一个副本。
抛出:
OutOfMemoryError - 如果没有足够的内存。
从以下版本开始:
1.2
另请参见:
Cloneable

JavaTM 2 Platform
Standard Ed. 5.0

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java 2 SDK SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策