public abstract class CubicCurve2D extends Object implements Shape, Cloneable
CubicCurve2D
类在(x,y)
坐标空间中定义了一个三次参数曲线段。
该类只是存储二维立方曲线段的所有对象的抽象超类。 坐标的实际存储表示留给子类。
Modifier and Type | Class and Description |
---|---|
static class |
CubicCurve2D.Double
用
double 坐标指定的三次参数曲线段。
|
static class |
CubicCurve2D.Float
用
float 坐标指定的三次参数曲线段。
|
Modifier | Constructor and Description |
---|---|
protected |
CubicCurve2D()
这是一个无法直接实例化的抽象类。
|
Modifier and Type | Method and Description |
---|---|
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()
以双精度返回起始点的X坐标。
|
abstract double |
getX2()
以双精度返回终点的X坐标。
|
abstract double |
getY1()
以双精度返回起始点的Y坐标。
|
abstract double |
getY2()
以双精度返回终点的Y坐标。
|
boolean |
intersects(double x, double y, double w, double h)
测试,如果内部
Shape 相交的指定矩形区域的内部。
|
boolean |
intersects(Rectangle2D r)
如果测试的内部
Shape 相交指定的内部
Rectangle2D 。
|
void |
setCurve(CubicCurve2D c)
将该曲线的终点和控制点的位置设置为与指定的CubicCurve2D中的
CubicCurve2D 。
|
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(Point2D[] pts, int offset)
将此曲线到的坐标的结束点和控制点的位置
Point2D 在指定的数组中指定偏移量的对象。
|
void |
setCurve(Point2D p1, Point2D cp1, Point2D cp2, Point2D p2)
将该曲线的终点和控制点的位置设置为指定的坐标
Point2D Point2D。
|
static int |
solveCubic(double[] eqn)
解决系数在
eqn 数组中的
eqn ,并将非复数根返回到同一个数组中,返回根数。
|
static int |
solveCubic(double[] eqn, double[] res)
解决系数在
eqn 数组中的
eqn ,并将非复数根放入
res 数组中,返回根数。
|
void |
subdivide(CubicCurve2D left, CubicCurve2D 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),并在相应索引存储所得到的两个细分曲线到两个结果阵列。
|
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getBounds2D
protected CubicCurve2D()
CubicCurve2D.Float
, CubicCurve2D.Double
public abstract double getX1()
CubicCurve2D
。
public abstract double getY1()
CubicCurve2D
。
public abstract Point2D getP1()
Point2D
是
CubicCurve2D
。
public abstract double getCtrlX1()
CubicCurve2D
。
public abstract double getCtrlY1()
CubicCurve2D
。
public abstract Point2D getCtrlP1()
Point2D
也就是第一个控制点
CubicCurve2D
。
public abstract double getCtrlX2()
CubicCurve2D
。
public abstract double getCtrlY2()
CubicCurve2D
。
public abstract Point2D getCtrlP2()
Point2D
那是的第二个控制点
CubicCurve2D
。
public abstract double getX2()
CubicCurve2D
。
public abstract double getY2()
CubicCurve2D
。
public abstract Point2D getP2()
Point2D
是
CubicCurve2D
。
public abstract void setCurve(double x1, double y1, double ctrlx1, double ctrly1, double ctrlx2, double ctrly2, double x2, double y2)
x1
- 用于设置此
CubicCurve2D
的X
CubicCurve2D
y1
- 用于设置此
CubicCurve2D
的Y
CubicCurve2D
ctrlx1
- 用于设置此
CubicCurve2D
的第一个控制点的X
CubicCurve2D
ctrly1
- 用于设置此
CubicCurve2D
的第一个控制点的Y
CubicCurve2D
ctrlx2
- 用于设置此
CubicCurve2D
的第二个控制点的X
CubicCurve2D
ctrly2
- 用于设置此
CubicCurve2D
的第二个控制点的Y
CubicCurve2D
x2
- 用于设置此
CubicCurve2D
的终点的X
CubicCurve2D
y2
- 用于设置此
CubicCurve2D
的终点的Y
CubicCurve2D
public void setCurve(double[] coords, int offset)
coords
- 一个包含坐标的双数组
offset
-
offset
的索引,
coords
开始将该曲线的终点和控制点设置为包含在
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
-
offset
的索引,
pts
开始将此曲线的终点和控制点设置为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
- 指定
x1
的X
CubicCurve2D
y1
- 指定
y1
的Y
CubicCurve2D
ctrlx1
- 指定CubicCurve2D的第一个控制点的X
CubicCurve2D
ctrly1
- 指定CubicCurve2D的第一个控制点的Y
CubicCurve2D
ctrlx2
- 指定CubicCurve2D的第二个控制点的X
CubicCurve2D
ctrly2
- 指定CubicCurve2D的第二个控制点的Y
CubicCurve2D
x2
- 指定CubicCurve2D的终点的X
CubicCurve2D
y2
- 指定CubicCurve2D的终点的Y
CubicCurve2D
CubicCurve2D
的平坦度由指定坐标表示。
public static double getFlatness(double x1, double y1, double ctrlx1, double ctrly1, double ctrlx2, double ctrly2, double x2, double y2)
x1
- 指定
x1
的X
CubicCurve2D
y1
- 指定
y1
的Y
CubicCurve2D
ctrlx1
- 指定CubicCurve2D的第一个控制点的X
CubicCurve2D
ctrly1
- 指定CubicCurve2D的第一个控制点的Y
CubicCurve2D
ctrlx2
- 指定CubicCurve2D的第二个控制点的X
CubicCurve2D
ctrly2
- 指定CubicCurve2D的第二个控制点的Y
CubicCurve2D
x2
- 指定CubicCurve2D的终点的X
CubicCurve2D
y2
- 指定CubicCurve2D的终点的Y
CubicCurve2D
CubicCurve2D
的平坦度。
public static double getFlatnessSq(double[] coords, int offset)
coords
- 包含坐标的数组
offset
-
offset
的索引,
coords
开始获取曲线的终点和控制点
CubicCurve2D
的平坦度的平方根由指定的偏移处的坐标在
coords
中指定。
public static double getFlatness(double[] coords, int offset)
coords
- 包含坐标的数组
offset
-的索引
coords
,从此处开始得到曲线的端点和控制点
CubicCurve2D
的平坦度由指定偏移量的
coords
中的坐标指定。
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
数组中的src
指定的三次曲线,索引号为srcoff
至( srcoff
+ 7),并将所得到的两个细分曲线存储在相应索引处的两个结果数组中。
left
和right
阵列中的一个或两者可以是null
或对与src
阵列相同的阵列的src
。
请注意,第一个细分曲线中的最后一个点与第二个细分曲线中的第一个点相同。
因此,可以通过相同的数组为left
和right
,并使用偏移量,例如rightoff
等于( leftoff
+ 6),以避免为该公共点分配额外的存储空间。
src
- 保存源曲线
src
的数组
srcoff
- 偏移到数组的开头的6个源坐标
left
- 用于存储细分曲线前半部分坐标的数组
leftoff
- 偏移到六位左坐标开头的数组
right
- 用于存储细分曲线
right
的数组
rightoff
- 偏移到数组的6个右坐标的开头
public static int solveCubic(double[] eqn)
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
数组中的eqn
,并将非复数根放入res
数组中,返回根数。
求解的三次方程由等式表示:eqn = {c,b,a,d} dx ^ 3 + ax ^ 2 + bx + c = 0使用-1的返回值来区分常数方程,始终为0或从不为零,从无零的方程式。
eqn
- 用于求解三次方程的指定数组的系数
res
- 包含由三次方程解得到的非复数根的数组
public boolean contains(double x, double y)
Shape
,如所描述的
definition of insideness 。
public boolean contains(Point2D p)
Point2D
是的边界内Shape
,如所描述的definition of insideness 。
public boolean intersects(double x, double y, double w, double h)
Shape
相交的指定矩形区域的内部。
矩形区域被认为是交叉的Shape
如果任何点被包含在双方的内部Shape
和指定的矩形区域。
Shape.intersects()
方法允许一个Shape
实现保守返回true
当:
Shape
相交,但是 Shapes
这种方法也可能返回true
即使矩形区域没有相交Shape
。
所述Area
类执行几何相交的更精确的计算比大多数Shape
可以,如果需要更精确的答案被使用的对象,因此。
intersects
在界面
Shape
x
- 指定矩形区域左上角的X坐标
y
- 指定矩形区域左上角的Y坐标
w
- 指定矩形区域的宽度
h
- 指定矩形区域的高度
true
如果Shape
的内部和矩形区域的内部相交,或者两者都很可能相交,并且交叉点计算将太昂贵执行;
false
否则。
Area
public boolean intersects(Rectangle2D r)
Shape
相交指定的内部Rectangle2D
。
该Shape.intersects()
方法允许Shape
实现谨慎地返回true
时:
Rectangle2D
和Shape
相交的Shape
很高,但是 Shapes
这种方法也可能返回true
即使Rectangle2D
不相交Shape
。
所述Area
类执行几何相交的更精确的计算比大多数Shape
可以,如果需要更精确的答案被使用的对象,因此。
intersects
在接口
Shape
r
- 指定的
Rectangle2D
true
如果内部Shape
和指定的内部Rectangle2D
相交,或两者均是高度可能相交及交叉点计算。将执行太贵;
false
否则。
Shape.intersects(double, double, double, double)
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
对象,因此可以在需要更精确的答案一起使用。
contains
在界面
Shape
x
- 指定矩形区域左上角的X坐标
y
- 指定矩形区域左上角的Y坐标
w
- 指定矩形区域的宽度
h
- 指定矩形区域的高度
true
如果内部Shape
完全包含指定矩形区域;
false
否则或如果Shape
包含矩形区域,并且intersects
方法返回true
并且包含计算将太昂贵执行。
Area
, Shape.intersects(double, double, double, double)
public boolean contains(Rectangle2D r)
Shape
的内部Shape
全部包含指定的Rectangle2D
。
该Shape.contains()
方法允许Shape
实现谨慎地返回false
时:
intersect
方法返回true
和 Shape
完全包含Rectangle2D
的代价太高。 Shapes
这个方法可能会返回false
即使Shape
包含Rectangle2D
。
所述Area
类比大多数执行更精确的几何计算Shape
对象,因此可以在需要更精确的答案一起使用。
contains
在接口
Shape
r
- 指定的
Rectangle2D
true
如果内部的Shape
完全包含Rectangle2D
;
false
否则或如果Shape
包含Rectangle2D
和intersects
方法返回true
并且包含计算将太昂贵执行。
Shape.contains(double, double, double, double)
public Rectangle getBounds()
Rectangle
完全包围Shape
。
需要注意的是没有保证返回Rectangle
是最小的边框包围Shape
,只表示Shape
完全在指定的范围内Rectangle
。
如果Shape
溢出整数数据类型的有限范围,返回的Rectangle
也可能无法完全包围Shape
。
getBounds2D
方法通常返回更严格的边界框,因为它在表示方面具有更大的灵活性。
请注意, definition of insideness可能会导致在返回的bounds
对象中不能将shape定义轮廓上的点shape
包含的情况,但仅在原始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)
getBounds
在界面
Shape
Rectangle
,完全包围了
Shape
。
Shape.getBounds2D()
public PathIterator getPathIterator(AffineTransform at)
CubicCurve2D
类不保证对此CubicCurve2D
对象的几何的CubicCurve2D
不会影响已处理的该几何的任何迭代。
getPathIterator
在界面
Shape
at
- 要在迭代中返回时应用于
at
的可选
AffineTransform
,如果需要未转换的
null
,则为null
PathIterator
对象返回这个
CubicCurve2D
的轮廓的几何,一次一个段。
public PathIterator getPathIterator(AffineTransform at, double flatness)
CubicCurve2D
类不保证对此CubicCurve2D
对象的几何的CubicCurve2D
不会影响已处理的该几何的任何迭代。
getPathIterator
在界面
Shape
at
- 在迭代中返回的应用于
at
的可选
AffineTransform
,如果需要未转换的
null
,则为null
flatness
- 给定曲线的控制点的最大量可以在共线之前变化,而细分曲线由连接终点的直线代替
PathIterator
对象返回此
CubicCurve2D
的轮廓的几何,一次一个段。
public Object clone()
clone
在类别
Object
OutOfMemoryError
- 如果没有足够的内存
Cloneable
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.