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, 2016, Oracle and/or its affiliates. All rights reserved.Use is subject to license termsDocumentation Redistribution Policyも参照してください。