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
オブジェクトとまったく同じコピーを返します。boolean
contains
(double x, double y) 指定された座標が、内側の定義によって記述されたShape
の境界の内側にあるかどうかをテストします。boolean
contains
(double x, double y, double w, double h) Shape
の内部に、指定された矩形領域が完全に含まれるかどうかをテストします。boolean
boolean
Shape
の内部に、指定されたRectangle2D
が完全に含まれるかどうかをテストします。指定されたAffineTransform
によって変換されたこのArea
と同じ幾何学的図形を含む、新しいArea
オブジェクトを作成します。boolean
2つのArea
オブジェクトの幾何学的図形が等しいかどうかを判定します。void
exclusiveOr
(Area rhs) このArea
の形状を、現在の形状と指定されたArea
の形状の結合領域からその共通部分を差し引いた領域に設定します。このArea
を完全に囲むバウンディングRectangle
を返します。このArea
を完全に囲む高精度バウンディングRectangle2D
を返します。このArea
オブジェクトの輪郭のPathIterator
を作成します。getPathIterator
(AffineTransform at, double flatness) このArea
オブジェクトの平坦化した輪郭のPathIterator
を作成します。void
このArea
の形状を、現在の形状と指定されたArea
の形状の共通部分に設定します。boolean
intersects
(double x, double y, double w, double h) Shape
の内部が指定された矩形領域の内部と交差しているかどうかをテストします。boolean
Shape
の内部が指定されたRectangle2D
の内部と交差しているかどうかをテストします。boolean
isEmpty()
このArea
オブジェクトが領域を囲むかどうかを判定します。boolean
このArea
が完全に、辺が直線の多角形幾何学的図形から構成されているかどうかを判定します。boolean
このArea
の形状が矩形かどうかを判定します。boolean
このArea
が単一の閉じられたサブパスから構成されているかどうかを判定します。void
reset()
この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
public Rectangle getBounds()このArea
を完全に囲むバウンディングRectangle
を返します。AreaクラスはそのShapeにできるだけぴったりしたバウンディング・ボックスを返そうとします。 バウンディング・ボックスはShapeの輪郭のカーブの制御点を含むようにはパディングされず、輪郭自体の実際の幾何学的図形にぴったりの大きさになります。 返されたオブジェクトは整数でバウンディング・ボックスを表すので、バウンディング・ボックスは、Shapeの幾何学的図形を取り囲むもっとも近い整数座標というレベルでの一致になります。
-
clone
public Object clone()このArea
オブジェクトとまったく同じコピーを返します。 -
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
public boolean contains(double x, double y) 指定された座標が、内側の定義によって記述されたShape
の境界の内側にあるかどうかをテストします。 -
contains
public boolean contains(Point2D p) -
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
、または変換されていない座標が必要な場合はnull
flatness
- 分割された曲線が終点を結ぶ直線によって置換される前に、指定された曲線の制御点が共線から外れることのできる最大距離- 戻り値:
- この
Area
の輪郭の幾何学的図形を一度に1セグメントずつ返すPathIterator
オブジェクト。 - 導入されたバージョン:
- 1.2
-