public class Area extends Object implements Shape, Cloneable
Area
オブジェクトは、2 次元空間の閉じた領域について解像度に依存しない記述を格納および操作します。Area
オブジェクトは変換可能であり、ほかの Area
オブジェクトとの結合時に各種の構成領域ジオメトリ (CAG) 演算を実行できます。CAG 演算には、領域の addition
、subtraction
、intersection
、および exclusive or
が含まれます。各種の演算の例については、リンク先のメソッドドキュメントを参照してください。
Area
クラスは、Shape
インタフェースを実装し、その当たり判定およびパス反復機能のすべてを完全にサポートしますが、次のいくつかの点で、Area
は一般化されたパスより特化されています。
Area
オブジェクトは、これらのパスが Graphics2D.fill
メソッドで塗りつぶされたかのように、構築中に暗黙的に閉じられます。
Area
の輪郭線を記述するパスの幾何学的図形は、同じ 2 次元の閉じた領域を記述しているという点でのみ構築元のパスに似ていますが、記述のためにまったく異なるタイプと順序のパスセグメントを使用する可能性があります。
Area
の使用時に必ずしも明白ではない点は次のとおりです。
Shape
から Area
を作成すると、Area
オブジェクトの輪郭線は閉じます。
Shape
から Area
を作成すると、空の Area
が生成されます。たとえばよくある例として、ラインが囲んでいる領域がないために、このラインから Area
を生成すると空になります。空の Area
は、その PathIterator
オブジェクト内の幾何学的図形を反復しません。
Shape
は、それぞれが元のパスのいずれかの交差していない部分を囲む 2 つ (以上の) サブパスに分割されることがあります。
Area
は、元の輪郭線が単純で明確であっても、多くのパスセグメントを使用して同じ幾何学的図形を記述することがあります。Area
クラスがパス上で実行する必要がある分析は、人が考える「単純で明確」という概念と同じ概念を反映しているとはかぎりません。
コンストラクタと説明 |
---|
Area()
空の領域を作成するデフォルトコンストラクタです。
|
Area(Shape s)
Area クラスは、指定された Shape オブジェクトから領域幾何学的図形を作成します。 |
修飾子と型 | メソッドと説明 |
---|---|
void |
add(Area rhs)
指定された
Area の形状をこの Area の形状に追加します。 |
Object |
clone()
この
Area オブジェクトとまったく同じコピーを返します。 |
boolean |
contains(double x, double y)
指定された座標が、内側の定義によって記述された
Shape の境界の内側にあるかどうかをテストします。 |
boolean |
contains(double x, double y, double w, double h)
Shape の内部に、指定された矩形領域が完全に含まれるかどうかをテストします。 |
boolean |
contains(Point2D p)
|
boolean |
contains(Rectangle2D r)
Shape の内部に、指定された Rectangle2D が完全に含まれるかどうかをテストします。 |
Area |
createTransformedArea(AffineTransform t)
指定された
AffineTransform によって変換されたこの Area と同じ幾何学的図形を含む、新しい Area オブジェクトを作成します。 |
boolean |
equals(Area other)
2 つの
Area オブジェクトの幾何学的図形が等しいかどうかを判定します。 |
void |
exclusiveOr(Area rhs)
この
Area の形状を、現在の形状と指定された Area の形状の結合領域からその共通部分を差し引いた領域に設定します。 |
Rectangle |
getBounds()
この
Area を完全に囲むバウンディング Rectangle を返します。 |
Rectangle2D |
getBounds2D()
この
Area を完全に囲む高精度バウンディング Rectangle2D を返します。 |
PathIterator |
getPathIterator(AffineTransform at)
この
Area オブジェクトの輪郭の PathIterator を作成します。 |
PathIterator |
getPathIterator(AffineTransform at, double flatness)
この
Area オブジェクトの平坦化した輪郭の PathIterator を作成します。 |
void |
intersect(Area rhs)
この
Area の形状を、現在の形状と指定された Area の形状の共通部分に設定します。 |
boolean |
intersects(double x, double y, double w, double h)
Shape の内部が指定された矩形領域の内部と交差しているかどうかをテストします。 |
boolean |
intersects(Rectangle2D r)
Shape の内部が指定された Rectangle2D の内部と交差しているかどうかをテストします。 |
boolean |
isEmpty()
この
Area オブジェクトが領域を囲むかどうかを判定します。 |
boolean |
isPolygonal()
この
Area が完全に、辺が直線の多角形幾何学的図形から構成されているかどうかを判定します。 |
boolean |
isRectangular()
この
Area の形状が矩形かどうかを判定します。 |
boolean |
isSingular()
この
Area が単一の閉じられたサブパスから構成されているかどうかを判定します。 |
void |
reset()
この
Area から幾何学的図形をすべて削除し、空の領域に戻します。 |
void |
subtract(Area rhs)
指定された
Area の形状をこの Area の形状から取り去ります。 |
void |
transform(AffineTransform t)
指定された
AffineTransform を使用して、この Area の幾何学的図形を変換します。 |
public Area()
public Area(Shape s)
Area
クラスは、指定された Shape
オブジェクトから領域幾何学的図形を作成します。Shape
がまだ閉じられていない場合、幾何学的図形は明示的に閉じられます。Shape
の幾何学的図形で指定されている塗りつぶし規則 (偶奇または屈曲) を使うと、結果として生成される閉じた領域を指定できます。s
- 領域の構築元の Shape
NullPointerException
- s
が null である場合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 である場合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 である場合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 である場合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 である場合public void reset()
Area
から幾何学的図形をすべて削除し、空の領域に戻します。public boolean isEmpty()
Area
オブジェクトが領域を囲むかどうかを判定します。Area
オブジェクトが空の領域を表す場合は true
。それ以外の場合は false
。public boolean isPolygonal()
Area
が完全に、辺が直線の多角形幾何学的図形から構成されているかどうかを判定します。Area
の幾何学的図形が完全にラインセグメントから構成されている場合は true
。それ以外の場合は false
。public boolean isRectangular()
Area
の形状が矩形かどうかを判定します。Area
の幾何学的図形の形状が矩形の場合は true
。それ以外の場合は false
。public boolean isSingular()
Area
が単一の閉じられたサブパスから構成されているかどうかを判定します。このメソッドは、パスに含まれているサブパスが 0 または 1 つの場合は true
を、パスに含まれているサブパスが 2 つ以上の場合は false
を返します。サブパスは、パスに現れる SEG_MOVETO
セグメントの数によってカウントされます。Area
が 1 つの基本幾何学的図形から構成されている場合は true
。それ以外の場合は false
。public Rectangle2D getBounds2D()
Area
を完全に囲む高精度バウンディング Rectangle2D
を返します。
Area クラスはその Shape にできるだけぴったりしたバウンディングボックスを返そうとします。バウンディングボックスは Shape の輪郭のカーブの制御点を含むようにはパディングされず、輪郭自体の実際の幾何学的図形にぴったりの大きさになります。
getBounds2D
、インタフェース: Shape
Area
のバウンディング Rectangle2D
。Shape.getBounds()
public Rectangle getBounds()
Area
を完全に囲むバウンディング Rectangle
を返します。
Area クラスはその Shape にできるだけぴったりしたバウンディングボックスを返そうとします。バウンディングボックスは Shape の輪郭のカーブの制御点を含むようにはパディングされず、輪郭自体の実際の幾何学的図形にぴったりの大きさになります。返されたオブジェクトは整数でバウンディングボックスを表すので、バウンディングボックスは、Shape の幾何学的図形を取り囲むもっとも近い整数座標というレベルでの一致になります。
getBounds
、インタフェース: Shape
Area
のバウンディング Rectangle
。Shape.getBounds2D()
public Object clone()
Area
オブジェクトとまったく同じコピーを返します。public boolean equals(Area other)
Area
オブジェクトの幾何学的図形が等しいかどうかを判定します。引数が null の場合、このメソッドは false を返します。other
- この Area
と比較される Area
true
。それ以外の場合は false
。public void transform(AffineTransform t)
AffineTransform
を使用して、この Area
の幾何学的図形を変換します。幾何学的図形が適切に変換され、これにより、このオブジェクトによって定義されている閉じた領域が永久的に変更されます。t
- 領域を変換するために使用される変換NullPointerException
- t
が null である場合public Area createTransformedArea(AffineTransform t)
AffineTransform
によって変換されたこの Area
と同じ幾何学的図形を含む、新しい Area
オブジェクトを作成します。この Area
オブジェクトは変化しません。t
- 新しい Area
を変換するために使用される指定された AffineTransform
Area
オブジェクト。NullPointerException
- t
が null である場合public boolean contains(double x, double y)
Shape
の境界の内側にあるかどうかをテストします。public boolean contains(Point2D p)
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 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 PathIterator getPathIterator(AffineTransform at)
getPathIterator
、インタフェース: Shape
at
- 反復処理で返されるときに座標に適用されるオプションの AffineTransform
、または変換されていない座標が必要な場合は null
Area
の輪郭の幾何学的図形を一度に 1 セグメントずつ返す PathIterator
オブジェクト。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
オブジェクト。 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.