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, waitgetBounds2Dprotected 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.