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

クラスPolygon

  • すべての実装されたインタフェース:
    Shape, Serializable

    public class Polygon
    extends Object
    implements Shape, Serializable
    Polygonクラスは、座標空間内の閉じられた2次元領域の記述をカプセル化します。 この領域は、多角形の1辺をなす線セグメントの任意の数によって境界を区切られます。 内部的には、多角形は(x,y)座標ペアのリストから構成されます。この場合、各ペアは多角形の頂点を定義し、連続する2つのペアは多角形の1辺をなす線の端点になります。 (x,y)点の最初と最後のペアは、多角形を閉じる線セグメントによって結合されます。 このPolygonは偶奇屈曲ルールによって定義されます。 偶奇屈曲ルールの定義については、WIND_EVEN_ODDを参照してください。 containsintersectsおよびinsideメソッドを含むこのクラスの当たり判定メソッドは、Shapeクラスのコメントに記述された内側の定義を使用します。
    導入されたバージョン:
    1.0
    関連項目:
    Shape, 直列化された形式
    • フィールドのサマリー

      フィールド 
      修飾子と型 フィールド 説明
      protected Rectangle bounds
      このPolygonの境界。
      int npoints
      点の総数です。
      int[] xpoints
      X座標の配列です。
      int[] ypoints
      Y座標の配列です。
    • コンストラクタのサマリー

      コンストラクタ 
      コンストラクタ 説明
      Polygon()
      空の多角形を作成します。
      Polygon​(int[] xpoints, int[] ypoints, int npoints)
      指定されたパラメータからPolygonを構築して初期化します。
    • メソッドのサマリー

      すべてのメソッド インスタンス・メソッド 具象メソッド 非推奨のメソッド 
      修飾子と型 メソッド 説明
      void addPoint​(int x, int y)
      このPolygonに指定された座標を追加します。
      boolean contains​(double x, double y)
      指定された座標が、内側の定義によって記述されたShapeの境界の内側にあるかどうかをテストします。
      boolean contains​(double x, double y, double w, double h)
      Shapeの内部に、指定された矩形領域が完全に含まれるかどうかをテストします。
      boolean contains​(int x, int y)
      指定された座標がこのPolygonの内側にあるかどうかを判定します。
      boolean contains​(Point2D p)
      指定されたPoint2Dが、内側の定義によって記述されたShapeの境界の内側にあるかどうかをテストします。
      boolean contains​(Rectangle2D r)
      Shapeの内部に、指定されたRectangle2Dが完全に含まれるかどうかをテストします。
      boolean contains​(Point p)
      指定されたPointがこのPolygonの内側にあるかどうかを判定します。
      Rectangle getBoundingBox()
      非推奨。
      JDK Version 1.1以降は、getBounds()に置き換えられています。
      Rectangle getBounds()
      このPolygonのバウンディング・ボックスを取得します。
      Rectangle2D getBounds2D()
      高精度で、かつgetBoundsメソッドより正確なShapeのバウンディング・ボックスを返します。
      PathIterator getPathIterator​(AffineTransform at)
      このPolygonの境界に沿って反復し、このPolygonの輪郭の幾何学的図形へのアクセスを提供するイテレータ・オブジェクトを返します。
      PathIterator getPathIterator​(AffineTransform at, double flatness)
      Shapeの境界に沿って反復し、Shapeの輪郭の幾何学的図形へのアクセスを提供するイテレータ・オブジェクトを返します。
      boolean inside​(int x, int y)
      非推奨。
      JDK Version 1.1以降は、contains(int, int)に置き換えられています。
      boolean intersects​(double x, double y, double w, double h)
      Shapeの内部が指定された矩形領域の内部と交差しているかどうかをテストします。
      boolean intersects​(Rectangle2D r)
      Shapeの内部が指定されたRectangle2Dの内部と交差しているかどうかをテストします。
      void invalidate()
      このPolygonの頂点の座標に依存する、内部的にキャッシュされたすべてのデータを無効にするか、またはフラッシュします。
      void reset()
      このPolygonオブジェクトを空の多角形にリセットします。
      void translate​(int deltaX, int deltaY)
      Polygonの頂点を、X軸に沿ってdeltaX、Y軸に沿ってdeltaYに平行移動します。
    • フィールドの詳細

      • npoints

        public int npoints
        点の総数です。 npointsの値はこのPolygonの有効な点の数を表し、xpointsまたはypointsの数よりも小さくなる可能性があります。 この値は0にすることができます。
        導入されたバージョン:
        1.0
        関連項目:
        addPoint(int, int)
      • xpoints

        public int[] xpoints
        X座標の配列です。 この配列の要素の数は、このPolygonのX座標の数よりも大きくなる可能性があります。 余分な要素により、この配列を再作成せずに、このPolygonに新しい点を追加できます。 npointsの値は、このPolygon内の有効な点の数と同じです。
        導入されたバージョン:
        1.0
        関連項目:
        addPoint(int, int)
      • ypoints

        public int[] ypoints
        Y座標の配列です。 この配列の要素の数は、このPolygonのY座標の数よりも大きくなります。 余分な要素により、この配列を再作成せずに、このPolygonに新しい点を追加できます。 npointsの値は、このPolygon内の有効な点の数と同じです。
        導入されたバージョン:
        1.0
        関連項目:
        addPoint(int, int)
    • コンストラクタの詳細

      • Polygon

        public Polygon()
        空の多角形を作成します。
        導入されたバージョン:
        1.0
      • Polygon

        public Polygon​(int[] xpoints,
                       int[] ypoints,
                       int npoints)
        指定されたパラメータからPolygonを構築して初期化します。
        パラメータ:
        xpoints - X座標の配列
        ypoints - Y座標の配列
        npoints - Polygonの点の総数
        例外:
        NegativeArraySizeException - npointsの値が負の場合。
        IndexOutOfBoundsException - npointsxpointsの長さまたはypointsの長さより大きい場合。
        NullPointerException - xpointsまたはypointsnullの場合
        導入されたバージョン:
        1.0
    • メソッドの詳細

      • reset

        public void reset()
        このPolygonオブジェクトを空の多角形にリセットします。 その中にある座標配列とデータはそのまま残りますが、点の数はゼロにリセットされ、古い頂点のデータを無効としてマークし、最初から新しい頂点のデータの蓄積を開始します。 内部にキャッシュされたすべての古い頂点に関するデータは破棄されます。 リセットする前の座標配列が再使用されるので、新しい多角形のデータの頂点の数がリセット前のデータの頂点の数よりもかなり小さい場合は、新しい空のPolygonの作成の方が現在の多角形をリセットするよりもメモリーをより効率的に使用できます。
        導入されたバージョン:
        1.4
        関連項目:
        invalidate()
      • invalidate

        public void invalidate()
        このPolygonの頂点の座標に依存する、内部的にキャッシュされたすべてのデータを無効にするか、またはフラッシュします。 このメソッドは、xpointsまたはypoints配列の座標を直接操作したあとに呼び出す必要があります。これは、頂点の座標に関連する以前の計算からデータをキャッシュしているgetBoundsまたはcontainsなどのメソッドから一貫した結果が得られるようにするためです。
        導入されたバージョン:
        1.4
        関連項目:
        getBounds()
      • translate

        public void translate​(int deltaX,
                              int deltaY)
        Polygonの頂点を、X軸に沿ってdeltaX、Y軸に沿ってdeltaYに平行移動します。
        パラメータ:
        deltaX - X軸に沿って移動する距離
        deltaY - Y軸に沿って移動する距離
        導入されたバージョン:
        1.1
      • addPoint

        public void addPoint​(int x,
                             int y)
        このPolygonに指定された座標を追加します。

        このPolygonのバウンディング・ボックスを計算するgetBoundsまたはcontainsなどの演算がすでに実行されている場合、このメソッドはバウンディング・ボックスを更新します。

        パラメータ:
        x - 指定されたX座標
        y - 指定されたY座標
        導入されたバージョン:
        1.0
        関連項目:
        getBounds(), contains(java.awt.Point)
      • getBounds

        public Rectangle getBounds()
        このPolygonのバウンディング・ボックスを取得します。 このバウンディング・ボックスは辺が座標空間のx軸およびy軸に平行でPolygonを完全に格納する最小のRectangleです。
        定義:
        getBounds、インタフェース: Shape
        戻り値:
        このPolygonの境界を定義するRectangle
        導入されたバージョン:
        1.1
        関連項目:
        Shape.getBounds2D()
      • getBoundingBox

        @Deprecated
        public Rectangle getBoundingBox()
        非推奨。
        JDK Version 1.1以降は、getBounds()に置き換えられています。
        このPolygonの境界を返します。
        戻り値:
        このPolygonの境界。
        導入されたバージョン:
        1.0
      • contains

        public boolean contains​(Point p)
        指定されたPointがこのPolygonの内側にあるかどうかを判定します。
        パラメータ:
        p - テストされる指定されたPoint
        戻り値:
        PolygonPointが含まれる場合はtrue、そうでない場合はfalse
        導入されたバージョン:
        1.0
        関連項目:
        contains(double, double)
      • contains

        public boolean contains​(int x,
                                int y)
        指定された座標がこのPolygonの内側にあるかどうかを判定します。
        パラメータ:
        x - テストされる指定されたX座標
        y - テストされる指定されたY座標
        戻り値:
        このPolygonに、指定された座標(x,y)が含まれる場合はtrue、それ以外の場合はfalse
        導入されたバージョン:
        1.1
        関連項目:
        contains(double, double)
      • inside

        @Deprecated
        public boolean inside​(int x,
                              int y)
        非推奨。
        JDK Version 1.1以降は、contains(int, int)に置き換えられています。
        指定された座標がこのPolygonに内包されているかどうかを判定します。
        パラメータ:
        x - テストされる指定されたX座標
        y - テストされる指定されたY座標
        戻り値:
        このPolygonに、指定された座標(x,y)が含まれる場合はtrue、それ以外の場合はfalse
        導入されたバージョン:
        1.0
        関連項目:
        contains(double, double)
      • getBounds2D

        public Rectangle2D getBounds2D()
        高精度で、かつgetBoundsメソッドより正確なShapeのバウンディング・ボックスを返します。 返されたRectangle2Dが、Shapeを囲む最小のバウンディング・ボックスであるという保証はありません。Shapeが、示されたRectangle2D内に完全に含まれているだけです。 戻り値を、倍精度値を使用して寸法を格納するRectangle2Dのインスタンスにすることができるため、このメソッドによって返されたバウンディング・ボックスは通常、getBoundsメソッドによって返されたものより厳密であり、オーバーフローの問題のために失敗することはありません。

        内側の定義によって、shapeの定義する輪郭上の点が、返されたboundsオブジェクトに含まれていると見なされない状況が発生する場合があります。ただし、これは、これらの点が元のshapeにも含まれていないと見なされる場合のみです。

        pointcontains(point)メソッドに従ってshapeの内側にある場合は、boundscontains(point)メソッドに従って、返されたRectangle2D境界オブジェクトの内側にある必要があります。 具体的には、次のようになります。

        shape.contains(p)にはbounds.contains(p)が必要

        pointshapeの内側にない場合は、引き続きboundsオブジェクトに含まれている可能性があります。

        bounds.contains(p)shape.contains(p)を示さない

        定義:
        getBounds2D、インタフェース: Shape
        戻り値:
        Shapeの高精度のバウンディング・ボックスであるRectangle2Dのインスタンス。
        導入されたバージョン:
        1.2
        関連項目:
        Shape.getBounds()
      • 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
      • 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)
      • 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)
      • getPathIterator

        public PathIterator getPathIterator​(AffineTransform at)
        このPolygonの境界に沿って反復し、このPolygonの輪郭の幾何学的図形へのアクセスを提供するイテレータ・オブジェクトを返します。 オプションのAffineTransformを指定することもでき、その場合は反復処理で返される座標がそれに応じて変換されます。
        定義:
        getPathIterator、インタフェース: Shape
        パラメータ:
        at - 反復処理で返されるときに座標に適用されるオプションのAffineTransform、または変換されていない座標が必要な場合はnull
        戻り値:
        このPolygonの幾何学的図形へのアクセスを提供するPathIteratorオブジェクト。
        導入されたバージョン:
        1.2
      • getPathIterator

        public PathIterator getPathIterator​(AffineTransform at,
                                            double flatness)
        Shapeの境界に沿って反復し、Shapeの輪郭の幾何学的図形へのアクセスを提供するイテレータ・オブジェクトを返します。 イテレータが返すのは、ポイント型SEG_MOVETO、SEG_LINETO、およびSEG_CLOSEだけです。 多角形はすでに平坦であるため、flatnessパラメータは無視されます。 オプションのAffineTransformは、反復処理で返される座標がそれに応じて変換される場合に指定することができます。
        定義:
        getPathIterator、インタフェース: Shape
        パラメータ:
        at - 反復処理で返されるときに座標に適用されるオプションのAffineTransform、または変換されていない座標が必要な場合はnull
        flatness - 細分化された曲線が端点を結ぶ直線で置き換えられる前に、与えられた曲線の制御点が同一直線から変化することができる最大量。 多角形はすでに平坦であるため、flatnessパラメータは無視される。
        戻り値:
        Shapeオブジェクトの幾何学的図形へのアクセスを提供するPathIteratorオブジェクト。
        導入されたバージョン:
        1.2