- 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 class
CubicCurve2D.Double
用double
坐标指定的三次参数曲线段。static class
CubicCurve2D.Float
用float
坐标指定的三次参数曲线段。
-
构造方法摘要
构造方法 Modifier Constructor 描述 protected
CubicCurve2D()
这是一个无法直接实例化的抽象类。
-
方法摘要
所有方法 静态方法 接口方法 抽象方法 具体的方法 Modifier and Type 方法 描述 Object
clone()
创建与此对象相同类的新对象。boolean
contains(double x, double y)
测试指定的坐标是否在Shape
的边界内,如 definition of insideness所述 。boolean
contains(double x, double y, double w, double h)
测试Shape
的内部Shape
完全包含指定的矩形区域。boolean
contains(Point2D p)
测试指定Point2D
是的边界内Shape
,如所描述的definition of insideness 。boolean
contains(Rectangle2D r)
测试Shape
的内部Shape
全部包含指定的Rectangle2D
。Rectangle
getBounds()
返回一个整数Rectangle
完全包围Shape
。abstract Point2D
getCtrlP1()
返回第一个控制点。abstract Point2D
getCtrlP2()
返回第二个控制点。abstract double
getCtrlX1()
以双精度返回第一个控制点的X坐标。abstract double
getCtrlX2()
以双精度返回第二个控制点的X坐标。abstract double
getCtrlY1()
以双精度返回第一个控制点的Y坐标。abstract double
getCtrlY2()
以双精度返回第二个控制点的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()
200新新新新200新新200新200新新200新200新新200新新200新新200新新200新新200新新新200新新200abstract double
getX2()
X-abstract double
getY1()
新新新新200新新200新新200新新200新新200新新200新新200新新新200新新200新新200新新200abstract double
getY2()
以双精度返回终点的Y坐标。boolean
intersects(double x, double y, double w, double h)
测试Shape
的内部是否与指定矩形区域的内部相交。boolean
intersects(Rectangle2D r)
测试Shape
的内部是否与指定的内部相交Rectangle2D
。void
setCurve(double[] coords, int offset)
将该曲线的终点和控制点的位置设置为指定数组中指定偏移处的双坐标。abstract void
setCurve(double x1, double y1, double ctrlx1, double ctrly1, double ctrlx2, double ctrly2, double x2, double y2)
将该曲线的终点和控制点的位置设置为指定的双坐标。void
setCurve(CubicCurve2D c)
将该曲线的终点和控制点的位置设置为与指定的CubicCurve2D
。void
setCurve(Point2D[] pts, int offset)
将该曲线的终点和控制点的位置设置为指定数组中指定偏移量处的Point2D
对象的坐标。void
setCurve(Point2D p1, Point2D cp1, Point2D cp2, Point2D p2)
将此曲线的终点和控制点的位置设置为指定的Point2D
坐标。static int
solveCubic(double[] eqn)
解决其系数在eqn
数组中的eqn
,并将非复数根返回到同一个数组中,返回根数。static int
solveCubic(double[] eqn, double[] res)
求解系数在eqn
数组中的eqn
,并将非复数根放入res
数组中,返回根数。static void
subdivide(double[] src, int srcoff, double[] left, int leftoff, double[] right, int rightoff)
细分由存储在src
阵列中的坐标指定的三次曲线,索引号为srcoff
至(srcoff
+ 7),并将所得到的两条细分曲线存储在相应索引处的两个结果数组中。void
subdivide(CubicCurve2D left, CubicCurve2D right)
细分此三次曲线并将所得到的两个细分曲线存储在左曲线和右曲线参数中。static void
subdivide(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
-
-