Polygon
类封装了坐标空间中封闭的二维区域的描述。此区域以任意条线段为边界,每条线段都是多边形的一条边。在内部,一个多边形包含一列
(x,y)
坐标对,其中每个坐标对(coordinate pair)定义多边形的一个
顶点
,且两个连续的坐标对是多边形一条边的端点。第一个和最后一个
(x,y)
坐标对通过一条线段相连,形成一个封闭的多边形。此
Polygon
是按奇-偶性旋绕规则来定义的。有关奇-偶性旋绕规则的定义,请参见
WIND_EVEN_ODD
。此类的目标测试方法使用
Shape
类注释中描述的
insideness
定义,目标测试方法包括
contains
、
intersects
和
inside
方法。
public int
npoints
点的总数。
npoints
的值表示在此
Polygon
中有效的点的数量,该值可以小于
xpoints
或
ypoints
中元素的个数。此值可以为 NULL。
从以下版本开始:
另请参见:
addPoint(int, int)
public int[]
xpoints
X 坐标的数组。此数组中元素的个数可以大于此
Polygon
中 X 坐标的个数。额外的元素允许新的点添加到此
Polygon
中,而无需重新创建此数组。
npoints
的值等于此
Polygon
中有效点的个数。
从以下版本开始:
另请参见:
addPoint(int, int)
public int[]
ypoints
Y 坐标的数组。此数组中元素的个数可以大于此
Polygon
中 Y 坐标的个数。额外的元素允许新的点添加到
Polygon
中,而无需重新创建此数组。
npoints
的值等于此
Polygon
中有效点的个数。
从以下版本开始:
另请参见:
addPoint(int, int)
参数:
xpoints
- X 坐标的数组
ypoints
- Y 坐标的数组
npoints
- 此
Polygon
中点的总数
NegativeArraySizeException
- 如果
npoints
为负值。
IndexOutOfBoundsException
- 如果
npoints
大于
xpoints
或
ypoints
的长度。
NullPointerException
- 如果
xpoints
或
ypoints
为
null
。
从以下版本开始:
public
Rectangle
getBounds
()
获取此
Polygon
的边界框。边界框是最小的
Rectangle
,其边平行于坐标空间的 x 轴和 y 轴,且能够完全包含
Polygon
。
指定者:
接口
Shape
中的
getBounds
返回:
返回定义此
Polygon
边界的
Rectangle
。
从以下版本开始:
另请参见:
Shape.getBounds2D()
参数:
x
- 要测试的指定的 X 坐标
y
- 要测试的指定的 Y 坐标
返回:
如果此
Polygon
包含指定的坐标
(x,y)
,则返回
true
;否则返回
false
。
从以下版本开始:
另请参见:
contains(double, double)
参数:
x
- 要测试的指定的 X 坐标
y
- 要测试的指定的 Y 坐标
返回:
如果此
Polygon
包含指定的坐标
(x,y)
,则返回
true
;否则返回
false
。
从以下版本开始:
另请参见:
contains(double, double)
public
Rectangle2D
getBounds2D
()
返回一个高精度的、比
getBounds
方法更准确的
Shape
边界框。注意,不保证返回的
Rectangle2D
是包围
Shape
的最小边界框,只保证
Shape
完全位于指示的
Rectangle2D
中。此方法返回的边界框通常比
getBounds
方法返回的更紧密,而且永远不会因为溢出问题而出错,因为返回值可以是一个使用双精度值存储尺寸的
Rectangle2D
实例。
指定者:
接口
Shape
中的
getBounds2D
返回:
一个
Rectangle2D
实例,它是
Shape
的高精度边界框。
从以下版本开始:
另请参见:
Shape.getBounds()
参数:
x
- 要测试的指定的 X 坐标
y
- 要测试的指定的 Y 坐标
返回:
如果指定坐标在
Shape
边界内,则返回
true
;否则返回
false
。
从以下版本开始:
测试
Shape
内部是否与指定矩形区域的内部相交。如果任何一个点既包含在
Shape
内,又包含在指定矩形区域内,则认为矩形区域与
Shape
相交。
在下列情况下,
Shape.intersects()
方法允许
Shape
实现谨慎地返回
true
:
矩形区域与
Shape
相交的可能性很大,但是
精确确定相交的计算代价太高。
这意味着对于某些
Shape
,即使矩形区域没有与该
Shape
相交,此方法也可能返回
true
。如果需要更精确的答案,由于
Area
类比大多数
Shape
对象更为准确地计算几何相交,因此可以使用该类。
指定者:
接口
Shape
中的
intersects
参数:
x
- 指定矩形区域左上角的 X 坐标
y
- 指定矩形区域左上角的 Y 坐标
w
- 指定矩形区域的宽度
h
- 指定矩形区域的高度
返回:
如果
Shape
的内部区域与矩形的内部区域相交,或者相交的可能性很大且执行计算的代价太高,则返回
true
;否则返回
false
。
从以下版本开始:
另请参见:
Area
public boolean
intersects
(
Rectangle2D
r)
测试
Shape
内部是否与指定
Rectangle2D
内部相交。在下列情况下,
Shape.intersects()
方法允许
Shape
实现谨慎地返回
true
:
Rectangle2D
与
Shape
相交的可能性很大,但是
精确确定相交的计算代价太高。
这意味着对于某些
Shape
,即使
Rectangle2D
没有与该
Shape
相交,此方法也可能返回
true
。如果需要更精确的答案,由于
Area
类比大多数
Shape
对象更为准确地计算几何相交,因此可以使用该类。
指定者:
接口
Shape
中的
intersects
参数:
r
- 指定的
Rectangle2D
返回:
如果
Shape
内部与指定
Rectangle2D
内部相交,或者相交的可能性很大且执行计算的代价太高,则返回
true
;否则返回
false
。
从以下版本开始:
另请参见:
Shape.intersects(double, double, double, double)
测试
Shape
内部是否完全包含指定矩形区域。矩形区域内的所有坐标都必须位于
Shape
中,才可以认为整个矩形区域包含在
Shape
中。
在下列情况下,
Shape.contains()
方法允许
Shape
实现谨慎地返回
false
:
intersect
方法返回
true
并且
计算
Shape
是否完全包含矩形区域的代价太高。
这意味着对于某些
Shape
,即使
Shape
包含矩形区域,此方法也可能返回
false
。如果需要更精确的答案,由于
Area
类比大多数
Shape
对象更为准确地执行几何计算,因此可以使用该类。
指定者:
接口
Shape
中的
contains
参数:
x
- 指定矩形区域左上角的 X 坐标
y
- 指定矩形区域左上角的 Y 坐标
w
- 指定矩形区域的宽度
h
- 指定矩形区域的高度
返回:
如果
Shape
内部完全包含指定矩形区域,则返回
true
;否则,如果
Shape
包含矩形区域、
intersects
方法返回
true
且执行包含计算代价太高,则返回
false
。
从以下版本开始:
另请参见:
Area
,
Shape.intersects(double, double, double, double)
public boolean
contains
(
Rectangle2D
r)
测试
Shape
内部是否完全包含指定的
Rectangle2D
。在下列情况下,
Shape.contains()
方法允许
Shape
实现谨慎地返回
false
:
intersect
方法返回
true
并且
计算
Shape
是否完全包含
Rectangle2D
的代价太高。
这意味着对于某些
Shape
,即使
Shape
包含
Rectangle2D
,此方法也可能返回
false
。如果需要更精确的答案,由于
Area
类比大多数
Shape
对象更为准确地执行几何计算,因此可以使用该类。
指定者:
接口
Shape
中的
contains
参数:
r
- 指定的
Rectangle2D
返回:
如果
Shape
内部完全包含
Rectangle2D
,则返回
true
;否则,如果
Shape
包含
Rectangle2D
、
intersects
方法返回
true
且执行包含计算代价太高,则返回
false
。
从以下版本开始:
另请参见:
Shape.contains(double, double, double, double)
public
PathIterator
getPathIterator
(
AffineTransform
at)
返回迭代器对象,此对象沿此
Polygon
的边界进行迭代,并且提供对此
Polygon
轮廓的几何形状的访问。可以指定一个可选的
AffineTransform
,以便对迭代中返回的坐标进行相应的转换。
指定者:
接口
Shape
中的
getPathIterator
参数:
at
- 坐标在迭代中返回时,要应用于这些坐标的可选的
AffineTransform
,或者需要撤消转换时为
null
返回:
PathIterator
对象,该对象提供对此
Polygon
的几何形状的访问。
从以下版本开始:
double flatness)
返回迭代器对象,此对象沿
Shape
的边界进行迭代,并且提供了对
Shape
轮廓的几何形状的访问。迭代器只返回 SEG_MOVETO、SEG_LINETO 和 SEG_CLOSE 点类型。由于多边形是平面的,因此可以忽略
flatness
参数。可以指定可选的
AffineTransform
,在这种情况下相应地转换在迭代返回的坐标。
指定者:
接口
Shape
中的
getPathIterator
参数:
at
- 坐标在迭代中返回时,要应用于这些坐标的可选的
AffineTransform
,或者需要撤消转换时为
null
flatness
- 在使用连接端点的直线取代细分的曲线之前,给定曲线的控制点可以从共线变化的最大量。由于多平形是平面的,因此可以忽略
flatness
参数。
返回:
返回
PathIterator
对象,此对象提供对
Shape
对象的几何形状的访问。
从以下版本开始: