java.lang.Object java.awt.geom.CubicCurve2D
CubicCurve2D
类定义 (x,y)
坐标空间内的三次参数曲线段。
此类是所有存储 2D 三次曲线段的对象的惟一抽象超类。坐标的实际存储表示形式由子类决定。
嵌套类摘要 | |
---|---|
static class |
CubicCurve2D.Double 使用 double 坐标指定的三次参数曲线段。 |
static class |
CubicCurve2D.Float 使用 float 坐标指定的三次参数曲线段。 |
构造方法摘要 | |
---|---|
protected |
CubicCurve2D() 这是一个不可直接实例化的抽象类。 |
方法摘要 | |
---|---|
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 |
getCtrlP1() 返回第一个控制点。 |
abstract Point2D |
getCtrlP2() 返回第二个控制点。 |
abstract double |
getCtrlX1() 以 double 精度返回第一个控制点的 X 坐标。 |
abstract double |
getCtrlX2() 以 double 精度返回第二个控制点的 X 坐标。 |
abstract double |
getCtrlY1() 以 double 精度返回第一个控制点的 Y 坐标。 |
abstract double |
getCtrlY2() 以 double 精度返回第二个控制点的 Y 坐标。 |
double |
getFlatness() 返回此曲线的平面度。 |
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 |
getFlatnessSq() 返回此曲线平面度的平方。 |
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() 返回结束点。 |
PathIterator |
getPathIterator(AffineTransform at) 返回定义形状边界的迭代对象。 |
PathIterator |
getPathIterator(AffineTransform at, double flatness) 返回定义变平形状边界的迭代对象。 |
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(CubicCurve2D c) 将此曲线端点和控制点的位置设置为与指定的 CubicCurve2D 相同。 |
void |
setCurve(double[] coords, int offset) 将此曲线端点和控制点的位置设置为指定数组中指定偏移量的 double 坐标。 |
abstract void |
setCurve(double x1, double y1, double ctrlx1, double ctrly1, double ctrlx2, double ctrly2, double x2, double y2) 将此曲线端点和控制点的位置设置为指定的 double 坐标。 |
void |
setCurve(Point2D[] pts, int offset) 将此曲线端点和控制点的位置设置为指定数组中指定偏移量的 Point2D 对象的坐标。 |
void |
setCurve(Point2D p1, Point2D cp1, Point2D cp2, Point2D p2) 将此曲线端点和控制点的位置设置为指定的 Point2D 坐标。 |
static int |
solveCubic(double[] eqn) 解系数位于 eqn 数组中的三次曲线,并将非复数的根放回该数组,同时返回根数。 |
static int |
solveCubic(double[] eqn, double[] res) 解系数位于 eqn 数组中的三次曲线,并将非复数的根放入 res 数组,同时返回根数。 |
void |
subdivide(CubicCurve2D left, CubicCurve2D right) 细分此三次曲线,并将得到的两个细分曲线存储到 left 和 right 曲线参数中。 |
static void |
subdivide(CubicCurve2D src, CubicCurve2D left, CubicCurve2D right) 细分由 src 参数指定的三次曲线,并将得到的两个细分曲线存储到 left 和 right 曲线参数中。 |
static void |
subdivide(double[] src, int srcoff, double[] left, int leftoff, double[] right, int rightoff) 细分由存储在 src 数组 srcoff 到 (srcoff + 7) 索引处的坐标指定的三次曲线,并将得到的两个细分曲线存储到所得数组的相应索引中。 |
从类 java.lang.Object 继承的方法 |
---|
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
从接口 java.awt.Shape 继承的方法 |
---|
getBounds2D |
构造方法详细信息 |
---|
protected CubicCurve2D()
CubicCurve2D.Float
,
CubicCurve2D.Double
方法详细信息 |
---|
public abstract double getX1()
CubicCurve2D
起始点的 X 坐标。
public abstract double getY1()
CubicCurve2D
起始点的 Y 坐标。
public abstract Point2D getP1()
CubicCurve2D
起始点的
Point2D
。
public abstract double getCtrlX1()
CubicCurve2D
第一个控制点的 X 坐标。
public abstract double getCtrlY1()
CubicCurve2D
第一个控制点的 Y 坐标。
public abstract Point2D getCtrlP1()
CubicCurve2D
第一个控制点的
Point2D
。
public abstract double getCtrlX2()
CubicCurve2D
第二个控制点的 X 坐标。
public abstract double getCtrlY2()
CubicCurve2D
第二个控制点的 Y 坐标。
public abstract Point2D getCtrlP2()
CubicCurve2D
第二个控制点的
Point2D
。
public abstract double getX2()
CubicCurve2D
结束点的 X 坐标。
public abstract double getY2()
CubicCurve2D
结束点的 Y 坐标。
public abstract Point2D getP2()
CubicCurve2D
结束点的
Point2D
。
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 坐标
public void setCurve(double[] coords, int offset)
coords
- 包含坐标的 double 数组
offset
-
coords
的索引,从该索引处开始将此曲线端点和控制点设置为
coords
中包含的坐标
public void setCurve(Point2D p1, Point2D cp1, Point2D cp2, Point2D p2)
Point2D
坐标。
p1
- 用于设置此曲线起始点的第一个指定的
Point2D
cp1
- 用于设置此曲线第一个控制点的第二个指定的
Point2D
cp2
- 用于设置此曲线第二个控制点的第三个指定的
Point2D
p2
- 用于设置此曲线结束点的第四个指定的
Point2D
public void setCurve(Point2D[] pts, int offset)
Point2D
对象的坐标。
pts
-
Point2D
对象数组
offset
-
pts
的索引,从该索引处开始将此曲线端点和控制点设置为
pts
中包含的点
public void setCurve(CubicCurve2D c)
CubicCurve2D
相同。
c
- 指定的
CubicCurve2D
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
平面度的平方。
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
平面度。
public static double getFlatnessSq(double[] coords, int offset)
coords
- 包含坐标的数组
offset
-
coords
的索引,从该索引处开始设置此曲线的端点和控制点
coords
中指定偏移量处的坐标指定的
CubicCurve2D
平面度的平方。
public static double getFlatness(double[] coords, int offset)
coords
- 包含坐标的数组
offset
-
coords
的索引,从该索引处开始设置此曲线的端点和控制点
coords
中指定偏移量处的坐标指定的
CubicCurve2D
平面度。
public double getFlatnessSq()
public double getFlatness()
public void subdivide(CubicCurve2D left, CubicCurve2D right)
left
- 用于存储左边一半(或第一半)细分曲线的三次曲线对象
right
- 用于存储右边一半(或第二半)细分曲线的三次曲线对象
public static void subdivide(CubicCurve2D src, CubicCurve2D left, CubicCurve2D right)
src
参数指定的三次曲线,并将得到的两个细分曲线存储到
left
和
right
曲线参数中。
left
和
right
两个对象的一个(或两个)可以与
src
对象相同,也可以为
null
。
src
- 要细分的三次曲线
left
- 用于存储左边一半(或第一半)细分曲线的三次曲线对象
right
- 用于存储右边一半(或第二半)细分曲线的三次曲线对象
public static void subdivide(double[] src, int srcoff, double[] left, int leftoff, double[] right, int rightoff)
src
数组
srcoff
到 (
srcoff
+ 7) 索引处的坐标指定的三次曲线,并将得到的两个细分曲线存储到所得数组的相应索引中。
left
和
right
数组中的一个(或两者)可以为
null
,也可以是到与
src
相同的数组的引用。注意,第一个细分曲线的最后一点就是第二个细分曲线的第一点。因此,可以为
left
和
right
传递相同的数组并使用偏移量(如
rightoff
等于 (
leftoff
+ 6)),以避免为此公共点分配额外的存储区。
src
- 保存源曲线坐标的数组
srcoff
- 6 个源坐标的开头在数组中的偏移量
left
- 存储第一半细分曲线坐标的数组
leftoff
- 6 个左坐标的开头在数组中的偏移量
right
- 存储第二半细分曲线坐标的数组
rightoff
- 6 个右坐标的开头在数组中的偏移量
public static int solveCubic(double[] eqn)
eqn
数组中的三次曲线,并将非复数的根放回该数组,同时返回根数。用以下方程表示三次曲线的解:
eqn = {c, b, a, d} dx^3 + ax^2 + bx + c = 0返回值 -1 用于区分常数方程(可以始终为 0 或永远不为 0)与不包含任何零的方程。
eqn
- 包含三次曲线系数的数组
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
- 包含求解三次曲线方程所得非复数根的数组
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
对象更为准确地执行几何计算,因此可以使用该类。