モジュール java.desktop
パッケージ java.awt.geom

クラスArea

java.lang.Object
java.awt.geom.Area
すべての実装されたインタフェース:
Shape, Cloneable

public class Area extends Object implements Shape, Cloneable
Areaオブジェクトは、2次元空間の閉じた領域について解像度に依存しない記述を格納および操作します。 Areaオブジェクトは変換可能であり、ほかのAreaオブジェクトとの結合時に各種の構成領域ジオメトリ(CAG)演算を実行できます。 CAG演算には、領域のadditionsubtractionintersection、および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
  • コンストラクタのサマリー

    コンストラクタ
    コンストラクタ
    説明
    空の領域を作成するデフォルト・コンストラクタです。
    Area​(Shape s)
    Areaクラスは、指定されたShapeオブジェクトから領域幾何学的図形を作成します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    void
    add​(Area rhs)
    指定されたAreaの形状をこのAreaの形状に追加します。
    このAreaオブジェクトとまったく同じコピーを返します。
    boolean
    contains​(double x, double y)
    指定された座標が、内側の定義によって記述されたShapeの境界の内側にあるかどうかをテストします。
    boolean
    contains​(double x, double y, double w, double h)
    Shapeの内部に、指定された矩形領域が完全に含まれるかどうかをテストします。
    boolean
    指定されたPoint2Dが、内側の定義によって記述されたShapeの境界の内側にあるかどうかをテストします。
    boolean
    Shapeの内部に、指定されたRectangle2Dが完全に含まれるかどうかをテストします。
    指定されたAffineTransformによって変換されたこのAreaと同じ幾何学的図形を含む、新しいAreaオブジェクトを作成します。
    boolean
    equals​(Area other)
    2つのAreaオブジェクトの幾何学的図形が等しいかどうかを判定します。
    void
    exclusiveOr​(Area rhs)
    このAreaの形状を、現在の形状と指定されたAreaの形状の結合領域からその共通部分を差し引いた領域に設定します。
    このAreaを完全に囲むバウンディングRectangleを返します。
    このAreaを完全に囲む高精度バウンディングRectangle2Dを返します。
    このAreaオブジェクトの輪郭の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
    Shapeの内部が指定されたRectangle2Dの内部と交差しているかどうかをテストします。
    boolean
    このAreaオブジェクトが領域を囲むかどうかを判定します。
    boolean
    このAreaが完全に、辺が直線の多角形幾何学的図形から構成されているかどうかを判定します。
    boolean
    このAreaの形状が矩形かどうかを判定します。
    boolean
    このAreaが単一の閉じられたサブパスから構成されているかどうかを判定します。
    void
    このAreaから幾何学的図形をすべて削除し、空の領域に戻します。
    void
    subtract​(Area rhs)
    指定されたAreaの形状をこのAreaの形状から取り去ります。
    void
    指定されたAffineTransformを使用して、このAreaの幾何学的図形を変換します。

    クラス java.lang.Objectで宣言されたメソッド

    equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • コンストラクタの詳細

    • 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
      関連項目:
      Shape.getBounds()
    • getBounds

      public Rectangle getBounds()
      このAreaを完全に囲むバウンディングRectangleを返します。

      AreaクラスはそのShapeにできるだけぴったりしたバウンディング・ボックスを返そうとします。 バウンディング・ボックスはShapeの輪郭のカーブの制御点を含むようにはパディングされず、輪郭自体の実際の幾何学的図形にぴったりの大きさになります。 返されたオブジェクトは整数でバウンディング・ボックスを表すので、バウンディング・ボックスは、Shapeの幾何学的図形を取り囲むもっとも近い整数座標というレベルでの一致になります。

      定義:
      getBounds、インタフェース: Shape
      戻り値:
      AreaのバウンディングRectangle
      導入されたバージョン:
      1.2
      関連項目:
      Shape.getBounds2D()
    • clone

      public Object clone()
      このAreaオブジェクトとまったく同じコピーを返します。
      オーバーライド:
      clone、クラス: Object
      戻り値:
      作成された複製オブジェクト
      導入されたバージョン:
      1.2
      関連項目:
      Cloneable
    • 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、インタフェース: Shape
      パラメータ:
      x - テストされる指定されたX座標
      y - テストされる指定されたY座標
      戻り値:
      指定された座標がShape境界の内側にある場合はtrue、それ以外の場合はfalse
      導入されたバージョン:
      1.2
    • contains

      public boolean contains(Point2D p)
      指定されたPoint2Dが、内側の定義によって記述されたShapeの境界の内側にあるかどうかをテストします。
      定義:
      contains、インタフェース: Shape
      パラメータ:
      p - テストされる指定されたPoint2D
      戻り値:
      指定されたPoint2DShapeの境界の内側にある場合はtrue、それ以外の場合はfalse
      導入されたバージョン:
      1.2
    • 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、インタフェース: Shape
      パラメータ:
      x - 指定された矩形領域の左上隅のX座標
      y - 指定された矩形領域の左上隅のY座標
      w - 指定された矩形領域の幅
      h - 指定された矩形領域の高さ
      戻り値:
      Shapeの内部に、指定された矩形領域が完全に含まれる場合はtrue、それ以外の場合、またはShapeに矩形領域が含まれ、intersectsメソッドがtrueを返し、さらに負荷が大きすぎて包含の計算を実行できない場合はfalse
      導入されたバージョン:
      1.2
      関連項目:
      AreaShape.intersects(double, double, double, double)
    • contains

      public boolean contains(Rectangle2D r)
      Shapeの内部に、指定されたRectangle2Dが完全に含まれるかどうかをテストします。 Shape.contains()メソッドを使用すると、次のような場合に、Shape実装は内部的にfalseを返すことができます。
      • intersectメソッドがtrueを返し、かつ
      • ShapeRectangle2Dが完全に含まれるかどうかを判定するための計算の負荷が非常に大きい。
      つまり、Shapesによっては、ShapeRectangle2Dが含まれている場合でもこのメソッドがfalseを返すことがあります。 Areaクラスは、ほとんどのShapeオブジェクトより正確な幾何学的計算を実行するため、より的確な答えが必要な場合に使用できます。
      定義:
      contains、インタフェース: Shape
      パラメータ:
      r - 指定されたRectangle2D
      戻り値:
      Shapeの内部にRectangle2Dが完全に含まれる場合はtrue、それ以外の場合、またはShapeRectangle2Dが含まれ、intersectsメソッドがtrueを返し、さらに負荷が大きすぎて包含の計算を実行できない場合はfalse
      導入されたバージョン:
      1.2
      関連項目:
      Shape.contains(double, double, double, double)
    • 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
      関連項目:
      Area
    • intersects

      public boolean intersects(Rectangle2D r)
      Shapeの内部が指定されたRectangle2Dの内部と交差しているかどうかをテストします。 Shape.intersects()メソッドを使用すると、次のような場合に、Shape実装は内部的にtrueを返すことができます。
      • Rectangle2DShapeが交差している可能性が高いが、
      • この共通部分を正確に判断する計算の負荷がかなり大きい。
      つまり、Shapesによっては、Rectangle2DShapeと交差していない場合でもこのメソッドがtrueを返すことがあります。 Areaクラスは、ほとんどのShapeオブジェクトより正確な、幾何学的な共通部分の計算を実行するため、より的確な答えが必要な場合に使用できます。
      定義:
      intersects、インタフェース: Shape
      パラメータ:
      r - 指定されたRectangle2D
      戻り値:
      Shapeの内部と指定されたRectangle2Dの内部が交差しているか、またはどちらも交差している可能性が高いが、負荷が大きすぎて共通部分の計算を実行できない場合はtrue、それ以外の場合はfalse
      導入されたバージョン:
      1.2
      関連項目:
      Shape.intersects(double, double, double, double)
    • 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