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
npoints
の値はこの Polygon
の有効な点の数を表し、xpoints
または ypoints
の数よりも小さくなる可能性があります。この値は null を取ることができます。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()
Polygon
のバウンディングボックスを取得します。 このバウンディングボックスは辺が座標空間の x 軸および y 軸に平行で Polygon
を完全に格納する最小の Rectangle
です。getBounds
、インタフェース: Shape
Polygon
の境界を定義する Rectangle
。Shape.getBounds2D()
@Deprecated public Rectangle getBoundingBox()
getBounds()
に置き換えられています。Polygon
の境界を返します。Polygon
の境界。public boolean contains(Point p)
Point
がこの Polygon
の内側にあるかどうかを判定します。p
- テストされる指定された Point
Polygon
に 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
、インタフェース: Shape
Shape
の高精度のバウンディングボックスである 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
、インタフェース: Shape
x
- 指定された矩形領域の左上隅の X 座標y
- 指定された矩形領域の左上隅の Y 座標w
- 指定された矩形領域の幅h
- 指定された矩形領域の高さShape
の内部と矩形領域の内部が交差しているか、またはどちらも交差している可能性が高いが、負荷が大きすぎて共通部分の計算を実行できない場合は true
、それ以外の場合は false
。Area
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
。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
、インタフェース: Shape
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
が完全に含まれるかどうかを判定するための計算の負荷が非常に大きい。
Shapes
によっては、Shape
に Rectangle2D
が含まれている場合でもこのメソッドが false
を返すことがあります。Area
クラスは、ほとんどの Shape
オブジェクトより正確な幾何学的計算を実行するため、より的確な答えが必要な場合に使用できます。contains
、インタフェース: Shape
r
- 指定された Rectangle2D
Shape
の内部に Rectangle2D
が完全に含まれる場合は true
、それ以外の場合、または Shape
に Rectangle2D
が含まれ、intersects
メソッドが true
を返し、さらに負荷が大きすぎて包含の計算を実行できない場合は false
。Shape.contains(double, double, double, double)
public PathIterator getPathIterator(AffineTransform at)
Polygon
の境界に沿って反復し、この Polygon
の輪郭の幾何学的図形へのアクセスを提供するイテレータオブジェクトを返します。オプションの AffineTransform
を指定することもでき、その場合は反復処理で返される座標がそれに応じて変換されます。getPathIterator
、インタフェース: Shape
at
- 反復処理で返されるときに座標に適用されるオプションの AffineTransform
、または変換されていない座標が必要な場合は null
Polygon
の幾何学的図形へのアクセスを提供する PathIterator
オブジェクト。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
オブジェクト。 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.