クラスArea
java.lang.Object
java.awt.geom.Area
Areaオブジェクトは、2次元空間の閉じた領域について解像度に依存しない記述を格納および操作します。 Areaオブジェクトは変換可能であり、ほかのAreaオブジェクトとの結合時に各種の構成領域ジオメトリ(CAG)演算を実行できます。 CAG演算には、領域のaddition、subtraction、intersection、およびexclusive orが含まれます。 各種の演算の例については、リンク先のメソッド・ドキュメントを参照してください。
Areaクラスは、Shapeインタフェースを実装し、その当たり判定およびパス反復機能のすべてを完全にサポートしますが、次のいくつかの点で、Areaは一般化されたパスより特化されています。
- 格納されるのは、閉じたパスとサブパスだけです。 閉じていないパスから構築された
Areaオブジェクトは、これらのパスがGraphics2D.fillメソッドで塗りつぶされたかのように、構築中に暗黙的に閉じられます。 - 格納される個別のサブパスの内部は、どれも空ではなく、オーバーラップしません。 パスは、構築中に個別のオーバーラップしないコンポーネントに分解されて、空のコンポーネントは廃棄されます。空ではなく、オーバーラップしないプロパティは、後続のすべてのCAG演算で維持されます。 異なるコンポーネントのサブパスの輪郭線は、閉じた領域がオーバーラップするように交差していないかぎり、接触することがあります。
Areaの輪郭線を記述するパスの幾何学的図形は、同じ2次元の閉じた領域を記述しているという点でのみ構築元のパスに似ていますが、記述のためにまったく異なるタイプと順序のパス・セグメントを使用する可能性があります。
Areaの使用時に必ずしも明白ではない点は次のとおりです。
- 閉じていない(開いている)
ShapeからAreaを作成すると、Areaオブジェクトの輪郭線は閉じます。 - 囲んでいる領域がない(「閉じている」場合を含む)
ShapeからAreaを作成すると、空のAreaが生成されます。 たとえばよくある例として、ラインが囲んでいる領域がないために、このラインからAreaを生成すると空になります。 空のAreaは、そのPathIteratorオブジェクト内の幾何学的図形を反復しません。 - 自己交差する
Shapeは、それぞれが元のパスのいずれかの交差していない部分を囲む2つ(以上の)サブパスに分割されることがあります。 Areaは、元の輪郭線が単純で明確であっても、多くのパス・セグメントを使用して同じ幾何学的図形を記述することがあります。Areaクラスがパス上で実行する必要がある分析は、人が考える「単純で明確」という概念と同じ概念を反映しているとはかぎりません。
- 導入されたバージョン:
- 1.2
-
コンストラクタのサマリー
コンストラクタ -
メソッドのサマリー
修飾子と型メソッド説明void指定されたAreaの形状をこのAreaの形状に追加します。clone()このAreaオブジェクトとまったく同じコピーを返します。booleancontains(double x, double y) 「内部性の定義」で説明されているように、指定された座標がShapeの境界内にあるかどうかをテストします。booleancontains(double x, double y, double w, double h) Shapeの内部に、指定された矩形領域が完全に含まれるかどうかをテストします。booleanbooleanShapeの内部に、指定されたRectangle2Dが完全に含まれるかどうかをテストします。指定されたAffineTransformによって変換されたこのAreaと同じ幾何学的図形を含む、新しいAreaオブジェクトを作成します。boolean2つのAreaオブジェクトの幾何学的図形が等しいかどうかを判定します。voidexclusiveOr(Area rhs) このAreaの形状を、現在の形状と指定されたAreaの形状の結合領域からその共通部分を差し引いた領域に設定します。このAreaを完全に囲むバウンディングRectangleを返します。このAreaを完全に囲む高精度バウンディングRectangle2Dを返します。このAreaオブジェクトの輪郭のPathIteratorを作成します。getPathIterator(AffineTransform at, double flatness) このAreaオブジェクトの平坦化した輪郭のPathIteratorを作成します。voidこのAreaの形状を、現在の形状と指定されたAreaの形状の共通部分に設定します。booleanintersects(double x, double y, double w, double h) Shapeの内部が指定された矩形領域の内部と交差しているかどうかをテストします。booleanShapeの内部が指定されたRectangle2Dの内部と交差しているかどうかをテストします。booleanisEmpty()このAreaオブジェクトが領域を囲むかどうかを判定します。booleanこのAreaが完全に、辺が直線の多角形幾何学的図形から構成されているかどうかを判定します。booleanこのAreaの形状が矩形かどうかを判定します。booleanこのAreaが単一の閉じられたサブパスから構成されているかどうかを判定します。voidreset()このAreaから幾何学的図形をすべて削除し、空の領域に戻します。void指定されたAreaの形状をこのAreaの形状から取り去ります。void指定されたAffineTransformを使用して、このAreaの幾何学的図形を変換します。
-
コンストラクタの詳細
-
Area
public Area()空の領域を作成するデフォルト・コンストラクタです。- 導入されたバージョン:
- 1.2
-
Area
public Area(Shape s) Areaクラスは、指定されたShapeオブジェクトから領域幾何学的図形を作成します。Shapeがまだ閉じられていない場合、幾何学的図形は明示的に閉じられます。Shapeの幾何学的図形で指定されている塗りつぶし規則(偶奇または屈曲)を使うと、結果として生成される閉じた領域を指定できます。- パラメータ:
s- 領域の構築元のShape- スロー:
NullPointerException-sがnullである場合- 導入されたバージョン:
- 1.2
-
-
メソッドの詳細
-
add
public void add(Area rhs) 指定されたAreaの形状をこのAreaの形状に追加します。 このAreaで得られる形状には、両方の形状の和集合、またはこれか指定されたAreaのどちらかに含まれていたすべての領域が含まれます。// Example: Area a1 = new Area([triangle 0,0 => 8,0 => 0,8]); Area a2 = new Area([triangle 0,0 => 8,0 => 8,8]); a1.add(a2); a1(before) + a2 = a1(after) ################ ################ ################ ############## ############## ################ ############ ############ ################ ########## ########## ################ ######## ######## ################ ###### ###### ###### ###### #### #### #### #### ## ## ## ##- パラメータ:
rhs- 現在の形状に追加されるArea- スロー:
NullPointerException-rhsがnullである場合- 導入されたバージョン:
- 1.2
-
subtract
public void subtract(Area rhs) 指定されたAreaの形状をこのAreaの形状から取り去ります。 このAreaで得られる形状には、このAreaにのみ含まれ、指定されたAreaには含まれていなかった領域が含まれます。// Example: Area a1 = new Area([triangle 0,0 => 8,0 => 0,8]); Area a2 = new Area([triangle 0,0 => 8,0 => 8,8]); a1.subtract(a2); a1(before) - a2 = a1(after) ################ ################ ############## ############## ## ############ ############ #### ########## ########## ###### ######## ######## ######## ###### ###### ###### #### #### #### ## ## ##- パラメータ:
rhs- 現在の形状から差し引かれるArea- スロー:
NullPointerException-rhsがnullである場合- 導入されたバージョン:
- 1.2
-
intersect
public void intersect(Area rhs) このAreaの形状を、現在の形状と指定されたAreaの形状の共通部分に設定します。 このAreaで得られる形状には、このAreaと指定されたAreaの両方に含まれていた領域のみが含まれます。// Example: Area a1 = new Area([triangle 0,0 => 8,0 => 0,8]); Area a2 = new Area([triangle 0,0 => 8,0 => 8,8]); a1.intersect(a2); a1(before) intersect a2 = a1(after) ################ ################ ################ ############## ############## ############ ############ ############ ######## ########## ########## #### ######## ######## ###### ###### #### #### ## ##- パラメータ:
rhs- このAreaと交差させるArea- スロー:
NullPointerException-rhsがnullである場合- 導入されたバージョン:
- 1.2
-
exclusiveOr
public void exclusiveOr(Area rhs) このAreaの形状を、現在の形状と指定されたAreaの形状の結合領域からその共通部分を差し引いた領域に設定します。 このAreaで得られる形状には、このAreaまたは指定されたAreaのどちらかに含まれていた領域のみが含まれ、その両方に含まれていた領域は含まれません。// Example: Area a1 = new Area([triangle 0,0 => 8,0 => 0,8]); Area a2 = new Area([triangle 0,0 => 8,0 => 8,8]); a1.exclusiveOr(a2); a1(before) xor a2 = a1(after) ################ ################ ############## ############## ## ## ############ ############ #### #### ########## ########## ###### ###### ######## ######## ################ ###### ###### ###### ###### #### #### #### #### ## ## ## ##- パラメータ:
rhs- このAreaとの排他的論理和を求めるArea。- スロー:
NullPointerException-rhsがnullである場合- 導入されたバージョン:
- 1.2
-
reset
public void reset()このAreaから幾何学的図形をすべて削除し、空の領域に戻します。- 導入されたバージョン:
- 1.2
-
isEmpty
public boolean isEmpty()このAreaオブジェクトが領域を囲むかどうかを判定します。- 戻り値:
- この
Areaオブジェクトが空の領域を表す場合はtrue。それ以外の場合はfalse。 - 導入されたバージョン:
- 1.2
-
isPolygonal
public boolean isPolygonal()このAreaが完全に、辺が直線の多角形幾何学的図形から構成されているかどうかを判定します。- 戻り値:
- この
Areaの幾何学的図形が完全にライン・セグメントから構成されている場合はtrue。それ以外の場合はfalse。 - 導入されたバージョン:
- 1.2
-
isRectangular
public boolean isRectangular()このAreaの形状が矩形かどうかを判定します。- 戻り値:
- この
Areaの幾何学的図形の形状が矩形の場合はtrue。それ以外の場合はfalse。 - 導入されたバージョン:
- 1.2
-
isSingular
public boolean isSingular()このAreaが単一の閉じられたサブパスから構成されているかどうかを判定します。 このメソッドは、パスに含まれているサブパスが0または1つの場合はtrueを、パスに含まれているサブパスが2つ以上の場合はfalseを返します。 サブパスは、パスに現れるSEG_MOVETOセグメントの数によってカウントされます。- 戻り値:
Areaが1つの基本幾何学的図形から構成されている場合はtrue。それ以外の場合はfalse。- 導入されたバージョン:
- 1.2
-
getBounds2D
public Rectangle2D getBounds2D()このAreaを完全に囲む高精度バウンディングRectangle2Dを返します。AreaクラスはそのShapeにできるだけぴったりしたバウンディング・ボックスを返そうとします。 バウンディング・ボックスはShapeの輪郭のカーブの制御点を含むようにはパディングされず、輪郭自体の実際の幾何学的図形にぴったりの大きさになります。
- 定義:
getBounds2D、インタフェースShape- 戻り値:
AreaのバウンディングRectangle2D。- 導入されたバージョン:
- 1.2
- 関連項目:
-
getBounds
-
clone
-
equals
public boolean equals(Area other) 2つのAreaオブジェクトの幾何学的図形が等しいかどうかを判定します。 引数がnullの場合、このメソッドはfalseを返します。- パラメータ:
other- このAreaと比較されるArea- 戻り値:
- 2つの幾何学的図形が等しい場合は
true。それ以外の場合はfalse。 - 導入されたバージョン:
- 1.2
-
transform
public void transform(AffineTransform t) 指定されたAffineTransformを使用して、このAreaの幾何学的図形を変換します。 幾何学的図形が適切に変換され、これにより、このオブジェクトによって定義されている閉じた領域が永久的に変更されます。- パラメータ:
t- 領域を変換するために使用される変換- スロー:
NullPointerException-tがnullである場合- 導入されたバージョン:
- 1.2
-
createTransformedArea
public Area createTransformedArea(AffineTransform t) 指定されたAffineTransformによって変換されたこのAreaと同じ幾何学的図形を含む、新しいAreaオブジェクトを作成します。 このAreaオブジェクトは変化しません。- パラメータ:
t- 新しいAreaを変換するために使用される指定されたAffineTransform- 戻り値:
- 変換された幾何学的図形を表す新しい
Areaオブジェクト。 - スロー:
NullPointerException-tがnullである場合- 導入されたバージョン:
- 1.2
-
contains
-
contains
-
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オブジェクトより正確な幾何学的計算を実行するため、より的確な答えが必要な場合に使用できます。 -
-
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
- 関連項目:
-
-
getPathIterator
public PathIterator getPathIterator(AffineTransform at) このAreaオブジェクトの輪郭のPathIteratorを作成します。 このAreaオブジェクトは変化しません。- 定義:
getPathIterator、インタフェースShape- パラメータ:
at- 反復処理で返されるときに座標に適用されるオプションのAffineTransform、または変換されていない座標が必要な場合はnull- 戻り値:
- この
Areaの輪郭の幾何学的図形を一度に1セグメントずつ返すPathIteratorオブジェクト。 - 導入されたバージョン:
- 1.2
-
getPathIterator
public PathIterator getPathIterator(AffineTransform at, double flatness) このAreaオブジェクトの平坦化した輪郭のPathIteratorを作成します。 SEG_MOVETO、SEG_LINETO、SEG_CLOSEの3種類の点によって表現される曲線状でないパス・セグメントだけが、イテレータによって返されます。 このAreaオブジェクトは変化しません。- 定義:
getPathIterator、インタフェースShape- パラメータ:
at- 反復処理で返されるときに座標に適用されるオプションのAffineTransform、または変換されていない座標が必要な場合はnullflatness- 分割された曲線が終点を結ぶ直線によって置換される前に、指定された曲線の制御点が共線から外れることのできる最大距離- 戻り値:
- この
Areaの輪郭の幾何学的図形を一度に1セグメントずつ返すPathIteratorオブジェクト。 - 導入されたバージョン:
- 1.2
-