java.lang.Object
java.awt.Polygon
- すべての実装されたインタフェース:
Shape
,Serializable
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
クラスのコメントに記述された内側の定義を使用します。 -
フィールドのサマリー
フィールド -
コンストラクタのサマリー
コンストラクタ -
メソッドのサマリー
修飾子と型メソッド説明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
boolean
Shape
の内部に、指定されたRectangle2D
が完全に含まれるかどうかをテストします。boolean
指定されたPoint
がこのPolygon
の内側にあるかどうかを判定します。非推奨。このPolygon
のバウンディング・ボックスを取得します。高精度で、かつgetBounds
メソッドより正確なShape
のバウンディング・ボックスを返します。このPolygon
の境界に沿って反復し、このPolygon
の輪郭の幾何学的図形へのアクセスを提供するイテレータ・オブジェクトを返します。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
Shape
の内部が指定されたRectangle2D
の内部と交差しているかどうかをテストします。void
このPolygon
の頂点の座標に依存する、内部的にキャッシュされたすべてのデータを無効にするか、またはフラッシュします。void
reset()
このPolygon
オブジェクトを空の多角形にリセットします。void
translate
(int deltaX, int deltaY) Polygon
の頂点を、X軸に沿ってdeltaX
、Y軸に沿ってdeltaY
に平行移動します。
-
フィールド詳細
-
npoints
public int npoints- 導入されたバージョン:
- 1.0
- 関連項目:
-
xpoints
public int[] xpointsX座標の配列です。 この配列の要素の数は、このPolygon
のX座標の数よりも大きくなる可能性があります。 余分な要素により、この配列を再作成せずに、このPolygon
に新しい点を追加できます。npoints
の値は、このPolygon
内の有効な点の数と同じです。- 導入されたバージョン:
- 1.0
- 関連項目:
-
ypoints
public int[] ypointsY座標の配列です。 この配列の要素の数は、このPolygon
のY座標の数よりも大きくなります。 余分な要素により、この配列を再作成せずに、このPolygon
に新しい点を追加できます。npoints
の値は、このPolygon
内の有効な点の数と同じです。- 導入されたバージョン:
- 1.0
- 関連項目:
-
bounds
protected Rectangle boundsこのPolygon
の境界。 nullも指定できます。- 導入されたバージョン:
- 1.0
- 関連項目:
-
-
コンストラクタの詳細
-
Polygon
public Polygon()空の多角形を作成します。- 導入されたバージョン:
- 1.0
-
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
の場合- 導入されたバージョン:
- 1.0
-
-
メソッドの詳細
-
reset
public void reset()このPolygon
オブジェクトを空の多角形にリセットします。 その中にある座標配列とデータはそのまま残りますが、点の数はゼロにリセットされ、古い頂点のデータを無効としてマークし、最初から新しい頂点のデータの蓄積を開始します。 内部にキャッシュされたすべての古い頂点に関するデータは破棄されます。 リセットする前の座標配列が再使用されるので、新しい多角形のデータの頂点の数がリセット前のデータの頂点の数よりもかなり小さい場合は、新しい空のPolygon
の作成の方が現在の多角形をリセットするよりもメモリーをより効率的に使用できます。- 導入されたバージョン:
- 1.4
- 関連項目:
-
invalidate
public void invalidate()このPolygon
の頂点の座標に依存する、内部的にキャッシュされたすべてのデータを無効にするか、またはフラッシュします。 このメソッドは、xpoints
またはypoints
配列の座標を直接操作したあとに呼び出す必要があります。これは、頂点の座標に関連する以前の計算からデータをキャッシュしているgetBounds
またはcontains
などのメソッドから一貫した結果が得られるようにするためです。- 導入されたバージョン:
- 1.4
- 関連項目:
-
translate
public void translate(int deltaX, int deltaY) Polygon
の頂点を、X軸に沿ってdeltaX
、Y軸に沿ってdeltaY
に平行移動します。- パラメータ:
deltaX
- X軸に沿って移動する距離deltaY
- Y軸に沿って移動する距離- 導入されたバージョン:
- 1.1
-
addPoint
public void addPoint(int x, int y) このPolygon
に指定された座標を追加します。この
Polygon
のバウンディング・ボックスを計算するgetBounds
またはcontains
などの演算がすでに実行されている場合、このメソッドはバウンディング・ボックスを更新します。- パラメータ:
x
- 指定されたX座標y
- 指定されたY座標- 導入されたバージョン:
- 1.0
- 関連項目:
-
getBounds
public Rectangle getBounds()このPolygon
のバウンディング・ボックスを取得します。 このバウンディング・ボックスは辺が座標空間のx軸およびy軸に平行でPolygon
を完全に格納する最小のRectangle
です。 -
getBoundingBox
@Deprecated public Rectangle getBoundingBox()非推奨。JDK Version 1.1以降は、getBounds()
に置き換えられています。このPolygon
の境界を返します。- 戻り値:
- この
Polygon
の境界。 - 導入されたバージョン:
- 1.0
-
contains
public boolean contains(Point p) 指定されたPoint
がこのPolygon
の内側にあるかどうかを判定します。- パラメータ:
p
- テストされる指定されたPoint
- 戻り値:
Polygon
にPoint
が含まれる場合はtrue
、そうでない場合はfalse
。- 導入されたバージョン:
- 1.0
- 関連項目:
-
contains
public boolean contains(int x, int y) 指定された座標がこのPolygon
の内側にあるかどうかを判定します。- パラメータ:
x
- テストされる指定されたX座標y
- テストされる指定されたY座標- 戻り値:
- この
Polygon
に、指定された座標(x,y)
が含まれる場合はtrue
、それ以外の場合はfalse
。 - 導入されたバージョン:
- 1.1
- 関連項目:
-
inside
@Deprecated public boolean inside(int x, int y) 非推奨。JDK Version 1.1以降は、contains(int, int)
に置き換えられています。指定された座標がこのPolygon
に内包されているかどうかを判定します。- パラメータ:
x
- テストされる指定されたX座標y
- テストされる指定されたY座標- 戻り値:
- この
Polygon
に、指定された座標(x,y)
が含まれる場合はtrue
、それ以外の場合はfalse
。 - 導入されたバージョン:
- 1.0
- 関連項目:
-
getBounds2D
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
、インタフェースShape
- 戻り値:
Shape
の高精度のバウンディング・ボックスであるRectangle2D
のインスタンス。- 導入されたバージョン:
- 1.2
- 関連項目:
-
contains
public boolean contains(double x, double y) 指定された座標が、内側の定義によって記述されたShape
の境界の内側にあるかどうかをテストします。 -
contains
public boolean contains(Point2D p) -
intersects
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
、インタフェースShape
- パラメータ:
x
- 指定された矩形領域の左上隅のX座標y
- 指定された矩形領域の左上隅のY座標w
- 指定された矩形領域の幅h
- 指定された矩形領域の高さ- 戻り値:
Shape
の内部と矩形領域の内部が交差しているか、またはどちらも交差している可能性が高いが、負荷が大きすぎて共通部分の計算を実行できない場合はtrue
、それ以外の場合はfalse
。- 導入されたバージョン:
- 1.2
- 関連項目:
-
矩形領域と
-
intersects
public boolean intersects(Rectangle2D r) Shape
の内部が指定されたRectangle2D
の内部と交差しているかどうかをテストします。Shape.intersects()
メソッドを使用すると、次のような場合に、Shape
実装は内部的にtrue
を返すことができます。-
Rectangle2D
とShape
が交差している可能性が高いが、 - この共通部分を正確に判断する計算の負荷がかなり大きい。
Shapes
によっては、Rectangle2D
がShape
と交差していない場合でもこのメソッドがtrue
を返すことがあります。Area
クラスは、ほとんどのShape
オブジェクトより正確な、幾何学的な共通部分の計算を実行するため、より的確な答えが必要な場合に使用できます。- 定義:
intersects
、インタフェースShape
- パラメータ:
r
- 指定されたRectangle2D
- 戻り値:
Shape
の内部と指定されたRectangle2D
の内部が交差しているか、またはどちらも交差している可能性が高いが、負荷が大きすぎて共通部分の計算を実行できない場合はtrue
、それ以外の場合はfalse
。- 導入されたバージョン:
- 1.2
- 関連項目:
-
-
contains
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
public boolean contains(Rectangle2D r) Shape
の内部に、指定されたRectangle2D
が完全に含まれるかどうかをテストします。Shape.contains()
メソッドを使用すると、次のような場合に、Shape
実装は内部的にfalse
を返すことができます。-
intersect
メソッドがtrue
を返し、かつ -
Shape
にRectangle2D
が完全に含まれるかどうかを判定するための計算の負荷が非常に大きい。
Shapes
によっては、Shape
にRectangle2D
が含まれている場合でもこのメソッドがfalse
を返すことがあります。Area
クラスは、ほとんどのShape
オブジェクトより正確な幾何学的計算を実行するため、より的確な答えが必要な場合に使用できます。 -
-
getPathIterator
public PathIterator getPathIterator(AffineTransform at) このPolygon
の境界に沿って反復し、このPolygon
の輪郭の幾何学的図形へのアクセスを提供するイテレータ・オブジェクトを返します。 オプションのAffineTransform
を指定することもでき、その場合は反復処理で返される座標がそれに応じて変換されます。- 定義:
getPathIterator
、インタフェースShape
- パラメータ:
at
- 反復処理で返されるときに座標に適用されるオプションのAffineTransform
、または変換されていない座標が必要な場合はnull
- 戻り値:
- この
Polygon
の幾何学的図形へのアクセスを提供するPathIterator
オブジェクト。 - 導入されたバージョン:
- 1.2
-
getPathIterator
public PathIterator getPathIterator(AffineTransform at, double flatness) Shape
の境界に沿って反復し、Shape
の輪郭の幾何学的図形へのアクセスを提供するイテレータ・オブジェクトを返します。 イテレータが返すのは、ポイント型SEG_MOVETO、SEG_LINETO、およびSEG_CLOSEだけです。 多角形はすでに平坦であるため、flatness
パラメータは無視されます。 オプションのAffineTransform
は、反復処理で返される座標がそれに応じて変換される場合に指定することができます。- 定義:
getPathIterator
、インタフェースShape
- パラメータ:
at
- 反復処理で返されるときに座標に適用されるオプションのAffineTransform
、または変換されていない座標が必要な場合はnull
flatness
- 細分化された曲線が端点を結ぶ直線で置き換えられる前に、与えられた曲線の制御点が同一直線から変化することができる最大量。 多角形はすでに平坦であるため、flatness
パラメータは無視される。- 戻り値:
Shape
オブジェクトの幾何学的図形へのアクセスを提供するPathIterator
オブジェクト。- 導入されたバージョン:
- 1.2
-
getBounds()
に置き換えられています。