java.lang.Object
java.awt.geom.QuadCurve2D
- 直接已知的子类:
-
QuadCurve2D.Double,QuadCurve2D.Float
QuadCurve2D类在(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 doublegetCtrlX()返回double精度中控制点的X坐标。abstract doublegetCtrlY()返回double精度中控制点的Y坐标。double返回此QuadCurve2D的控制点到连接端点的线的最大距离,即平坦度。static doublegetFlatness(double[] coords, int offset) 返回指定数组中指定索引处存储的控制点所指定的二次曲线的平坦度,即控制点到连接端点的线的最大距离。static doublegetFlatness(double x1, double y1, double ctrlx, double ctrly, double x2, double y2) 返回指定控制点指定的二次曲线的平坦度,即控制点到连接端点的线的最大距离。double返回此QuadCurve2D的平方平坦度,即控制点到连接端点的线的最大距离。static doublegetFlatnessSq(double[] coords, int offset) 返回指定数组中指定索引处存储的控制点所指定的二次曲线的平方平坦度,即控制点到连接端点的线的最大距离。static doublegetFlatnessSq(double x1, double y1, double ctrlx, double ctrly, double x2, double y2) 返回指定控制点指定的二次曲线的平方平坦度,即控制点到连接端点的线的最大距离。abstract Point2DgetP1()返回起始点。abstract Point2DgetP2()返回结束点。返回一个迭代对象,定义了此QuadCurve2D形状的边界。getPathIterator(AffineTransform at, double flatness) 返回一个迭代对象,定义了此QuadCurve2D的平坦形状的边界。abstract doublegetX1()返回double精度中起始点的X坐标。abstract doublegetX2()返回double精度中结束点的X坐标。abstract doublegetY1()返回double精度中起始点的Y坐标。abstract doublegetY2()返回double精度中结束点的Y坐标。booleanintersects(double x, double y, double w, double h) 测试Shape的内部是否与指定矩形区域的内部相交。boolean测试Shape的内部是否与指定Rectangle2D的内部相交。voidsetCurve(double[] coords, int offset) 将此QuadCurve2D的端点和控制点的位置设置为指定数组中指定偏移量处的double坐标。abstract voidsetCurve(double x1, double y1, double ctrlx, double ctrly, double x2, double y2) 将此曲线的端点和控制点的位置设置为指定的double坐标。void将此QuadCurve2D的端点和控制点的位置设置为指定数组中指定偏移量处的Point2D对象的坐标。void将此QuadCurve2D的端点和控制点的位置设置为指定的Point2D坐标。void将此QuadCurve2D的端点和控制点的位置设置为指定QuadCurve2D中的端点和控制点的位置相同。static intsolveQuadratic(double[] eqn) 解决eqn数组中系数的二次方程,并将非复根放回同一数组,返回根的数量。static intsolveQuadratic(double[] eqn, double[] res) 解决eqn数组中系数的二次方程,并将非复根放入res数组,返回根的数量。static voidsubdivide(double[] src, int srcoff, double[] left, int leftoff, double[] right, int rightoff) 将src数组中存储的坐标指定的二次曲线细分为两个结果数组中的两个细分曲线。voidsubdivide(QuadCurve2D left, QuadCurve2D right) 细分此QuadCurve2D并将结果的两个细分曲线存储到left和right曲线参数中。static voidsubdivide(QuadCurve2D src, QuadCurve2D left, QuadCurve2D right) 细分由src参数指定的二次曲线,并将结果的两个细分曲线存储到left和right曲线参数中。
-
Constructor Details
-
QuadCurve2D
protected QuadCurve2D()这是一个抽象类,不能直接实例化。有特定类型的实现子类可用于实例化,并提供多种格式来存储满足下面各种访问器方法所需的信息。- 自从:
- 1.2
- 参见:
-
-
Method Details
-
getX1
public abstract double getX1()返回double精度中起始点的X坐标。- 返回:
- 起始点的X坐标。
- 自从:
- 1.2
-
getY1
public abstract double getY1()返回double精度中起始点的Y坐标。- 返回:
- 起始点的Y坐标。
- 自从:
- 1.2
-
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
返回控制点。- 返回:
-
一个
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
返回结束点。- 返回:
-
一个
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
将此QuadCurve2D的端点和控制点的位置设置为指定Point2D坐标。- 参数:
-
p1- 起始点 -
cp- 控制点 -
p2- 结束点 - 自从:
- 1.2
-
setCurve
将此QuadCurve2D的端点和控制点的位置设置为指定数组中指定偏移量处的Point2D对象的坐标。- 参数:
-
pts- 包含定义坐标值的Point2D数组 -
offset- 从中开始获取坐标值并将其分配给此QuadCurve2D的pts数组中的索引 - 自版本:
- 1.2
-
setCurve
将此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
将此QuadCurve2D细分,并将结果的两个细分曲线存储到left和right曲线参数中。left和right对象中的任何一个或两者都可以与此QuadCurve2D相同,或为null。- 参数:
-
left- 用于存储细分曲线左侧或第一半的QuadCurve2D对象 -
right- 用于存储细分曲线右侧或第二半的QuadCurve2D对象 - 自版本:
- 1.2
-
subdivide
细分由src参数指定的二次曲线,并将结果的两个细分曲线存储到left和right曲线参数中。left和right对象中的任何一个或两者都可以与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数组中索引srcoff到srcoff+ 5处存储的坐标指定的二次曲线,并将结果的两个细分曲线存储到相应索引处的两个结果数组中。left和right数组中的任何一个或两者都可以为null,或者是与src数组相同的数组和偏移量的引用。请注意,第一个细分曲线中的最后一个点与第二个细分曲线中的第一个点相同。因此,可以将相同的数组传递给left和right,并使用偏移量,使得rightoff等于leftoff+ 4,以避免为此公共点分配额外存储空间。- 参数:
-
src- 包含源曲线坐标的数组 -
srcoff- 源坐标数组中6个源坐标的开始偏移量 -
left- 用于存储细分曲线左侧坐标的数组 -
leftoff- 存储细分曲线左侧坐标的数组的开始偏移量 -
right- 用于存储细分曲线右侧坐标的数组 -
rightoff- 存储细分曲线右侧坐标的数组的开始偏移量 - 自版本:
- 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的边界内,如内部定义所述。 -
contains
-
intersects
public boolean intersects(double x, double y, double w, double h) 测试Shape的内部是否与指定的矩形区域的内部相交。如果任何点同时包含在Shape的内部和指定的矩形区域内,则认为矩形区域与Shape相交。Shape.intersects()方法允许Shape实现在以下情况下保守地返回true:- 矩形区域和
Shape相交的可能性很高,但 - 准确确定此交集的计算代价过高。
Shape,即使矩形区域与Shape不相交,此方法可能返回true。与大多数Shape对象相比,Area类执行更准确的几何交集计算,因此如果需要更精确的答案,则可以使用该类。- 指定者:
-
intersects在接口Shape中 - 参数:
-
x- 指定矩形区域左上角的X坐标 -
y- 指定矩形区域左上角的Y坐标 -
w- 指定矩形区域的宽度 -
h- 指定矩形区域的高度 - 返回值:
-
如果
Shape的内部与矩形区域的内部相交,或者两者高度可能相交且计算相交的代价太高,则返回true; 否则返回false。 - 自版本:
- 1.2
- 参见:
- 矩形区域和
-
intersects
测试Shape的内部是否与指定的Rectangle2D的内部相交。当存在高概率Rectangle2D和Shape相交,但准确确定此交集的计算代价过高时,Shape.intersects()方法允许Shape实现保守地返回true。- 即使
Rectangle2D不与Shape相交,对于某些Shapes,此方法可能返回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。当存在高概率Rectangle2D和Shape相交,但准确确定此交集的计算代价过高时,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
返回一个完全包围Shape的整数Rectangle。请注意,返回的Rectangle不一定是包围Shape的最小边界框,只是Shape完全位于指示的Rectangle内部。如果Shape超出整数数据类型的有限范围,则返回的Rectangle也可能无法完全包围Shape。由于其更大的表示灵活性,getBounds2D方法通常返回更紧凑的边界框。请注意,内部定义的定义可能导致
shape的定义轮廓上的点可能不被视为包含在返回的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
返回一个迭代对象,定义了此QuadCurve2D形状的边界。此类的迭代器不是多线程安全的,这意味着这个QuadCurve2D类不能保证对该对象的几何形状的修改不会影响已经在进行中的任何几何形状的迭代。- 指定者:
-
getPathIterator在接口Shape中 - 参数:
-
at- 可选的应用于形状边界的AffineTransform - 返回值:
-
一个
PathIterator对象,定义了形状的边界。 - 自版本:
- 1.2
-
getPathIterator
返回一个迭代对象,定义了此QuadCurve2D的平坦形状的边界。此类的迭代器不是多线程安全的,这意味着这个QuadCurve2D类不能保证对该对象的几何形状的修改不会影响已经在进行中的任何几何形状的迭代。- 指定者:
-
getPathIterator在接口Shape中 - 参数:
-
at- 可选的应用于形状边界的AffineTransform -
flatness- 在将此曲线的控制点细分为直线连接曲线端点之前,这些控制点可以与连接曲线端点的线的最大距离。 - 返回值:
-
一个
PathIterator对象,定义了形状的平坦边界。 - 自版本:
- 1.2
-
clone
创建一个与此对象相同类和相同内容的新对象。- 覆盖:
-
clone在类Object中 - 返回值:
- 此实例的克隆。
- 抛出:
-
OutOfMemoryError- 如果内存不足。 - 自版本:
- 1.2
- 参见:
-