public class Polygon extends Object implements Shape, Serializable
Polygonクラスは、座標空間内の閉じられた2次元領域の記述をカプセル化します。この領域は、多角形の1辺をなす線セグメントの任意の数によって境界を区切られます。内部的には、多角形は(x,y)座標ペアのリストから構成されます。この場合、各ペアは多角形の頂点を定義し、連続する2つのペアは多角形の1辺をなす線の端点になります。(x,y)点の最初と最後のペアは、多角形を閉じる線セグメントによって結合されます。このPolygonは偶奇屈曲ルールによって定義されます。偶奇屈曲ルールの定義については、WIND_EVEN_ODDを参照してください。contains、intersectsおよびinsideメソッドを含むこのクラスの当たり判定メソッドは、Shapeクラスのコメントに記述された内側の定義を使用します。| 修飾子と型 | フィールドと説明 |
|---|---|
protected Rectangle |
bounds
この
Polygonの境界。 |
int |
npoints
点の総数です。
|
int[] |
xpoints
X座標の配列です。
|
int[] |
ypoints
Y座標の配列です。
|
| コンストラクタと説明 |
|---|
Polygon()
空の多角形を作成します。
|
Polygon(int[] xpoints, int[] ypoints, int npoints)
指定されたパラメータから
Polygonを構築して初期化します。 |
| 修飾子と型 | メソッドと説明 |
|---|---|
void |
addPoint(int x, int y)
この
Polygonに指定された座標を追加します。 |
boolean |
contains(double x, double y)
指定された座標が、内側の定義によって記述された
Shapeの境界の内側にあるかどうかをテストします。 |
boolean |
contains(double x, double y, double w, double h)
Shapeの内部に、指定された矩形領域が完全に含まれるかどうかをテストします。 |
boolean |
contains(int x, int y)
指定された座標がこの
Polygonの内側にあるかどうかを判定します。 |
boolean |
contains(Point p)
指定された
PointがこのPolygonの内側にあるかどうかを判定します。 |
boolean |
contains(Point2D p)
|
boolean |
contains(Rectangle2D r)
Shapeの内部に、指定されたRectangle2Dが完全に含まれるかどうかをテストします。 |
Rectangle |
getBoundingBox()
非推奨。
JDK version 1.1以降は、
getBounds()に置き換えられています。 |
Rectangle |
getBounds()
この
Polygonのバウンディング・ボックスを取得します。 |
Rectangle2D |
getBounds2D()
高精度で、かつ
getBoundsメソッドより正確なShapeのバウンディング・ボックスを返します。 |
PathIterator |
getPathIterator(AffineTransform at)
この
Polygonの境界に沿って反復し、このPolygonの輪郭の幾何学的図形へのアクセスを提供するイテレータ・オブジェクトを返します。 |
PathIterator |
getPathIterator(AffineTransform at, double flatness)
Shapeの境界に沿って反復し、Shapeの輪郭の幾何学的図形へのアクセスを提供するイテレータ・オブジェクトを返します。 |
boolean |
inside(int x, int y)
非推奨。
JDK version 1.1以降は、
contains(int, int)に置き換えられています。 |
boolean |
intersects(double x, double y, double w, double h)
Shapeの内部が指定された矩形領域の内部と交差しているかどうかをテストします。 |
boolean |
intersects(Rectangle2D r)
Shapeの内部が指定されたRectangle2Dの内部と交差しているかどうかをテストします。 |
void |
invalidate()
この
Polygonの頂点の座標に依存する、内部的にキャッシュされたすべてのデータを無効にするか、またはフラッシュします。 |
void |
reset()
この
Polygonオブジェクトを空の多角形にリセットします。 |
void |
translate(int deltaX, int deltaY)
Polygonの頂点を、X軸に沿ってdeltaX、Y軸に沿ってdeltaYに平行移動します。 |
public int npoints
addPoint(int, int)public int[] xpoints
PolygonのX座標の数よりも大きくなる可能性があります。余分な要素により、この配列を再作成せずに、このPolygonに新しい点を追加できます。npointsの値は、このPolygon内の有効な点の数と同じです。addPoint(int, int)public int[] ypoints
PolygonのY座標の数よりも大きくなります。余分な要素により、この配列を再作成せずに、このPolygonに新しい点を追加できます。npointsの値は、このPolygon内の有効な点の数と同じです。addPoint(int, int)protected Rectangle bounds
Polygonの境界。nullも指定できます。getBoundingBox(), getBounds()public Polygon()
public Polygon(int[] xpoints,
int[] ypoints,
int npoints)
Polygonを構築して初期化します。xpoints - X座標の配列ypoints - Y座標の配列npoints - Polygonの点の総数NegativeArraySizeException - npointsの値が負の場合。IndexOutOfBoundsException - npointsがxpointsの長さまたはypointsの長さより大きい場合。NullPointerException - xpointsまたはypointsがnullの場合public void reset()
Polygonオブジェクトを空の多角形にリセットします。その中にある座標配列とデータはそのまま残りますが、点の数はゼロにリセットされ、古い頂点のデータを無効としてマークし、最初から新しい頂点のデータの蓄積を開始します。内部にキャッシュされたすべての古い頂点に関するデータは破棄されます。リセットする前の座標配列が再使用されるので、新しい多角形のデータの頂点の数がリセット前のデータの頂点の数よりもかなり小さい場合は、新しい空のPolygonの作成の方が現在の多角形をリセットするよりもメモリーをより効率的に使用できます。invalidate()public void invalidate()
Polygonの頂点の座標に依存する、内部的にキャッシュされたすべてのデータを無効にするか、またはフラッシュします。このメソッドは、xpointsまたはypoints配列の座標を直接操作したあとに呼び出す必要があります。これは、頂点の座標に関連する以前の計算からデータをキャッシュしているgetBoundsまたはcontainsなどのメソッドから一貫した結果が得られるようにするためです。getBounds()public void translate(int deltaX,
int deltaY)
Polygonの頂点を、X軸に沿ってdeltaX、Y軸に沿ってdeltaYに平行移動します。deltaX - X軸に沿って移動する距離deltaY - Y軸に沿って移動する距離public void addPoint(int x,
int y)
Polygonに指定された座標を追加します。
このPolygonのバウンディング・ボックスを計算するgetBoundsまたはcontainsなどの演算がすでに実行されている場合、このメソッドはバウンディング・ボックスを更新します。
x - 指定されたX座標y - 指定されたY座標getBounds(), contains(java.awt.Point)public Rectangle getBounds()
getBounds、インタフェース: ShapePolygonの境界を定義するRectangle。Shape.getBounds2D()@Deprecated public Rectangle getBoundingBox()
getBounds()に置き換えられています。Polygonの境界を返します。Polygonの境界。public boolean contains(Point p)
PointがこのPolygonの内側にあるかどうかを判定します。p - テストされる指定されたPointPolygonにPointが含まれる場合はtrue、そうでない場合はfalse。contains(double, double)public boolean contains(int x,
int y)
Polygonの内側にあるかどうかを判定します。
x - テストされる指定されたX座標y - テストされる指定されたY座標Polygonに、指定された座標(x,y)が含まれる場合はtrue、それ以外の場合はfalse。contains(double, double)@Deprecated public boolean inside(int x, int y)
contains(int, int)に置き換えられています。Polygonに内包されているかどうかを判定します。x - テストされる指定されたX座標y - テストされる指定されたY座標Polygonに、指定された座標(x,y)が含まれる場合はtrue、それ以外の場合はfalse。contains(double, double)public Rectangle2D getBounds2D()
getBoundsメソッドより正確なShapeのバウンディング・ボックスを返します。返されたRectangle2Dが、Shapeを囲む最小のバウンディング・ボックスであるという保証はありません。Shapeが、示されたRectangle2D内に完全に含まれるだけです。戻り値を、倍精度値を使用して寸法を格納するRectangle2Dのインスタンスにすることができるため、このメソッドによって返されたバウンディング・ボックスは通常、getBoundsメソッドによって返されたものより厳密であり、オーバーフローの問題のために失敗することはありません。
内側の定義によって、shapeの定義する輪郭上の点が、返されたboundsオブジェクトに含まれていると見なされない状況が発生する場合があることに注意してください。ただし、これは、これらの点が元のshapeにも含まれていないと見なされる場合のみです。
pointがcontains(point)メソッドに従ってshapeの内側にある場合は、boundsのcontains(point)メソッドに従って、返されたRectangle2D境界オブジェクトの内側にある必要があります。具体的には、次のようになります。
shape.contains(p)にはbounds.contains(p)が必要
pointがshapeの内側にない場合は、引き続きboundsオブジェクトに含まれている可能性があります。
bounds.contains(p)はshape.contains(p)を示さない
getBounds2D、インタフェース: ShapeShapeの高精度のバウンディング・ボックスであるRectangle2Dのインスタンス。Shape.getBounds()public boolean contains(double x,
double y)
Shapeの境界の内側にあるかどうかをテストします。public boolean contains(Point2D p)
public boolean intersects(double x,
double y,
double w,
double h)
Shapeの内部が指定された矩形領域の内部と交差しているかどうかをテストします。Shapeの内部と指定された矩形領域の両方に含まれている点が存在する場合、その矩形領域はShapeと交差していると見なされます。
Shape.intersects()メソッドを使用すると、次のような場合に、Shape実装は内部的にtrueを返すことができます。
Shapeが交差している可能性が高いが、
Shapesによっては、矩形領域がShapeと交差していない場合でもこのメソッドがtrueを返すことがあります。Areaクラスは、ほとんどのShapeオブジェクトより正確な、幾何学的な共通部分の計算を実行するため、より的確な答えが必要な場合に使用できます。intersects、インタフェース: Shapex - 指定された矩形領域の左上隅のX座標y - 指定された矩形領域の左上隅のY座標w - 指定された矩形領域の幅h - 指定された矩形領域の高さShapeの内部と矩形領域の内部が交差しているか、またはどちらも交差している可能性が高いが、負荷が大きすぎて共通部分の計算を実行できない場合はtrue、それ以外の場合はfalse。Areapublic boolean intersects(Rectangle2D r)
Shapeの内部が指定されたRectangle2Dの内部と交差しているかどうかをテストします。Shape.intersects()メソッドを使用すると、次のような場合に、Shape実装は内部的にtrueを返すことができます。
Rectangle2DとShapeが交差している可能性が高いが、
Shapesによっては、Rectangle2DがShapeと交差していない場合でもこのメソッドがtrueを返すことがあります。Areaクラスは、ほとんどのShapeオブジェクトより正確な、幾何学的な共通部分の計算を実行するため、より的確な答えが必要な場合に使用できます。intersects、インタフェース: Shaper - 指定されたRectangle2DShapeの内部と指定されたRectangle2Dの内部が交差しているか、またはどちらも交差している可能性が高いが、負荷が大きすぎて共通部分の計算を実行できない場合はtrue、それ以外の場合はfalse。Shape.intersects(double, double, double, double)public boolean contains(double x,
double y,
double w,
double h)
Shapeの内部に、指定された矩形領域が完全に含まれるかどうかをテストします。矩形領域全体がShape内に含まれていると見なされるには、矩形領域の内側にあるすべての座標がShape内にある必要があります。
Shape.contains()メソッドを使用すると、次のような場合に、Shape実装は内部的にfalseを返すことができます。
intersectメソッドがtrueを返し、かつ
Shapeに矩形領域が完全に含まれるかどうかを判定するための計算の負荷が非常に大きい。
Shapesによっては、Shapeに矩形領域が含まれている場合でもこのメソッドがfalseを返すことがあります。Areaクラスは、ほとんどのShapeオブジェクトより正確な幾何学的計算を実行するため、より的確な答えが必要な場合に使用できます。contains、インタフェース: Shapex - 指定された矩形領域の左上隅の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が完全に含まれるかどうかを判定するための計算の負荷が非常に大きい。
Shapesによっては、ShapeにRectangle2Dが含まれている場合でもこのメソッドがfalseを返すことがあります。Areaクラスは、ほとんどのShapeオブジェクトより正確な幾何学的計算を実行するため、より的確な答えが必要な場合に使用できます。contains、インタフェース: Shaper - 指定されたRectangle2DShapeの内部にRectangle2Dが完全に含まれる場合はtrue、それ以外の場合、またはShapeにRectangle2Dが含まれ、intersectsメソッドがtrueを返し、さらに負荷が大きすぎて包含の計算を実行できない場合はfalse。Shape.contains(double, double, double, double)public PathIterator getPathIterator(AffineTransform at)
Polygonの境界に沿って反復し、このPolygonの輪郭の幾何学的図形へのアクセスを提供するイテレータ・オブジェクトを返します。オプションのAffineTransformを指定することもでき、その場合は反復処理で返される座標がそれに応じて変換されます。getPathIterator、インタフェース: Shapeat - 反復処理で返されるときに座標に適用されるオプションのAffineTransform、または変換されていない座標が必要な場合はnullPolygonの幾何学的図形へのアクセスを提供するPathIteratorオブジェクト。public PathIterator getPathIterator(AffineTransform at, double flatness)
Shapeの境界に沿って反復し、Shapeの輪郭の幾何学的図形へのアクセスを提供するイテレータ・オブジェクトを返します。イテレータが返すのは、ポイント型SEG_MOVETO、SEG_LINETO、およびSEG_CLOSEだけです。多角形はすでに平坦であるため、flatnessパラメータは無視されます。オプションのAffineTransformは、反復処理で返される座標がそれに応じて変換される場合に指定することができます。getPathIterator、インタフェース: Shapeat - 反復処理で返されるときに座標に適用されるオプションのAffineTransform、または変換されていない座標が必要な場合はnullflatness - 分割された曲線が終点を結ぶ直線によって置換される前に、指定された曲線の制御点が共線から外れることのできる最大距離。多角形はすでに平坦であるため、flatnessパラメータは無視される。Shapeオブジェクトの幾何学的図形へのアクセスを提供するPathIteratorオブジェクト。 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.