java.lang.Object
java.awt.geom.CubicCurve2D
- 直接已知的子类:
-
CubicCurve2D.Double,CubicCurve2D.Float
CubicCurve2D类在(x,y)坐标空间中定义了一个立方参数曲线段。
这个类只是所有存储2D立方曲线段的对象的抽象超类。坐标的实际存储表示留给子类。
- 自从:
- 1.2
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic class使用double坐标指定的立方参数曲线段。static class使用float坐标指定的立方参数曲线段。 -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionclone()创建一个与此对象相同类的新对象。booleancontains(double x, double y) 测试指定的坐标是否在Shape的边界内,如内部定义所述。booleancontains(double x, double y, double w, double h) 测试Shape的内部是否完全包含指定的矩形区域。booleanboolean测试Shape的内部是否完全包含指定的Rectangle2D。返回完全包围Shape的整数Rectangle。返回Shape的高精度和更准确的边界框,比getBounds方法更精确。abstract Point2D返回第一个控制点。abstract Point2D返回第二个控制点。abstract double返回第一个控制点的X坐标,以双精度表示。abstract double返回第二个控制点的X坐标,以双精度表示。abstract double返回第一个控制点的Y坐标,以双精度表示。abstract double返回第二个控制点的Y坐标,以双精度表示。double返回此曲线的平坦度。static doublegetFlatness(double[] coords, int offset) 返回指定数组中指定索引处存储的控制点所指定的立方曲线的平坦度。static doublegetFlatness(double x1, double y1, double ctrlx1, double ctrly1, double ctrlx2, double ctrly2, double x2, double y2) 返回指定控制点指定的立方曲线的平坦度。double返回此曲线的平坦度的平方。static doublegetFlatnessSq(double[] coords, int offset) 返回指定数组中指定索引处存储的控制点所指定的立方曲线的平坦度的平方。static doublegetFlatnessSq(double x1, double y1, double ctrlx1, double ctrly1, double ctrlx2, double ctrly2, double x2, double y2) 返回指定控制点指定的立方曲线的平坦度的平方。abstract Point2DgetP1()返回起始点。abstract Point2DgetP2()返回结束点。返回定义形状边界的迭代对象。getPathIterator(AffineTransform at, double flatness) 返回定义扁平化形状边界的迭代对象。abstract doublegetX1()返回起始点的X坐标,以双精度表示。abstract doublegetX2()返回结束点的X坐标,以双精度表示。abstract doublegetY1()返回起始点的Y坐标,以双精度表示。abstract doublegetY2()返回结束点的Y坐标,以双精度表示。booleanintersects(double x, double y, double w, double h) 测试Shape的内部是否与指定矩形区域的内部相交。boolean测试Shape的内部是否与指定Rectangle2D的内部相交。voidsetCurve(double[] coords, int offset) 将存储在src数组中的坐标指定的立方曲线细分为srcoff到(srcoff+ 7)的两个细分曲线,并将结果存储到相应索引的两个结果数组中。abstract voidsetCurve(double x1, double y1, double ctrlx1, double ctrly1, double ctrlx2, double ctrly2, double x2, double y2) 将此立方曲线的端点和控制点的位置设置为指定数组中指定偏移量处的双精度坐标。void将此曲线的端点和控制点的位置设置为指定的双精度坐标。void将此曲线的端点和控制点的位置设置为指定数组中指定偏移量处的Point2D对象的坐标。void将此曲线的端点和控制点的位置设置为指定的Point2D坐标。static intsolveCubic(double[] eqn) 解决eqn数组中系数的立方方程,并将非复根放回同一数组,返回根数。static intsolveCubic(double[] eqn, double[] res) 解决eqn数组中系数的立方方程,并将非复根放入res数组,返回根数。static voidsubdivide(double[] src, int srcoff, double[] left, int leftoff, double[] right, int rightoff) 将src数组中存储的坐标指定的立方曲线细分为srcoff到(srcoff+ 7)的曲线,并将结果存储到左右曲线参数中。voidsubdivide(CubicCurve2D left, CubicCurve2D right) 将此立方曲线细分,并将结果存储到左右曲线参数中。static voidsubdivide(CubicCurve2D src, CubicCurve2D left, CubicCurve2D right) 将src参数指定的立方曲线细分,并将结果存储到left和right曲线参数中。
-
Constructor Details
-
CubicCurve2D
protected CubicCurve2D()这是一个抽象类,不能直接实例化。有特定类型的实现子类可供实例化,并提供多种格式来存储满足下面各种访问器方法所需信息。- 自从:
- 1.2
- 参见:
-
-
Method Details
-
getX1
public abstract double getX1()返回起始点的X坐标,以双精度表示。- 返回:
-
CubicCurve2D的起始点的X坐标。 - 自从:
- 1.2
-
getY1
public abstract double getY1()返回起始点的Y坐标,以双精度表示。- 返回:
-
CubicCurve2D的起始点的Y坐标。 - 自从:
- 1.2
-
getP1
返回起始点。- 返回:
-
CubicCurve2D的起始点Point2D。 - 自从:
- 1.2
-
getCtrlX1
public abstract double getCtrlX1()返回第一个控制点的X坐标,以双精度表示。- 返回:
-
CubicCurve2D的第一个控制点的X坐标。 - 自从:
- 1.2
-
getCtrlY1
public abstract double getCtrlY1()返回第一个控制点的Y坐标,以双精度表示。- 返回:
-
CubicCurve2D的第一个控制点的Y坐标。 - 自从:
- 1.2
-
getCtrlP1
返回第一个控制点。- 返回:
-
CubicCurve2D的第一个控制点Point2D。 - 自从:
- 1.2
-
getCtrlX2
public abstract double getCtrlX2()返回第二个控制点的X坐标,以双精度表示。- 返回:
-
CubicCurve2D的第二个控制点的X坐标。 - 自从:
- 1.2
-
getCtrlY2
public abstract double getCtrlY2()返回第二个控制点的Y坐标,以双精度表示。- 返回:
-
CubicCurve2D的第二个控制点的Y坐标。 - 自从:
- 1.2
-
getCtrlP2
返回第二个控制点。- 返回:
-
CubicCurve2D的第二个控制点Point2D。 - 自从:
- 1.2
-
getX2
public abstract double getX2()返回结束点的X坐标,以双精度表示。- 返回:
-
CubicCurve2D的结束点的X坐标。 - 自从:
- 1.2
-
getY2
public abstract double getY2()返回结束点的Y坐标,以双精度表示。- 返回:
-
CubicCurve2D的结束点的Y坐标。 - 自从:
- 1.2
-
getP2
返回结束点。- 返回:
-
CubicCurve2D的结束点Point2D。 - 自从:
- 1.2
-
setCurve
public abstract void setCurve(double x1, double y1, double ctrlx1, double ctrly1, double ctrlx2, double ctrly2, double x2, double y2) 将此曲线的端点和控制点的位置设置为指定的双精度坐标。- 参数:
-
x1- 用于设置此CubicCurve2D起始点的X坐标 -
y1- 用于设置此CubicCurve2D起始点的Y坐标 -
ctrlx1- 用于设置此CubicCurve2D第一个控制点的X坐标 -
ctrly1- 用于设置此CubicCurve2D第一个控制点的Y坐标 -
ctrlx2- 用于设置此CubicCurve2D第二个控制点的X坐标 -
ctrly2- 用于设置此CubicCurve2D第二个控制点的Y坐标 -
x2- 用于设置此CubicCurve2D结束点的X坐标 -
y2- 用于设置此CubicCurve2D结束点的Y坐标 - 自从:
- 1.2
-
setCurve
public void setCurve(double[] coords, int offset) 将此曲线的端点和控制点的位置设置为指定数组中指定偏移量处的双精度坐标。- 参数:
-
coords- 包含坐标的双精度数组 -
offset-coords中开始设置此曲线的端点和控制点的索引,这些点的坐标包含在coords中 - 自版本:
- 1.2
-
setCurve
将此曲线的端点和控制点位置设置为指定的Point2D坐标。- 参数:
-
p1- 用于设置此曲线起始点的第一个指定Point2D -
cp1- 用于设置此曲线第一个控制点的第二个指定Point2D -
cp2- 用于设置此曲线第二个控制点的第三个指定Point2D -
p2- 用于设置此曲线结束点的第四个指定Point2D - 自版本:
- 1.2
-
setCurve
将此曲线的端点和控制点位置设置为指定数组中指定偏移量处的Point2D对象的坐标。- 参数:
-
pts- 一个Point2D对象数组 -
offset-pts中开始设置此曲线的端点和控制点的索引,这些点的坐标包含在pts中 - 自版本:
- 1.2
-
setCurve
将此曲线的端点和控制点位置设置为指定的CubicCurve2D中的位置。- 参数:
-
c- 指定的CubicCurve2D - 自版本:
- 1.2
-
getFlatnessSq
public static double getFlatnessSq(double x1, double y1, double ctrlx1, double ctrly1, double ctrlx2, double ctrly2, double x2, double y2) 返回由指定控制点指定的三次曲线的平坦度的平方。平坦度是控制点到连接端点的线的最大距离。- 参数:
-
x1- 指定CubicCurve2D起始点的 X 坐标 -
y1- 指定CubicCurve2D起始点的 Y 坐标 -
ctrlx1- 指定CubicCurve2D第一个控制点的 X 坐标 -
ctrly1- 指定CubicCurve2D第一个控制点的 Y 坐标 -
ctrlx2- 指定CubicCurve2D第二个控制点的 X 坐标 -
ctrly2- 指定CubicCurve2D第二个控制点的 Y 坐标 -
x2- 指定CubicCurve2D结束点的 X 坐标 -
y2- 指定CubicCurve2D结束点的 Y 坐标 - 返回:
-
由指定坐标表示的
CubicCurve2D的平坦度的平方。 - 自版本:
- 1.2
-
getFlatness
public static double getFlatness(double x1, double y1, double ctrlx1, double ctrly1, double ctrlx2, double ctrly2, double x2, double y2) 返回由指定控制点指定的三次曲线的平坦度。平坦度是控制点到连接端点的线的最大距离。- 参数:
-
x1- 指定CubicCurve2D起始点的 X 坐标 -
y1- 指定CubicCurve2D起始点的 Y 坐标 -
ctrlx1- 指定CubicCurve2D第一个控制点的 X 坐标 -
ctrly1- 指定CubicCurve2D第一个控制点的 Y 坐标 -
ctrlx2- 指定CubicCurve2D第二个控制点的 X 坐标 -
ctrly2- 指定CubicCurve2D第二个控制点的 Y 坐标 -
x2- 指定CubicCurve2D结束点的 X 坐标 -
y2- 指定CubicCurve2D结束点的 Y 坐标 - 返回:
-
由指定坐标表示的
CubicCurve2D的平坦度。 - 自版本:
- 1.2
-
getFlatnessSq
public static double getFlatnessSq(double[] coords, int offset) 返回由指定数组中指定索引处存储的控制点指定的三次曲线的平坦度的平方。平坦度是控制点到连接端点的线的最大距离。- 参数:
-
coords- 包含坐标的数组 -
offset-coords中开始获取曲线的端点和控制点的索引 - 返回:
-
由指定偏移量处的
coords中的坐标表示的CubicCurve2D的平坦度的平方。 - 自版本:
- 1.2
-
getFlatness
public static double getFlatness(double[] coords, int offset) 返回由指定数组中指定索引处存储的控制点指定的三次曲线的平坦度。平坦度是控制点到连接端点的线的最大距离。- 参数:
-
coords- 包含坐标的数组 -
offset-coords中开始获取曲线的端点和控制点的索引 - 返回:
-
由指定偏移量处的
coords中的坐标表示的CubicCurve2D的平坦度。 - 自版本:
- 1.2
-
getFlatnessSq
public double getFlatnessSq()返回此曲线的平坦度的平方。平坦度是控制点到连接端点的线的最大距离。- 返回:
- 此曲线的平坦度的平方。
- 自版本:
- 1.2
-
getFlatness
public double getFlatness()返回此曲线的平坦度。平坦度是控制点到连接端点的线的最大距离。- 返回:
- 此曲线的平坦度。
- 自版本:
- 1.2
-
subdivide
将此三次曲线细分,并将结果的两个细分曲线存储到左侧和右侧曲线参数中。左侧和右侧对象中的一个或两个可能与此对象相同或为 null。- 参数:
-
left- 用于存储细分曲线左侧或第一半的三次曲线对象 -
right- 用于存储细分曲线右侧或第二半的三次曲线对象 - 自版本:
- 1.2
-
subdivide
细分由src参数指定的三次曲线,并将结果的两个细分曲线存储到left和right曲线参数中。左侧和右侧对象中的一个或两个可能与src对象相同或为null。- 参数:
-
src- 要细分的三次曲线 -
left- 用于存储细分曲线左侧或第一半的三次曲线对象 -
right- 用于存储细分曲线右侧或第二半的三次曲线对象 - 自版本:
- 1.2
-
subdivide
public static void subdivide(double[] src, int srcoff, double[] left, int leftoff, double[] right, int rightoff) 细分由src数组中索引srcoff到 (srcoff+ 7) 处存储的坐标指定的三次曲线,并将结果的两个细分曲线存储到两个结果数组的相应索引中。左侧和右侧数组中的一个或两个可能为null或与src数组相同的数组。请注意,第一个细分曲线中的最后一个点与第二个细分曲线中的第一个点相同。因此,可以将相同的数组传递给left和right,并使用偏移量,例如rightoff等于 (leftoff+ 6),以避免为此公共点分配额外存储空间。- 参数:
-
src- 包含源曲线坐标的数组 -
srcoff- 源坐标数组中开始的偏移量,指向 6 个源坐标的开始 -
left- 用于存储细分曲线第一半坐标的数组 -
leftoff- 指向 6 个左侧坐标的开始的偏移量 -
right- 用于存储细分曲线第二半坐标的数组 -
rightoff- 指向 6 个右侧坐标的开始的偏移量 - 自版本:
- 1.2
-
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。
- 自版本:
- 1.2
-
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
- 自版本:
- 1.3
-
contains
public boolean contains(double x, double y) 测试指定坐标是否在Shape的边界内,如 内部定义 描述的那样。 -
contains
-
intersects
public boolean intersects(double x, double y, double w, double h) 测试Shape的内部是否与指定矩形区域的内部相交。如果任何点同时包含在Shape的内部和指定矩形区域内,则认为矩形区域与Shape相交。Shape.intersects()方法允许Shape实现在以下情况下保守地返回true:- 矩形区域和
Shape有很高的可能性相交,但 - 准确确定此交集的计算代价过高。
Shapes,即使矩形区域与Shape不相交,此方法可能返回true。与大多数Shape对象相比,Area类执行更准确的几何相交计算,因此如果需要更精确的答案,则可以使用该类。- 指定者:
-
intersects在接口Shape中 - 参数:
-
x- 指定矩形区域左上角的X坐标 -
y- 指定矩形区域左上角的Y坐标 -
w- 指定矩形区域的宽度 -
h- 指定矩形区域的高度 - 返回值:
-
如果
Shape的内部和矩形区域的内部相交,或者两者高度可能相交且计算交集的代价过高,则返回true; 否则返回false。 - 自版本:
- 1.2
- 另请参阅:
- 矩形区域和
-
intersects
测试Shape的内部是否与指定Rectangle2D的内部相交。Shape.intersects()方法允许Shape实现在以下情况下保守地返回true:- 矩形区域和
Shape有很高的可能性相交,但 - 准确确定此交集的计算代价过高。
Shapes,即使Rectangle2D与Shape不相交,此方法可能返回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的内部是否完全包含指定的Rectangle2D。Shape.contains()方法允许Shape实现在以下情况下保守地返回false:intersect方法返回true且- 确定
Shape是否完全包含Rectangle2D的计算代价过高。
Shapes,即使Shape包含Rectangle2D,此方法可能返回false。与大多数Shape对象相比,Area类执行更准确的几何计算,因此如果需要更精确的答案,则可以使用该类。 -
getBounds2D
返回Shape的边界框比getBounds方法更高精度和更准确。请注意,返回的Rectangle2D不一定是包围Shape的最小边界框,只是Shape完全位于指示的Rectangle2D内部。此方法返回的边界框通常比getBounds方法返回的边界框更紧凑,并且不会因为溢出问题而失败,因为返回值可以是使用双精度值存储维度的Rectangle2D的实例。请注意,内部定义可能导致
shape的定义轮廓上的点可能不被认为包含在返回的bounds对象中,但只有在这些点也不被认为包含在原始shape中的情况下才是如此。如果
point根据contains(point)方法在shape内部,则根据bounds的contains(point)方法,它必须在返回的Rectangle2D边界对象内部。具体来说:shape.contains(p)需要bounds.contains(p)如果
point不在shape内部,则它可能仍包含在bounds对象中:bounds.contains(p)不意味着shape.contains(p)- 指定者:
-
getBounds2D在接口Shape中 - 返回值:
-
一个
Rectangle2D的实例,它是Shape的高精度边界框。 - 自版本:
- 1.2
- 参见:
-
getBounds
返回一个整数Rectangle,完全包围Shape。请注意,返回的Rectangle不一定是包围Shape的最小边界框,只是确保Shape完全位于指示的Rectangle内。如果Shape超出整数数据类型的有限范围,返回的Rectangle也可能无法完全包围Shape。由于getBounds2D方法在表示上更加灵活,通常返回一个更紧密的边界框。请注意,内部定义可能导致这样的情况:定义形状的轮廓上的点可能不被认为包含在返回的
bounds对象中,但只有在这些点也不被认为包含在原始shape中的情况下才是如此。如果一个
point根据contains(point)方法在shape内部,那么根据bounds的contains(point)方法,它必须在返回的Rectangle边界对象内部。具体来说:shape.contains(x,y)要求bounds.contains(x,y)如果一个
point不在shape内部,那么它可能仍然包含在bounds对象中:bounds.contains(x,y)不意味着shape.contains(x,y) -
getPathIterator
返回一个定义形状边界的迭代对象。该类的迭代器不是多线程安全的,这意味着这个CubicCurve2D类不能保证对该CubicCurve2D对象几何形状的修改不会影响已经在进行中的任何几何形状的迭代。- 指定者:
-
getPathIterator在接口Shape中 - 参数:
-
at- 一个可选的AffineTransform,用于在迭代返回坐标时应用,或者如果需要未转换的坐标,则为null - 返回值:
-
返回
PathIterator对象,以一段一段地返回该CubicCurve2D的轮廓几何形状。 - 自版本:
- 1.2
-
getPathIterator
返回一个定义扁平化形状边界的迭代对象。该类的迭代器不是多线程安全的,这意味着这个CubicCurve2D类不能保证对该CubicCurve2D对象几何形状的修改不会影响已经在进行中的任何几何形状的迭代。- 指定者:
-
getPathIterator在接口Shape中 - 参数:
-
at- 一个可选的AffineTransform,用于在迭代返回坐标时应用,或者如果需要未转换的坐标,则为null -
flatness- 给定曲线的控制点在变化为共线之前可以变化的最大量,此时一个细分曲线将被连接端点的直线替换 - 返回值:
-
返回
PathIterator对象,以一段一段地返回该CubicCurve2D的轮廓几何形状。 - 自版本:
- 1.2
-
clone
创建一个与此对象相同类的新对象。- 覆盖:
-
clone在类Object中 - 返回值:
- 此实例的克隆。
- 抛出:
-
OutOfMemoryError- 如果内存不足 - 自版本:
- 1.2
- 参见:
-