public abstract class Line2D extends Object implements Shape, Cloneable
Line2D
表示(x,y)
坐标空间中的一个线段。
该类与所有Java 2D API一样,使用一个名为“ 用户空间”的默认坐标系,其中y轴值向下增加,x轴值向右增加。
有关用户空间坐标系的更多信息,请参阅“Java 2D程序员指南”的Coordinate Systems部分。
此类只是存储2D线段的所有对象的抽象超类。 坐标的实际存储表示留给子类。
Modifier and Type | Class and Description |
---|---|
static class |
Line2D.Double
用双坐标指定的线段。
|
static class |
Line2D.Float
用浮点坐标指定的线段。
|
Modifier | Constructor and Description |
---|---|
protected |
Line2D()
这是一个无法直接实例化的抽象类。
|
Modifier and Type | Method and Description |
---|---|
Object |
clone()
创建与此对象相同类的新对象。
|
boolean |
contains(double x, double y)
测试指定的坐标是否在此
Line2D 的边界内。
|
boolean |
contains(double x, double y, double w, double h)
测试这个
Line2D 的内部是否包含指定的一组直角坐标。
|
boolean |
contains(Point2D p)
测试一个给定的
Point2D 是否在这个
Line2D 的边界内。
|
boolean |
contains(Rectangle2D r)
测试这个
Line2D 的内部
Line2D 全部包含指定的
Rectangle2D 。
|
Rectangle |
getBounds()
返回一个整数 Rectangle 完全包围Shape 。
|
abstract Point2D |
getP1()
返回开始
Point2D 这一点
Line2D 。
|
abstract Point2D |
getP2()
返回结束
Point2D 这一点
Line2D 。
|
PathIterator |
getPathIterator(AffineTransform at)
返回一个定义
Line2D 边界的迭代对象。
|
PathIterator |
getPathIterator(AffineTransform at, double flatness)
返回一个迭代对象,该对象定义了此扁平
Line2D 的边界
Line2D 。
|
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 。
|
boolean |
intersectsLine(double x1, double y1, double x2, double y2)
测试从
(x1,y1) 到
(x2,y2) 线段是否与此线段相交。
|
boolean |
intersectsLine(Line2D l)
测试指定的线段是否与此线段相交。
|
static boolean |
linesIntersect(double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4)
测试,如果线段从
(x1,y1) 至
(x2,y2) 相交的线段从
(x3,y3) 至
(x4,y4) 。
|
double |
ptLineDist(double px, double py)
返回从点到此行的距离。
|
static double |
ptLineDist(double x1, double y1, double x2, double y2, double px, double py)
返回从点到行的距离。
|
double |
ptLineDist(Point2D pt)
返回从
Point2D 到此行的距离。
|
double |
ptLineDistSq(double px, double py)
返回从点到此行的距离的平方。
|
static double |
ptLineDistSq(double x1, double y1, double x2, double y2, double px, double py)
返回从点到行的距离的平方。
|
double |
ptLineDistSq(Point2D pt)
返回从指定的
Point2D 到此行的距离的平方。
|
double |
ptSegDist(double px, double py)
返回从点到此线段的距离。
|
static double |
ptSegDist(double x1, double y1, double x2, double y2, double px, double py)
返回从点到线段的距离。
|
double |
ptSegDist(Point2D pt)
返回从
Point2D 到此线段的距离。
|
double |
ptSegDistSq(double px, double py)
返回从点到该线段的距离的平方。
|
static double |
ptSegDistSq(double x1, double y1, double x2, double y2, double px, double py)
返回从点到线段的距离的平方。
|
double |
ptSegDistSq(Point2D pt)
返回从
Point2D 到此线段的距离的平方。
|
int |
relativeCCW(double px, double py)
返回指定点
(px,py) 相对于该线段所在的位置的指示符。
|
static int |
relativeCCW(double x1, double y1, double x2, double y2, double px, double py)
返回指定点
(px,py) 相对于从
(x1,y1) 到
(x2,y2) 线段的
(x1,y1) 的
(x2,y2) 。
|
int |
relativeCCW(Point2D p)
返回的其中指定的指示符
Point2D 在于相对于该线段。
|
abstract void |
setLine(double x1, double y1, double x2, double y2)
将此
Line2D 的终点的位置设置为指定的双坐标。
|
void |
setLine(Line2D l)
设置此结束点的位置
Line2D 到为指定的那些终点
Line2D 。
|
void |
setLine(Point2D p1, Point2D p2)
将此
Line2D 的终点的位置设置为指定的
Point2D 坐标。
|
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getBounds2D
protected Line2D()
Line2D.Float
, Line2D.Double
public abstract double getX1()
Line2D
对象的起始点的X坐标。
public abstract double getY1()
Line2D
对象的起点的Y坐标。
public abstract Point2D getP1()
Point2D
这一点
Line2D
。
Point2D
这一点
Line2D
。
public abstract double getX2()
Line2D
对象的终点的X坐标。
public abstract double getY2()
Line2D
对象的终点的Y坐标。
public abstract Point2D getP2()
Point2D
这一点
Line2D
。
Point2D
的这个
Line2D
。
public abstract void setLine(double x1, double y1, double x2, double y2)
Line2D
的终点的位置设置为指定的双坐标。
x1
-
x1
的X坐标
y1
-
y1
的Y坐标
x2
- 终点的X坐标
y2
- 终点的Y坐标
public void setLine(Point2D p1, Point2D p2)
Line2D
的终点的位置设置为指定的
Point2D
坐标。
p1
- 线段的开始
Point2D
p2
- 线段的末端
Point2D
public void setLine(Line2D l)
Line2D
到为指定的那些终点
Line2D
。
l
- 指定的
Line2D
public static int relativeCCW(double x1, double y1, double x2, double y2, double px, double py)
(px,py)
相对于从(x1,y1)
到(x2,y2)
线段的(x1,y1)
的(x2,y2)
。
返回值可以是1,-1或0,并且指示指定的行必须围绕其第一个终点(x1,y1)
围绕哪个方向枢转,以便指向指定点(px,py)
。
返回值为1表示线段必须朝向正Y轴的正X轴方向转动。 在Java 2D使用的默认坐标系中,该方向是逆时针方向。
返回值为-1表示线段必须朝向正Y轴取正X轴的方向转动。 在默认坐标系中,该方向为顺时针方向。
返回值为0表示该点正好位于线段上。 请注意,指标值为0是罕见的,因为浮点舍入问题而不能用于确定共线性。
如果该点共线与线段,但终点之间没有,则该值将是-1如果点“超越(x1,y1)
”或1如果点“超越(x2,y2)
”。
x1
- 指定
x1
的X坐标
y1
- 指定
y1
的Y坐标
x2
- 指定线段终点的X坐标
y2
- 指定线段终点的Y坐标
px
- 要与指定线段进行比较的指定点的X坐标
py
- 要与指定线段进行比较的指定点的Y坐标
public int relativeCCW(double px, double py)
(px,py)
相对于该线段位于哪里的指示符。
请参阅relativeCCW(double, double, double, double, double, double)
的方法注释来解释返回值。
px
- 与此
Line2D
进行比较的指定点的X
Line2D
py
- 与此
Line2D
进行比较的指定点的Y
Line2D
Line2D
relativeCCW(double, double, double, double, double, double)
public int relativeCCW(Point2D p)
Point2D
在于相对于该线段。
请参阅relativeCCW(double, double, double, double, double, double)
的方法注释来解释返回值。
p
- 指定的
Point2D
要与此
Line2D
进行比较
Point2D
相对于这个
Line2D
relativeCCW(double, double, double, double, double, double)
public static boolean linesIntersect(double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4)
(x1,y1)
至
(x2,y2)
相交的线段从
(x3,y3)
至
(x4,y4)
。
x1
- 第一个指定线段起始点的X坐标
y1
- 第一个指定线段起始点的Y坐标
x2
- 第一个指定线段的终点的X坐标
y2
- 第一个指定线段的终点的Y坐标
x3
- 第二个指定线段起始点的X坐标
y3
- 第二个指定线段起始点的Y坐标
x4
- 第二个指定线段的终点的X坐标
y4
- 第二个指定线段终点的Y坐标
true
如果第一指定线段和第二指定线段相交;
false
否则。
public boolean intersectsLine(double x1, double y1, double x2, double y2)
(x1,y1)
到
(x2,y2)
线段是否与此线段相交。
x1
- 指定
x1
的X坐标
y1
- 指定
y1
的Y坐标
x2
- 指定线段终点的X坐标
y2
- 指定线段终点的Y坐标
<true>
如果这个线段和指定的线段相交;
false
否则。
public boolean intersectsLine(Line2D l)
l
- 指定的
Line2D
true
如果这个线段和指定的线段相交;
false
否则。
public static double ptSegDistSq(double x1, double y1, double x2, double y2, double px, double py)
x1
- 指定
x1
的X坐标
y1
- 指定
y1
的Y坐标
x2
- 指定线段终点的X坐标
y2
- 指定线段终点的Y坐标
px
- 根据指定线段测量的指定点的X坐标
py
- 根据指定的线段测量指定点的Y坐标
ptLineDistSq(double, double, double, double, double, double)
public static double ptSegDist(double x1, double y1, double x2, double y2, double px, double py)
x1
- 指定
x1
的X坐标
y1
- 指定
y1
的Y坐标
x2
- 指定线段终点的X坐标
y2
- 指定线段终点的Y坐标
px
- 相对于指定线段测量的指定点的X坐标
py
- 相对于指定线段测量的指定点的Y坐标
ptLineDist(double, double, double, double, double, double)
public double ptSegDistSq(double px, double py)
px
- 针对该线段测量的指定点的X坐标
py
- 针对该线段测量的指定点的Y坐标
ptLineDistSq(double, double)
public double ptSegDistSq(Point2D pt)
Point2D
到此线段的距离的平方。
测量的距离是指定点与当前行终点之间最近点之间的距离。
如果指定的点与终点之间的线段相交,则此方法返回0.0。
pt
- 根据该线段测量指定的
Point2D
。
Point2D
到当前线段的距离的平方。
ptLineDistSq(Point2D)
public double ptSegDist(double px, double py)
px
- 针对该线段测量的指定点的X坐标
py
- 针对该线段测量的指定点的Y坐标
ptLineDist(double, double)
public double ptSegDist(Point2D pt)
Point2D
到此线段的距离。
测量的距离是指定点与当前行终点之间最近点之间的距离。
如果指定的点与终点之间的线段相交,则此方法返回0.0。
pt
- 根据此线段测量指定的
Point2D
Point2D
到当前线段的距离。
ptLineDist(Point2D)
public static double ptLineDistSq(double x1, double y1, double x2, double y2, double px, double py)
x1
- 指定行的起始点的X坐标
y1
- 指定行起始点的Y坐标
x2
- 指定行终点的X坐标
y2
- 指定行终点的Y坐标
px
- 根据指定行测量的指定点的X坐标
py
- 指定点的Y坐标是根据指定的线进行测量
ptSegDistSq(double, double, double, double, double, double)
public static double ptLineDist(double x1, double y1, double x2, double y2, double px, double py)
x1
- 指定行起始点的X坐标
y1
- 指定行起始点的Y坐标
x2
- 指定行终点的X坐标
y2
- 指定行终点的Y坐标
px
- 根据指定行测量的指定点的X坐标
py
- 根据指定行测量的指定点的Y坐标
ptSegDist(double, double, double, double, double, double)
public double ptLineDistSq(double px, double py)
Line2D
。
如果指定的点与行相交,则此方法返回0.0。
px
- 针对该行测量的指定点的X坐标
py
- 针对该行测量的指定点的Y坐标
ptSegDistSq(double, double)
public double ptLineDistSq(Point2D pt)
Point2D
到此行的距离的平方。
测量的距离是从指定点到在由此限定的无限延长线上的最近点之间的距离Line2D
。
如果指定的点与行相交,则此方法返回0.0。
pt
- 指定的
Point2D
是针对该行进行测量的
Point2D
到当前行的距离的平方。
ptSegDistSq(Point2D)
public double ptLineDist(double px, double py)
Line2D
。
如果指定的点与行相交,则此方法返回0.0。
px
- 针对该行测量的指定点的X坐标
py
- 相对于此线测量的指定点的Y坐标
ptSegDist(double, double)
public double ptLineDist(Point2D pt)
Point2D
到此行的距离。
测量的距离是从指定点到在由此限定的无限延长线上的最近点之间的距离Line2D
。
如果指定的点与行相交,则此方法返回0.0。
pt
- 正在测量指定的
Point2D
Point2D
到当前行的距离。
ptSegDist(Point2D)
public boolean contains(double x, double y)
Line2D
的边界内。
这种方法是实现Shape
接口所必需的 ,但在Line2D
对象的情况下,它总是返回false
因为一行不包含区域。
public boolean contains(Point2D p)
Point2D
是否在这个Line2D
的边界内。
这种方法是实现Shape
接口所必需的 ,但在Line2D
对象的情况下,它总是返回false
因为一行不包含区域。
public boolean intersects(double x, double y, double w, double h)
Shape
相交的指定矩形区域的内部。
矩形区域被认为是交叉的Shape
如果任何点被包含在双方的内部Shape
和指定的矩形区域。
该Shape.intersects()
方法允许Shape
实现谨慎地返回true
时:
Shape
相交的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)
Line2D
的内部Line2D
完全包含指定的一组直角坐标。
这种方法是实现Shape接口所Shape
,但在Line2D
对象的情况下,它总是返回false,因为一行不包含区域。
contains
在界面
Shape
x
- 指定矩形区域左上角的X坐标
y
- 指定矩形区域左上角的Y坐标
w
- 指定矩形区域的宽度
h
- 指定矩形区域的高度
false
因为
Line2D
没有区域。
Area
, Shape.intersects(double, double, double, double)
public boolean contains(Rectangle2D r)
Line2D
的内部Line2D
全部包含指定的Rectangle2D
。
这种方法是实现Shape接口所Shape
,但在Line2D
对象的情况下,它始终返回false
因为一行不包含区域。
contains
在界面
Shape
r
- 要测试的指定的
Rectangle2D
false
因为
Line2D
包含区域。
Shape.contains(double, double, double, double)
public Rectangle getBounds()
Rectangle
完全包围Shape
。
需要注意的是没有保证返回Rectangle
是最小的边框包围Shape
,只表示Shape
完全在指定的范围内Rectangle
。
返回的Rectangle
也可能无法完全包围Shape
如果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)
Line2D
边界的迭代对象。
此类的迭代器不是多线程安全的,这意味着此Line2D
类不保证对此Line2D
对象的几何的Line2D
不会影响已经处理的该几何的任何迭代。
getPathIterator
在界面
Shape
at
- 指定的AffineTransform
PathIterator
定义了这个Line2D
的边界。
public PathIterator getPathIterator(AffineTransform at, double flatness)
Line2D
的边界Line2D
。
此类的迭代器不是多线程安全的,这意味着此Line2D
类不保证对此Line2D
对象的几何的Line2D
不会影响已处理的该几何的任何迭代。
getPathIterator
在界面
Shape
at
- 指定的
AffineTransform
flatness
- 给定曲线的控制点的最大量可以在一条细分曲线被连接端点的直线代替之前从共线线变化。
由于Line2D
对象总是平坦的,因此该参数将被忽略。
PathIterator
定义了平铺
Line2D
的边界
public Object clone()
clone
在类别
Object
OutOfMemoryError
- 如果没有足够的内存
Cloneable