java.lang.Object
java.awt.geom.CubicCurve2D
- 直接已知的子类:
-
CubicCurve2D.Double
,CubicCurve2D.Float
CubicCurve2D
类在(x,y)
坐标空间中定义了一个立方参数曲线段。
这个类只是所有存储2D立方曲线段的对象的抽象超类。坐标的实际存储表示留给子类。
- 自从:
- 1.2
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic class
使用double
坐标指定的立方参数曲线段。static class
使用float
坐标指定的立方参数曲线段。 -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionclone()
创建一个与此对象相同类的新对象。boolean
contains
(double x, double y) 测试指定的坐标是否在Shape
的边界内,如内部定义
所述。boolean
contains
(double x, double y, double w, double h) 测试Shape
的内部是否完全包含指定的矩形区域。boolean
boolean
测试Shape
的内部是否完全包含指定的Rectangle2D
。返回完全包围Shape
的整数Rectangle
。返回Shape
的高精度和更准确的边界框,比getBounds
方法更精确。abstract Point2D
返回第一个控制点。abstract Point2D
返回第二个控制点。abstract double
返回第一个控制点的X坐标,以双精度表示。abstract double
返回第二个控制点的X坐标,以双精度表示。abstract double
返回第一个控制点的Y坐标,以双精度表示。abstract double
返回第二个控制点的Y坐标,以双精度表示。double
返回此曲线的平坦度。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
返回此曲线的平坦度的平方。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()
返回结束点。返回定义形状边界的迭代对象。getPathIterator
(AffineTransform at, double flatness) 返回定义扁平化形状边界的迭代对象。abstract double
getX1()
返回起始点的X坐标,以双精度表示。abstract double
getX2()
返回结束点的X坐标,以双精度表示。abstract double
getY1()
返回起始点的Y坐标,以双精度表示。abstract double
getY2()
返回结束点的Y坐标,以双精度表示。boolean
intersects
(double x, double y, double w, double h) 测试Shape
的内部是否与指定矩形区域的内部相交。boolean
测试Shape
的内部是否与指定Rectangle2D
的内部相交。void
setCurve
(double[] coords, int offset) 将存储在src
数组中的坐标指定的立方曲线细分为srcoff
到(srcoff
+ 7)的两个细分曲线,并将结果存储到相应索引的两个结果数组中。abstract void
setCurve
(double x1, double y1, double ctrlx1, double ctrly1, double ctrlx2, double ctrly2, double x2, double y2) 将此立方曲线的端点和控制点的位置设置为指定数组中指定偏移量处的双精度坐标。void
将此曲线的端点和控制点的位置设置为指定的双精度坐标。void
将此曲线的端点和控制点的位置设置为指定数组中指定偏移量处的Point2D
对象的坐标。void
将此曲线的端点和控制点的位置设置为指定的Point2D
坐标。static int
solveCubic
(double[] eqn) 解决eqn
数组中系数的立方方程,并将非复根放回同一数组,返回根数。static int
solveCubic
(double[] eqn, double[] res) 解决eqn
数组中系数的立方方程,并将非复根放入res
数组,返回根数。static void
subdivide
(double[] src, int srcoff, double[] left, int leftoff, double[] right, int rightoff) 将src
数组中存储的坐标指定的立方曲线细分为srcoff
到(srcoff
+ 7)的曲线,并将结果存储到左右曲线参数中。void
subdivide
(CubicCurve2D left, CubicCurve2D right) 将此立方曲线细分,并将结果存储到左右曲线参数中。static void
subdivide
(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
- 参见:
-