- java.lang.Object
-
- java.awt.geom.CubicCurve2D
-
- 已知直接子类:
-
CubicCurve2D.Double,CubicCurve2D.Float
public abstract class CubicCurve2D extends Object implements Shape, Cloneable
CubicCurve2D类定义了(x,y)坐标空间中的三次参数曲线段。该类只是存储二维立方曲线段的所有对象的抽象超类。 坐标的实际存储表示留给子类。
- 从以下版本开始:
- 1.2
-
-
Nested Class Summary
Nested Classes Modifier and Type Class 描述 static classCubicCurve2D.Double用double坐标指定的三次参数曲线段。static classCubicCurve2D.Float用float坐标指定的三次参数曲线段。
-
构造方法摘要
构造方法 Modifier Constructor 描述 protectedCubicCurve2D()这是一个无法直接实例化的抽象类。
-
方法摘要
所有方法 静态方法 接口方法 抽象方法 具体的方法 Modifier and Type 方法 描述 Objectclone()创建与此对象相同类的新对象。booleancontains(double x, double y)测试指定的坐标是否在Shape的边界内,如 definition of insideness所述 。booleancontains(double x, double y, double w, double h)测试Shape的内部Shape完全包含指定的矩形区域。booleancontains(Point2D p)测试指定Point2D是的边界内Shape,如所描述的definition of insideness 。booleancontains(Rectangle2D r)测试Shape的内部Shape全部包含指定的Rectangle2D。RectanglegetBounds()返回一个整数Rectangle完全包围Shape。abstract Point2DgetCtrlP1()返回第一个控制点。abstract Point2DgetCtrlP2()返回第二个控制点。abstract doublegetCtrlX1()以双精度返回第一个控制点的X坐标。abstract doublegetCtrlX2()以双精度返回第二个控制点的X坐标。abstract doublegetCtrlY1()以双精度返回第一个控制点的Y坐标。abstract doublegetCtrlY2()以双精度返回第二个控制点的Y坐标。doublegetFlatness()返回该曲线的平坦度。static doublegetFlatness(double[] coords, int offset)返回由指定的数组中指定的索引处存储的控制点指定的三次曲线的平坦度。static doublegetFlatness(double x1, double y1, double ctrlx1, double ctrly1, double ctrlx2, double ctrly2, double x2, double y2)返回由指示的控制点指定的三次曲线的平坦度。doublegetFlatnessSq()返回该曲线的平坦度的平方。static doublegetFlatnessSq(double[] coords, int offset)返回由指定的数组中存储的指示索引指定的控制点指定的三次曲线的平坦度的平方。static doublegetFlatnessSq(double x1, double y1, double ctrlx1, double ctrly1, double ctrlx2, double ctrly2, double x2, double y2)返回由指示的控制点指定的三次曲线的平坦度的平方。abstract Point2DgetP1()返回起始点。abstract Point2DgetP2()返回终点。PathIteratorgetPathIterator(AffineTransform at)返回定义形状边界的迭代对象。PathIteratorgetPathIterator(AffineTransform at, double flatness)返回定义展平形状边界的迭代对象。abstract doublegetX1()200新新新新200新新200新200新新200新200新新200新新200新新200新新200新新200新新新200新新200abstract doublegetX2()X-abstract doublegetY1()新新新新200新新200新新200新新200新新200新新200新新200新新新200新新200新新200新新200abstract doublegetY2()以双精度返回终点的Y坐标。booleanintersects(double x, double y, double w, double h)测试Shape的内部是否与指定矩形区域的内部相交。booleanintersects(Rectangle2D r)测试Shape的内部是否与指定的内部相交Rectangle2D。voidsetCurve(double[] coords, int offset)将该曲线的终点和控制点的位置设置为指定数组中指定偏移处的双坐标。abstract voidsetCurve(double x1, double y1, double ctrlx1, double ctrly1, double ctrlx2, double ctrly2, double x2, double y2)将该曲线的终点和控制点的位置设置为指定的双坐标。voidsetCurve(CubicCurve2D c)将该曲线的终点和控制点的位置设置为与指定的CubicCurve2D。voidsetCurve(Point2D[] pts, int offset)将该曲线的终点和控制点的位置设置为指定数组中指定偏移量处的Point2D对象的坐标。voidsetCurve(Point2D p1, Point2D cp1, Point2D cp2, Point2D p2)将此曲线的终点和控制点的位置设置为指定的Point2D坐标。static intsolveCubic(double[] eqn)解决其系数在eqn数组中的eqn,并将非复数根返回到同一个数组中,返回根数。static intsolveCubic(double[] eqn, double[] res)求解系数在eqn数组中的eqn,并将非复数根放入res数组中,返回根数。static voidsubdivide(double[] src, int srcoff, double[] left, int leftoff, double[] right, int rightoff)细分由存储在src阵列中的坐标指定的三次曲线,索引号为srcoff至(srcoff+ 7),并将所得到的两条细分曲线存储在相应索引处的两个结果数组中。voidsubdivide(CubicCurve2D left, CubicCurve2D right)细分此三次曲线并将所得到的两个细分曲线存储在左曲线和右曲线参数中。static voidsubdivide(CubicCurve2D src, CubicCurve2D left, CubicCurve2D right)细分由src参数指定的三次曲线,并将生成的两个细分曲线存储到left和right曲线参数中。-
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface java.awt.Shape
getBounds2D
-
-
-
-
构造方法详细信息
-
CubicCurve2D
protected CubicCurve2D()
这是一个无法直接实例化的抽象类。 类型特定的实现子类可用于实例化,并提供了许多格式,用于存储满足以下各种存取方法所必需的信息。- 从以下版本开始:
- 1.2
- 另请参见:
-
CubicCurve2D.Float,CubicCurve2D.Double
-
-
方法详细信息
-
getX1
public abstract double getX1()
200新新新新200新新200新200新新200新200新新200新新200新新200新新200新新200新新新200新新200- 结果
-
起始点的X坐标为
CubicCurve2D。 - 从以下版本开始:
- 1.2
-
getY1
public abstract double getY1()
新新新新200新新200新新200新新200新新200新新200新新200新新新200新新200新新200新新200- 结果
-
起始点的Y坐标为
CubicCurve2D。 - 从以下版本开始:
- 1.2
-
getP1
public abstract Point2D getP1()
返回起始点。- 结果
-
一个
Point2D是CubicCurve2D。 - 从以下版本开始:
- 1.2
-
getCtrlX1
public abstract double getCtrlX1()
以双精度返回第一个控制点的X坐标。- 结果
-
第一个控制点的X坐标为
CubicCurve2D。 - 从以下版本开始:
- 1.2
-
getCtrlY1
public abstract double getCtrlY1()
以双精度返回第一个控制点的Y坐标。- 结果
-
第一个控制点的Y坐标为
CubicCurve2D。 - 从以下版本开始:
- 1.2
-
getCtrlP1
public abstract Point2D getCtrlP1()
返回第一个控制点。- 结果
-
一个
Point2D那就是第一控制点CubicCurve2D。 - 从以下版本开始:
- 1.2
-
getCtrlX2
public abstract double getCtrlX2()
以双精度返回第二个控制点的X坐标。- 结果
-
第二个控制点的X坐标为
CubicCurve2D。 - 从以下版本开始:
- 1.2
-
getCtrlY2
public abstract double getCtrlY2()
以双精度返回第二个控制点的Y坐标。- 结果
-
第二个控制点的Y坐标为
CubicCurve2D。 - 从以下版本开始:
- 1.2
-
getCtrlP2
public abstract Point2D getCtrlP2()
返回第二个控制点。- 结果
-
一个
Point2D那是的第二个控制点CubicCurve2D。 - 从以下版本开始:
- 1.2
-
getX2
public abstract double getX2()
X-- 结果
-
CubicCurve2D的终点的X坐标。 - 从以下版本开始:
- 1.2
-
getY2
public abstract double getY2()
以双精度返回终点的Y坐标。- 结果
-
终点的Y坐标为
CubicCurve2D。 - 从以下版本开始:
- 1.2
-
getP2
public abstract Point2D getP2()
返回终点。- 结果
-
一个
Point2D那就是终点CubicCurve2D。 - 从以下版本开始:
- 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-offset的索引,coords开始将此曲线的终点和控制点设置为coords包含的坐标 - 从以下版本开始:
- 1.2
-
setCurve
public void setCurve(Point2D p1, Point2D cp1, Point2D cp2, Point2D p2)
将该曲线的终点和控制点的位置设置为指定的Point2D坐标。- 参数
-
p1- 第一个指定的Point2D用于设置此曲线的起始点 -
cp1- 第二个指定的Point2D用于设置此曲线的第一个控制点 -
cp2- 第三个指定的Point2D用于设置此曲线的第二个控制点 -
p2- 第四个指定的Point2D用于设置此曲线的终点 - 从以下版本开始:
- 1.2
-
setCurve
public void setCurve(Point2D[] pts, int offset)
将此曲线的终点和控制点的位置设置为指定数组中指定偏移量处的Point2D对象的坐标。- 参数
-
pts- 一个Point2D对象的数组 -
offset-offset的索引,pts开始将该曲线的终点和控制点设置为pts包含的点 - 从以下版本开始:
- 1.2
-
setCurve
public void setCurve(CubicCurve2D c)
将该曲线的终点和控制点的位置设置为与指定的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-的X坐标指定的起点CubicCurve2D -
y1- Y坐标,它指定的起点CubicCurve2D -
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-的X坐标指定的起点CubicCurve2D -
y1- Y坐标,它指定的起点CubicCurve2D -
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-offset的索引,coords开始获取曲线的终点和控制点 - 结果
-
所述的平面度的平方
CubicCurve2D在由坐标指定coords指定的偏移量。 - 从以下版本开始:
- 1.2
-
getFlatness
public static double getFlatness(double[] coords, int offset)返回由指定的数组中指定的索引处存储的控制点指定的三次曲线的平坦度。 平直度是控制点与连接端点的线的最大距离。- 参数
-
coords- 包含坐标的数组 -
offset- 索引coords,从中开始获取曲线的终点和控制点 - 结果
-
所述的平坦性
CubicCurve2D在由坐标指定coords指定的偏移量。 - 从以下版本开始:
- 1.2
-
getFlatnessSq
public double getFlatnessSq()
返回该曲线的平坦度的平方。 平直度是控制点与连接端点的线的最大距离。- 结果
- 该曲线平坦度的平方。
- 从以下版本开始:
- 1.2
-
getFlatness
public double getFlatness()
返回该曲线的平坦度。 平直度是控制点与连接端点的线的最大距离。- 结果
- 这个曲线的平坦度。
- 从以下版本开始:
- 1.2
-
subdivide
public void subdivide(CubicCurve2D left, CubicCurve2D right)
细分此三次曲线并将所得到的两个细分曲线存储在左曲线和右曲线参数中。 左右对象中的一个或两个可以与该对象相同或为空。- 参数
-
left- 用于存储细分曲线左侧或前半部分的三次曲线对象 -
right- 用于存储分割曲线的右半部分或后半部分的三次曲线对象 - 从以下版本开始:
- 1.2
-
subdivide
public static void subdivide(CubicCurve2D src, CubicCurve2D left, CubicCurve2D right)
细分由src参数指定的三次曲线,并将所得到的两个细分曲线存储到left和right曲线参数中。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),并将所得到的两个细分曲线存储在相应索引处的两个结果数组中。left和right阵列中的一个或两者可以是null或对与src阵列相同的数组的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,并将非复数根返回到同一个数组中,返回根数。 求解的立方体由下式表示: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数组中的eqn,并将非复数根放入res数组中,返回根数。 求解的三次方程由等式表示:eqn = {c,b,a,d} dx ^ 3 + ax ^ 2 + bx + c = 0使用-1的返回值来区分常数方程,始终为0或从不为零,从无零的方程式。- 参数
-
eqn- 用于求解三次方程的指定数组的系数 -
res- 包含由三次方程的解得到的非复数根的数组 - 结果
- 根数,如果方程为常数则为-1
- 从以下版本开始:
- 1.3
-
contains
public boolean contains(double x, double y)测试指定的坐标是否在Shape的边界内,如 definition of insideness所述 。
-
contains
public boolean contains(Point2D p)
测试指定Point2D是的边界内Shape,如所描述的definition of insideness 。
-
intersects
public boolean intersects(double x, double y, double w, double h)测试Shape的内部是否与指定矩形区域的内部相交。 矩形区域被认为是交叉的Shape如果任何点被包含在双方的内部Shape和指定的矩形区域。Shape.intersects()方法允许Shape实现保守返回true当:- 矩形区域和
Shape相交的概率很高,但是 - 准确地确定这个交叉点的计算是非常昂贵的。
Shapes这个方法可能会返回true即使矩形区域不与Shape相交。Area类比大多数Shape对象执行几何交集的更准确的计算,因此如果需要更精确的答案,则可以使用它。- Specified by:
-
intersects在接口Shape - 参数
-
x- 指定矩形区域左上角的X坐标 -
y- 指定矩形区域左上角的Y坐标 -
w- 指定矩形区域的宽度 -
h- 指定矩形区域的高度 - 结果
-
true如果Shape的内部和矩形区域的内部相交,或者两者都很可能相交,并且交叉点计算将太昂贵执行; 否则为false。 - 从以下版本开始:
- 1.2
- 另请参见:
-
Area
- 矩形区域和
-
intersects
public boolean intersects(Rectangle2D r)
测试Shape的内部是否与指定的内部相交Rectangle2D。Shape.intersects()方法允许Shape实现保守返回true当:-
Rectangle2D和Shape相交的概率很高,但是 - 准确地确定这个交叉点的计算是非常昂贵的。
Shapes这种方法也可能返回true即使Rectangle2D不相交Shape。Area类对大多数Shape对象执行几何交集的更准确的计算,因此如果需要更精确的答案,则可以使用它。- Specified by:
-
intersects在接口Shape - 参数
-
r- 指定的Rectangle2D - 结果
-
true如果Shape的内部和指定的Rectangle2D的内部相交,或者很可能相交,并且交叉点计算将太昂贵执行;false否则。 - 从以下版本开始:
- 1.2
- 另请参见:
-
Shape.intersects(double, double, double, double)
-
-
contains
public boolean contains(double x, double y, double w, double h)测试Shape的内部Shape完全包含指定的矩形区域。 位于矩形区域内的所有坐标必须位于Shape内,因为整个矩形区域将被视为包含在Shape。Shape.contains()方法允许Shape实现保守返回false当:- 该
intersect方法返回true和 - 确定
Shape是否完全包含矩形区域的计算是非常昂贵的。
Shapes即使Shape包含矩形区域,此方法也可能返回false。Area类执行比大多数Shape对象更准确的几何计算,因此如果需要更精确的答案,则可以使用它。- Specified by:
-
contains在接口Shape - 参数
-
x- 指定矩形区域左上角的X坐标 -
y- 指定矩形区域左上角的Y坐标 -
w- 指定矩形区域的宽度 -
h- 指定矩形区域的高度 - 结果
-
true如果内部的Shape完全包含指定的矩形区域;false否则或如果Shape包含矩形区域,并且intersects方法返回true并且包含计算将太昂贵执行。 - 从以下版本开始:
- 1.2
- 另请参见:
-
Area,Shape.intersects(double, double, double, double)
- 该
-
contains
public boolean contains(Rectangle2D r)
测试Shape的内部Shape完全包含指定的Rectangle2D。Shape.contains()方法允许Shape实现保守返回false当:-
intersect方法返回true和 - 计算确定
Shape是否完全包含Rectangle2D是非常昂贵的。
Shapes这种方法也可能返回false即使Shape包含Rectangle2D。Area类比大多数Shape对象执行更精确的几何计算,因此如果需要更精确的答案,则可以使用它。- Specified by:
-
contains在接口Shape - 参数
-
r- 指定的Rectangle2D - 结果
-
true如果内部的Shape完全包含Rectangle2D;false否则或如果Shape包含Rectangle2D并且intersects方法返回true,并且遏制计算将太昂贵执行。 - 从以下版本开始:
- 1.2
- 另请参见:
-
Shape.contains(double, double, double, double)
-
-
getBounds
public Rectangle getBounds()
返回一个整数Rectangle完全包围Shape。 请注意,不保证返回的Rectangle是封闭的最小边界框Shape,只表示Shape完全在指定的范围内Rectangle。 如果Shape溢出整数数据类型的有限范围,返回的Rectangle也可能无法完全包含Shape。getBounds2D方法通常返回更严格的边界框,因为它在表示方面具有更大的灵活性。请注意, definition of insideness可能导致shape定义轮廓上的
shape不能被视为包含在返回的bounds对象中的情况,但仅在这些点也未被包含在原始shape。如果
point是内部shape根据contains(point)方法,那么它必须是内部返回Rectangle界限根据对象contains(point)所述的方法bounds。 特别:shape.contains(x,y)需要bounds.contains(x,y)如果一个
point不在shape,那么它可能仍然包含在bounds对象中:bounds.contains(x,y)并不表示shape.contains(x,y)- Specified by:
-
getBounds在接口Shape - 结果
-
一个整数
Rectangle,完全包围了Shape。 - 从以下版本开始:
- 1.2
- 另请参见:
-
Shape.getBounds2D()
-
getPathIterator
public PathIterator getPathIterator(AffineTransform at)
返回定义形状边界的迭代对象。 此类的迭代器不是多线程安全的,这意味着此CubicCurve2D类不保证对此CubicCurve2D对象的几何的修改不会影响已经处理的该几何的任何迭代。- Specified by:
-
getPathIterator在接口Shape - 参数
-
at- 要在迭代中返回时应用于坐标的可选AffineTransform,如果未转换坐标是null - 结果
-
该
PathIterator对象返回此CubicCurve2D的轮廓的几何,一次一个段。 - 从以下版本开始:
- 1.2
-
getPathIterator
public PathIterator getPathIterator(AffineTransform at, double flatness)
返回定义展平形状边界的迭代对象。 此类的迭代器不是多线程安全的,这意味着此CubicCurve2D类不保证对此CubicCurve2D对象的几何的修改不会影响已处理的该几何的任何迭代。- Specified by:
-
getPathIterator接口Shape - 参数
-
at- 要在迭代中返回时应用于坐标的可选AffineTransform,如果需要未转换的坐标,null -
flatness- 给定曲线的控制点的最大量可以在共线之前变化,而细分曲线由连接终点的直线代替 - 结果
-
PathIterator对象,返回此CubicCurve2D的轮廓的几何,CubicCurve2D一个段。 - 从以下版本开始:
- 1.2
-
clone
public Object clone()
创建与此对象相同类的新对象。- 重写:
-
clone在Object - 结果
- 这个实例的一个克隆。
- 异常
-
OutOfMemoryError- 如果没有足够的内存 - 从以下版本开始:
- 1.2
- 另请参见:
-
Cloneable
-
-