java.lang.Object java.awt.geom.QuadCurve2D
QuadCurve2D
类定义 (x,y)
坐标空间内的二次参数曲线段。
此类是所有存储 2D 二次曲线段的对象的惟一抽象超类。坐标的实际存储表示形式由子类决定。
嵌套类摘要 | |
---|---|
static class |
QuadCurve2D.Double 使用 double 坐标指定的二次参数曲线段。 |
static class |
QuadCurve2D.Float 使用 float 坐标指定的二次参数曲线段。 |
构造方法摘要 | |
---|---|
protected |
QuadCurve2D() 这是一个不可直接实例化的抽象类。 |
方法摘要 | |
---|---|
Object |
clone() 创建一个与此对象具有相同类和相同内容的新对象。 |
boolean |
contains(double x, double y) 测试指定坐标是否在 Shape 的边界内。 |
boolean |
contains(double x, double y, double w, double h) 测试 Shape 内部是否完全包含指定矩形区域。 |
boolean |
contains(Point2D p) 测试指定的 Point2D 是否在 Shape 的边界内。 |
boolean |
contains(Rectangle2D r) 测试 Shape 内部是否完全包含指定的 Rectangle2D 。 |
Rectangle |
getBounds() 返回一个完全包围 Shape 的整型 Rectangle 。 |
abstract Point2D |
getCtrlPt() 返回控制点。 |
abstract double |
getCtrlX() 以 double 精度返回控制点的 X 坐标。 |
abstract double |
getCtrlY() 以 double 精度返回控制点的 Y 坐标。 |
double |
getFlatness() 返回此 QuadCurve2D 的平面度(或者说从控制点到连接端点的线的最大距离)。 |
static double |
getFlatness(double[] coords, int offset) 返回由控制点(存储在指示数组中的指示索引处)指定的二次曲线平面度(或者说从控制点到连接端点的线的最大距离)。 |
static double |
getFlatness(double x1, double y1, double ctrlx, double ctrly, double x2, double y2) 返回由指示控制点指定的二次曲线平面度(或者说从控制点到连接端点的线的最大距离)。 |
double |
getFlatnessSq() 返回此 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() 返回结束点。 |
PathIterator |
getPathIterator(AffineTransform at) 返回定义此 QuadCurve2D 的形状边界的迭代对象。 |
PathIterator |
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 |
intersects(Rectangle2D r) 测试 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 |
setCurve(Point2D[] pts, int offset) 将此 QuadCurve2D 端点和控制点的位置设置为指定数组中指定偏移量处 Point2D 对象的坐标。 |
void |
setCurve(Point2D p1, Point2D cp, Point2D p2) 将此 QuadCurve2D 端点和控制点的位置设置为指定的 Point2D 坐标。 |
void |
setCurve(QuadCurve2D c) 将此 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 数组 srcoff 到 (srcoff + 5) 索引处的坐标指定的二次曲线,并将得到的两个细分曲线存储到所得数组的相应索引中。 |
void |
subdivide(QuadCurve2D left, QuadCurve2D right) 细分此 QuadCurve2D 并将得到的两个细分曲线存储到 left 和 right 曲线参数中。 |
static void |
subdivide(QuadCurve2D src, QuadCurve2D left, QuadCurve2D right) 细分由 src 参数指定的二次曲线并将得到的两个细分曲线存储到 left 和 right 曲线参数中。 |
从类 java.lang.Object 继承的方法 |
---|
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
从接口 java.awt.Shape 继承的方法 |
---|
getBounds2D |
构造方法详细信息 |
---|
protected QuadCurve2D()
QuadCurve2D.Float
,
QuadCurve2D.Double
方法详细信息 |
---|
public abstract double getX1()
double
精度返回起始点的 X 坐标。
public abstract double getY1()
double
精度返回起始点的 Y 坐标。
public abstract Point2D getP1()
QuadCurve2D
起始点的
Point2D
。
public abstract double getCtrlX()
double
精度返回控制点的 X 坐标。
public abstract double getCtrlY()
double
精度返回控制点的 Y 坐标。
public abstract Point2D getCtrlPt()
Point2D
控制点的
Point2D
。
public abstract double getX2()
double
精度返回结束点的 X 坐标。
public abstract double getY2()
double
精度返回结束点的 Y 坐标。
public abstract Point2D getP2()
Point2D
结束点的
Point
对象。
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 坐标
public void setCurve(double[] coords, int offset)
QuadCurve2D
端点和控制点的位置设置为指定数组中指定偏移量处的
double
坐标。
coords
- 包含坐标值的数组
offset
- 数组中的索引,从此处开始获取坐标值并将其赋给此
QuadCurve2D
public void setCurve(Point2D p1, Point2D cp, Point2D p2)
QuadCurve2D
端点和控制点的位置设置为指定的
Point2D
坐标。
p1
- 起始点
cp
- 控制点
p2
- 结束点
public void setCurve(Point2D[] pts, int offset)
QuadCurve2D
端点和控制点的位置设置为指定数组中指定偏移量处
Point2D
对象的坐标。
pts
- 包含定义坐标值的
Point2D
的数组
offset
-
pts
中的索引,从此处开始获取坐标值并将其赋给此
QuadCurve2D
public void setCurve(QuadCurve2D c)
QuadCurve2D
端点和控制点的位置设置为与指定的
QuadCurve2D
相同。
c
- 指定的
QuadCurve2D
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 坐标
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 坐标
public static double getFlatnessSq(double[] coords, int offset)
coords
- 包含坐标值的数组
offset
-
coords
中的索引,从此处开始从数组中获取值
public static double getFlatness(double[] coords, int offset)
coords
- 包含坐标值的数组
offset
-
coords
中的索引,从此处开始获取坐标值
public double getFlatnessSq()
QuadCurve2D
的平面度(或者说从控制点到连接端点的线的最大距离)的平方。
QuadCurve2D
平面度的平方。
public double getFlatness()
QuadCurve2D
的平面度(或者说从控制点到连接端点的线的最大距离)。
QuadCurve2D
的平面度。
public void subdivide(QuadCurve2D left, QuadCurve2D right)
QuadCurve2D
并将得到的两个细分曲线存储到
left
和
right
曲线参数中。
left
和
right
两个对象的一个(或两个)可以与
QuadCurve2D
对象相同,也可以为
null
。
left
- 用于存储左边一半(或第一半)细分曲线的
QuadCurve2D
对象
right
- 用于存储右边一半(或第二半)细分曲线的
QuadCurve2D
对象
public static void subdivide(QuadCurve2D src, QuadCurve2D left, QuadCurve2D right)
src
参数指定的二次曲线并将得到的两个细分曲线存储到
left
和
right
曲线参数中。
left
和
right
两个对象的任何一个或两者都可以与
src
对象相同,也可以为
null
。
src
- 要细分的二次曲线
left
- 用于存储左边一半(或第一半)细分曲线的
QuadCurve2D
对象
right
- 用于存储右边一半(或第二半)细分曲线的
QuadCurve2D
对象
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
- 6 个左坐标的开头在数组中的偏移量
right
- 存储第二半细分曲线坐标的数组
rightoff
- 6 个右坐标的开头在数组中的偏移量
public static int solveQuadratic(double[] eqn)
eqn
数组中的二次曲线,并将非复数的根放回该数组,同时返回根数。用以下方程表示二次曲线的解:
eqn = {C, B, A}; ax^2 + bx + c = 0返回值
-1
用于区分常数方程(可以始终为 0 或永远不为 0)与不包含任何零的方程。
eqn
- 包含二次曲线系数的数组
-1
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
。
public boolean contains(double x, double y)
Shape
的边界内。
x
- 要测试的指定的 X 坐标
y
- 要测试的指定的 Y 坐标
Shape
边界内,则返回
true
;否则返回
false
。
public boolean contains(Point2D p)
Point2D
是否在
Shape
的边界内。
p
- 要测试的指定的
Point2D
Point2D
在
Shape
边界内,则返回
true
;否则返回
false
。
public boolean intersects(double x, double y, double w, double h)
Shape
内部是否与指定矩形区域的内部相交。如果任何一个点既包含在
Shape
内,又包含在指定矩形区域内,则认为矩形区域与
Shape
相交。
在下列情况下,Shape.intersects()
方法允许 Shape
实现谨慎地返回 true
:
Shape
相交的可能性很大,但是 Shape
,即使矩形区域没有与该
Shape
相交,此方法也可能返回
true
。如果需要更精确的答案,由于
Area
类比大多数
Shape
对象更为准确地计算几何相交,因此可以使用该类。
Shape
中的
intersects
x
- 指定矩形区域左上角的 X 坐标
y
- 指定矩形区域左上角的 Y 坐标
w
- 指定矩形区域的宽度
h
- 指定矩形区域的高度
Shape
的内部区域与矩形的内部区域相交,或者相交的可能性很大且执行计算的代价太高,则返回
true
;否则返回
false
。
Area
public boolean intersects(Rectangle2D r)
Shape
内部是否与指定
Rectangle2D
内部相交。在下列情况下,
Shape.intersects()
方法允许
Shape
实现谨慎地返回
true
:
Rectangle2D
与 Shape
相交的可能性很大,但是 Shape
,即使
Rectangle2D
没有与该
Shape
相交,此方法也可能返回
true
。如果需要更精确的答案,由于
Area
类比大多数
Shape
对象更为准确地计算几何相交,因此可以使用该类。
Shape
中的
intersects
r
- 指定的
Rectangle2D
Shape
内部与指定
Rectangle2D
内部相交,或者相交的可能性很大且执行计算的代价太高,则返回
true
;否则返回
false
。
Shape.intersects(double, double, double, double)
public boolean contains(double x, double y, double w, double h)
Shape
内部是否完全包含指定矩形区域。矩形区域内的所有坐标都必须位于
Shape
中,才可以认为整个矩形区域包含在
Shape
中。
在下列情况下,Shape.contains()
方法允许 Shape
实现谨慎地返回 false
:
intersect
方法返回 true
并且 Shape
是否完全包含矩形区域的代价太高。 Shape
,即使
Shape
包含矩形区域,此方法也可能返回
false
。如果需要更精确的答案,由于
Area
类比大多数
Shape
对象更为准确地执行几何计算,因此可以使用该类。
x
- 指定矩形区域左上角的 X 坐标
y
- 指定矩形区域左上角的 Y 坐标
w
- 指定矩形区域的宽度
h
- 指定矩形区域的高度
Shape
内部完全包含指定矩形区域,则返回
true
;否则,如果
Shape
包含矩形区域、
intersects
方法返回
true
且执行包含计算代价太高,则返回
false
。
Area
,
Shape.intersects(double, double, double, double)
public boolean contains(Rectangle2D r)
Shape
内部是否完全包含指定的
Rectangle2D
。在下列情况下,
Shape.contains()
方法允许
Shape
实现谨慎地返回
false
:
intersect
方法返回 true
并且 Shape
是否完全包含 Rectangle2D
的代价太高。 Shape
,即使
Shape
包含
Rectangle2D
,此方法也可能返回
false
。如果需要更精确的答案,由于
Area
类比大多数
Shape
对象更为准确地执行几何计算,因此可以使用该类。
r
- 指定的
Rectangle2D
Shape
内部完全包含
Rectangle2D
,则返回
true
;否则,如果
Shape
包含
Rectangle2D
、
intersects
方法返回
true
且执行包含计算代价太高,则返回
false
。
Shape.contains(double, double, double, double)
public Rectangle getBounds()
Shape
的整型
Rectangle
。注意,不保证返回的
Rectangle
是包围
Shape
的最小边界框,只保证
Shape
完全位于指示的
Rectangle
中。如果
Shape
超出了整数数据类型的有效范围,则返回的
Rectangle
也可能不完全包围
Shape
。
getBounds2D
方法由于在表示形式上具有更大的灵活性,所以通常返回更紧密的边界框。
Shape
的整型
Rectangle
。
Shape.getBounds2D()
public PathIterator getPathIterator(AffineTransform at)
QuadCurve2D
的形状边界的迭代对象。此类的迭代器不是多线程安全的,这意味着此
QuadCurve2D
类不保证对此
QuadCurve2D
对象几何形状所作的修改不会影响该几何形状中正在进行的迭代。
Shape
中的
getPathIterator
at
- 要应用于形状边界的可选的
AffineTransform
PathIterator
对象。
public PathIterator getPathIterator(