java.lang.Object
java.awt.geom.QuadCurve2D
- 直接已知的子类:
-
QuadCurve2D.Double
,QuadCurve2D.Float
QuadCurve2D
类在(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 double
getCtrlX()
返回double
精度中控制点的X坐标。abstract double
getCtrlY()
返回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
getP1()
返回起始点。abstract Point2D
getP2()
返回结束点。返回一个迭代对象,定义了此QuadCurve2D
形状的边界。getPathIterator
(AffineTransform at, double flatness) 返回一个迭代对象,定义了此QuadCurve2D
的平坦形状的边界。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) 测试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
将此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
数组中存储的坐标指定的二次曲线细分为两个结果数组中的两个细分曲线。void
subdivide
(QuadCurve2D left, QuadCurve2D right) 细分此QuadCurve2D
并将结果的两个细分曲线存储到left
和right
曲线参数中。static void
subdivide
(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
- 参见:
-