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 - 領域の構築元の ShapeNullPointerException - 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 - 現在の形状に追加される AreaNullPointerException - 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 - 現在の形状から差し引かれる AreaNullPointerException - 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 と交差させる AreaNullPointerException - 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、インタフェース: ShapeArea のバウンディング Rectangle2D。Shape.getBounds()public Rectangle getBounds()
Area を完全に囲むバウンディング Rectangle を返します。
Area クラスはその Shape にできるだけぴったりしたバウンディングボックスを返そうとします。バウンディングボックスは Shape の輪郭のカーブの制御点を含むようにはパディングされず、輪郭自体の実際の幾何学的図形にぴったりの大きさになります。返されたオブジェクトは整数でバウンディングボックスを表すので、バウンディングボックスは、Shape の幾何学的図形を取り囲むもっとも近い整数座標というレベルでの一致になります。
getBounds、インタフェース: ShapeArea のバウンディング Rectangle。Shape.getBounds2D()public Object clone()
Area オブジェクトとまったく同じコピーを返します。public boolean equals(Area other)
Area オブジェクトの幾何学的図形が等しいかどうかを判定します。引数が null の場合、このメソッドは false を返します。other - この Area と比較される Areatrue。それ以外の場合は false。public void transform(AffineTransform t)
AffineTransform を使用して、この Area の幾何学的図形を変換します。幾何学的図形が適切に変換され、これにより、このオブジェクトによって定義されている閉じた領域が永久的に変更されます。t - 領域を変換するために使用される変換NullPointerException - t が null である場合public Area createTransformedArea(AffineTransform t)
AffineTransform によって変換されたこの Area と同じ幾何学的図形を含む、新しい Area オブジェクトを作成します。この Area オブジェクトは変化しません。t - 新しい Area を変換するために使用される指定された AffineTransformArea オブジェクト。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、インタフェース: Shapex - 指定された矩形領域の左上隅の 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、インタフェース: Shaper - 指定された Rectangle2DShape の内部に 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、インタフェース: Shapex - 指定された矩形領域の左上隅の X 座標y - 指定された矩形領域の左上隅の Y 座標w - 指定された矩形領域の幅h - 指定された矩形領域の高さShape の内部と矩形領域の内部が交差しているか、またはどちらも交差している可能性が高いが、負荷が大きすぎて共通部分の計算を実行できない場合は true、それ以外の場合は false。Areapublic boolean intersects(Rectangle2D r)
Shape の内部が指定された Rectangle2D の内部と交差しているかどうかをテストします。Shape.intersects() メソッドを使用すると、次のような場合に、Shape 実装は内部的に true を返すことができます。
Rectangle2D と Shape が交差している可能性が高いが、
Shapes によっては、Rectangle2D が Shape と交差していない場合でもこのメソッドが true を返すことがあります。Area クラスは、ほとんどの Shape オブジェクトより正確な、幾何学的な共通部分の計算を実行するため、より的確な答えが必要な場合に使用できます。intersects、インタフェース: Shaper - 指定された Rectangle2DShape の内部と指定された Rectangle2D の内部が交差しているか、またはどちらも交差している可能性が高いが、負荷が大きすぎて共通部分の計算を実行できない場合は true、それ以外の場合は false。Shape.intersects(double, double, double, double)public PathIterator getPathIterator(AffineTransform at)
getPathIterator、インタフェース: Shapeat - 反復処理で返されるときに座標に適用されるオプションの AffineTransform、または変換されていない座標が必要な場合は nullArea の輪郭の幾何学的図形を一度に 1 セグメントずつ返す PathIterator オブジェクト。public PathIterator getPathIterator(AffineTransform at, double flatness)
Area オブジェクトの平坦化した輪郭の PathIterator を作成します。SEG_MOVETO、SEG_LINETO、SEG_CLOSE の 3 種類の点によって表現される曲線状でないパスセグメントだけが、イテレータによって返されます。この Area オブジェクトは変化しません。getPathIterator、インタフェース: Shapeat - 反復処理で返されるときに座標に適用されるオプションの AffineTransform、または変換されていない座標が必要な場合は nullflatness - 分割された曲線が終点を結ぶ直線によって置換される前に、指定された曲線の制御点が共線から外れることのできる最大距離Area の輪郭の幾何学的図形を一度に 1 セグメントずつ返す PathIterator オブジェクト。 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.