public abstract class QuadCurve2D extends Object implements Shape, Cloneable
QuadCurve2D
类定义了(x,y)
坐标空间中的二次参数曲线段。
该类只是存储2D二次曲线段的所有对象的抽象超类。 坐标的实际存储表示留给子类。
Modifier and Type | Class and Description |
---|---|
static class |
QuadCurve2D.Double
的二次参数曲线段与指定
double 坐标。
|
static class |
QuadCurve2D.Float
的二次参数曲线段与指定
float 坐标。
|
Modifier | Constructor and Description |
---|---|
protected |
QuadCurve2D()
这是一个无法直接实例化的抽象类。
|
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 |
getCtrlPt()
返回控制点。
|
abstract double |
getCtrlX()
以double精度返回控制点的
double 坐标。
|
abstract double |
getCtrlY()
以double精度返回控制点的
double 坐标。
|
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()
返回X起点在协调
double 精度。
|
abstract double |
getX2()
返回结束点的X坐标
double 精度。
|
abstract double |
getY1()
返回起始点的Y坐标在
double 精度。
|
abstract double |
getY2()
返回结束点的Y坐标
double 精度。
|
boolean |
intersects(double x, double y, double w, double h)
测试,如果内部
Shape 相交的指定矩形区域的内部。
|
boolean |
intersects(Rectangle2D r)
测试Shape的内部是否与
Shape Rectangle2D的内部
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 数组中的
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 数组中的
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 曲线参数。
|
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getBounds2D
protected QuadCurve2D()
QuadCurve2D.Float
, QuadCurve2D.Double
public abstract double getX1()
double
精度。
public abstract double getY1()
double
精度。
public abstract Point2D getP1()
Point2D
这是这个
QuadCurve2D
。
public abstract double getCtrlX()
double
精度。
public abstract double getCtrlY()
double
坐标。
public abstract Point2D getCtrlPt()
Point2D
是这个
Point2D
的控制点。
public abstract double getX2()
double
精度。
public abstract double getY2()
double
精度。
public abstract Point2D getP2()
Point
对象是这个
Point2D
。
public abstract void setCurve(double x1, double y1, double ctrlx, double ctrly, double x2, double y2)
double
double。
x1
-
x1
的X坐标
y1
-
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
从
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
-
x1
的X坐标
y1
-
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
-
x1
的X坐标
y1
-
y1
的Y坐标
ctrlx
- 控制点的X坐标
ctrly
- 控制点的Y坐标
x2
- 终点的X坐标
y2
- 终点的Y坐标
public static double getFlatnessSq(double[] coords, int offset)
coords
- 包含坐标值的数组
offset
- 索引到
coords
从
coords
开始从数组中获取值
public static double getFlatness(double[] coords, int offset)
coords
- 包含坐标值的数组
offset
- 索引到
coords
,从中开始获取坐标值
public double getFlatnessSq()
QuadCurve2D
的平面度的平方或控制点与连接终点的线的最大距离。
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
数组中的src
指定的二次曲线,索引为srcoff
至srcoff
+ 5,并将所得到的两个细分曲线存储在相应索引处的两个结果数组中。
所述的任一或两者left
个right
数组可以是null
或同一数组的引用和作为偏移src
阵列。
请注意,第一个细分曲线中的最后一个点与第二个细分曲线中的第一个点相同。
因此,可以通过相同的阵列为left
和right
,并使用偏移量,以便rightoff
等于leftoff
+ 4,以避免为该公共点分配额外的存储空间。
src
- 保存源曲线
src
的数组
srcoff
- 偏移到数组的开头的6个源坐标
left
- 用于存储细分曲线前半部分坐标的数组
leftoff
- 偏移到六位左坐标开头的数组
right
- 用于存储细分曲线
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
,如所描述的
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可能导致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)
getBounds
在界面
Shape
Rectangle
,完全包围了
Shape
。
Shape.getBounds2D()
public PathIterator getPathIterator(AffineTransform at)
QuadCurve2D
形状边界的迭代对象。
此类的迭代器不是多线程安全的,这意味着此QuadCurve2D
类不保证对此QuadCurve2D
对象的几何的QuadCurve2D
不会影响已处理的该几何的任何迭代。
getPathIterator
在界面
Shape
at
- 可选的AffineTransform
适用于形状边界
PathIterator
对象。
public PathIterator getPathIterator(AffineTransform at, double flatness)
QuadCurve2D
。
此类的迭代器不是多线程安全的,这意味着此QuadCurve2D
类不保证对此QuadCurve2D
对象的几何的QuadCurve2D
不会影响已处理的该几何的任何迭代。
getPathIterator
在界面
Shape
at
- 可选的
AffineTransform
适用于形状的边界
flatness
- 在将曲线替换为连接终点的直线之前,细分曲线的控制点的最大距离可以相对于连接该曲线端点的线。
PathIterator
对象,用于定义形状的平坦边界。
public Object clone()
clone
在类别
Object
OutOfMemoryError
- 如果没有足够的内存
Cloneable