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

クラスPath2D

  • すべての実装されたインタフェース:
    Shape, Cloneable
    直系の既知のサブクラス:
    Path2D.Double, Path2D.Float

    public abstract class Path2D
    extends Object
    implements Shape, Cloneable
    Path2Dクラスは、単純ですが柔軟性のある、任意の幾何学的パスを表す形状を提供します。 これは、PathIteratorインタフェースによって反復できるすべてのパス(そのセグメントのタイプと屈曲規則のすべてを含む)を完全に表すことができるほか、Shapeインタフェースの基本的な当たり判定メソッドをすべて実装します。

    浮動小数点精度で表したり、使用したりできるデータを扱うときは、Path2D.Floatを使用します。 倍精度の正確性または範囲が必要なデータには、Path2D.Doubleを使用します。

    Path2Dは、幾何学的パスの基本的な構築および管理でまさに必要となる機能を備えているほか、前述のインタフェースに若干の解釈を加えたものを実装しています。 単純な当たり判定だけでなく、閉じた幾何学的形状の内部を操作することが有効な場合は、Areaクラスを使用すると、閉じた図形に特化した追加機能を使用できます。 どちらのクラスも表向きはShapeインタフェースを実装していますが、その目的が異なります。組み合わせて使用することにより、幾何学的形状に対して便利な観点を2つ提供します。Path2Dは主にパス・セグメントによって形成される軌跡を扱うのに対して、Areaは2D幾何学的空間の閉じた領域の解釈や操作が中心です。

    PathIteratorインタフェースには、パスを構成するセグメントのタイプと、パスの内側または外側にある領域を特定する方法を制御する屈曲規則について、詳細な説明が用意されています。

    導入されたバージョン:
    1.6
    • ネストされたクラスのサマリー

      ネストされたクラス 
      修飾子と型 クラス 説明
      static class  Path2D.Double
      Doubleクラスは、座標が倍精度浮動小数点で格納される幾何学的パスを定義します。
      static class  Path2D.Float
      Floatクラスは、座標が単精度浮動小数点で格納される幾何学的パスを定義します。
    • フィールドのサマリー

      フィールド 
      修飾子と型 フィールド 説明
      static int WIND_EVEN_ODD
      パスの内部を決める偶奇屈曲規則です。
      static int WIND_NON_ZERO
      パスの内部を決める非ゼロ屈曲規則です。
    • メソッドのサマリー

      すべてのメソッド 静的メソッド インスタンス・メソッド 抽象メソッド 具象メソッド 
      修飾子と型 メソッド 説明
      abstract void append​(PathIterator pi, boolean connect)
      指定されたPathIteratorオブジェクトの幾何学的図形をパスに追加します。その新しい幾何学的図形をライン・セグメントで既存のパス・セグメントに接続することも可能です。
      void append​(Shape s, boolean connect)
      指定されたShapeオブジェクトの幾何学的図形をパスに追加します。その新しい幾何学的図形をライン・セグメントで既存のパス・セグメントに接続することも可能です。
      abstract Object clone()
      このオブジェクトと同じクラスの新しいオブジェクトを作成します。
      void closePath()
      最後のmoveToの座標まで直線を描画して現在のサブパスを閉じます。
      boolean contains​(double x, double y)
      指定された座標が、内側の定義によって記述されたShapeの境界の内側にあるかどうかをテストします。
      boolean contains​(double x, double y, double w, double h)
      Shapeの内部に、指定された矩形領域が完全に含まれるかどうかをテストします。
      static boolean contains​(PathIterator pi, double x, double y)
      指定された座標が指定されたPathIteratorの閉じた境界内にあるかどうかを判定します。
      static boolean contains​(PathIterator pi, double x, double y, double w, double h)
      指定された矩形領域全体が指定されたPathIteratorの閉じた境界内にあるかどうかを判定します。
      static boolean contains​(PathIterator pi, Point2D p)
      指定されたPoint2Dが指定されたPathIteratorの閉じた境界内にあるかどうかを判定します。
      static boolean contains​(PathIterator pi, Rectangle2D r)
      指定されたRectangle2D全体が指定されたPathIteratorの閉じた境界内にあるかどうかを判定します。
      boolean contains​(Point2D p)
      指定されたPoint2Dが、内側の定義によって記述されたShapeの境界の内側にあるかどうかをテストします。
      boolean contains​(Rectangle2D r)
      Shapeの内部に、指定されたRectangle2Dが完全に含まれるかどうかをテストします。
      Shape createTransformedShape​(AffineTransform at)
      このPath2Dの変換されたあとのバージョンを表す、新しいShapeを返します。
      abstract void curveTo​(double x1, double y1, double x2, double y2, double x3, double y3)
      3つの新しい点によって定義される曲線セグメントをパスに追加します。曲線セグメントは、指定された点(x1,y1)と点(x2,y2)をベジェ制御点として使用して、現在の座標と指定された座標(x3,y3)の両方を通るベジェ曲線として描画します。
      Rectangle getBounds()
      Shapeを完全に囲む整数のRectangleを返します。
      Point2D getCurrentPoint()
      パスの最後に追加されたもっとも新しい座標をPoint2Dオブジェクトとして返します。
      PathIterator getPathIterator​(AffineTransform at, double flatness)
      Shapeの境界に沿って反復し、Shapeの輪郭の幾何学的図形の平坦化されたビューへのアクセスを提供するイテレータ・オブジェクトを返します。
      int getWindingRule()
      塗りつぶしスタイル屈曲規則を返します。
      boolean intersects​(double x, double y, double w, double h)
      Shapeの内部が指定された矩形領域の内部と交差しているかどうかをテストします。
      static boolean intersects​(PathIterator pi, double x, double y, double w, double h)
      指定されたPathIteratorの内部が、指定された矩形座標セットの内部と交差するかどうかを判定します。
      static boolean intersects​(PathIterator pi, Rectangle2D r)
      指定されたPathIteratorの内部が、指定されたRectangle2Dの内部と交差するかどうかを判定します。
      boolean intersects​(Rectangle2D r)
      Shapeの内部が指定されたRectangle2Dの内部と交差しているかどうかをテストします。
      abstract void lineTo​(double x, double y)
      現在の座標から倍精度で新しく指定された座標まで直線を描画して点をパスに追加します。
      abstract void moveTo​(double x, double y)
      倍精度で指定された座標に移動して点をパスに追加します。
      abstract void quadTo​(double x1, double y1, double x2, double y2)
      2つの新しい点によって定義される曲線セグメントをパスに追加します。曲線セグメントは、指定された点(x1,y1)を2次パラメトリック制御点として使用して、現在の座標と指定された座標(x2,y2)を通る2次曲線として描画します。
      void reset()
      パスを空にリセットします。
      void setWindingRule​(int rule)
      このパスの屈曲規則を指定された値に設定します。
      abstract void transform​(AffineTransform at)
      指定されたAffineTransformを使用して、このパスの幾何学的図形を変換します。
      abstract void trimToSize()
      このPath2Dインスタンスの容量を現在のサイズに縮小します。
    • メソッドの詳細

      • moveTo

        public abstract void moveTo​(double x,
                                    double y)
        倍精度で指定された座標に移動して点をパスに追加します。
        パラメータ:
        x - 指定されたX座標
        y - 指定されたY座標
        導入されたバージョン:
        1.6
      • lineTo

        public abstract void lineTo​(double x,
                                    double y)
        現在の座標から倍精度で新しく指定された座標まで直線を描画して点をパスに追加します。
        パラメータ:
        x - 指定されたX座標
        y - 指定されたY座標
        導入されたバージョン:
        1.6
      • quadTo

        public abstract void quadTo​(double x1,
                                    double y1,
                                    double x2,
                                    double y2)
        2つの新しい点によって定義される曲線セグメントをパスに追加します。曲線セグメントは、指定された点(x1,y1)を2次パラメトリック制御点として使用して、現在の座標と指定された座標(x2,y2)を通る2次曲線として描画します。 すべての座標は、倍精度で指定されます。
        パラメータ:
        x1 - 2次制御点のX座標
        y1 - 2次制御点のY座標
        x2 - 最後の終点のX座標
        y2 - 最後の終点のY座標
        導入されたバージョン:
        1.6
      • curveTo

        public abstract void curveTo​(double x1,
                                     double y1,
                                     double x2,
                                     double y2,
                                     double x3,
                                     double y3)
        3つの新しい点によって定義される曲線セグメントをパスに追加します。曲線セグメントは、指定された点(x1,y1)と点(x2,y2)をベジェ制御点として使用して、現在の座標と指定された座標(x3,y3)の両方を通るベジェ曲線として描画します。 すべての座標は、倍精度で指定されます。
        パラメータ:
        x1 - 最初のベジェ制御点のX座標
        y1 - 最初のベジェ制御点のY座標
        x2 - 2番目のベジェ制御点のX座標
        y2 - 2番目のベジェ制御点のY座標
        x3 - 最後の終点のX座標
        y3 - 最後の終点のY座標
        導入されたバージョン:
        1.6
      • closePath

        public final void closePath()
        最後のmoveToの座標まで直線を描画して現在のサブパスを閉じます。 パスがすでに閉じている場合、このメソッドは効果がありません。
        導入されたバージョン:
        1.6
      • append

        public final void append​(Shape s,
                                 boolean connect)
        指定されたShapeオブジェクトの幾何学的図形をパスに追加します。その新しい幾何学的図形をライン・セグメントで既存のパス・セグメントに接続することも可能です。 connectパラメータがtrueであり、パスが空でない場合、追加されたShapeの幾何学的図形の初期moveTolineToセグメントに変わります。 そのような接続lineToセグメントのデスティネーションの座標が現在開いているサブパスの終了座標と一致する場合、セグメントは不要なので省略されます。 指定されたShapeの屈曲規則は無視され、追加された幾何学的図形はこのパスに指定された屈曲規則に制御されます。
        パラメータ:
        s - このパスに幾何学的図形が追加されるShape
        connect - 新しい幾何学的図形を既存のパスに接続するために初期moveToセグメントをlineToセグメントに変えるかどうかを制御するboolean値
        導入されたバージョン:
        1.6
      • append

        public abstract void append​(PathIterator pi,
                                    boolean connect)
        指定されたPathIteratorオブジェクトの幾何学的図形をパスに追加します。その新しい幾何学的図形をライン・セグメントで既存のパス・セグメントに接続することも可能です。 connectパラメータがtrueであり、パスが空でない場合、追加されたShapeの幾何学的図形の初期moveTolineToセグメントに変わります。 そのような接続lineToセグメントのデスティネーションの座標が現在開いているサブパスの終了座標と一致する場合、セグメントは不要なので省略されます。 指定されたShapeの屈曲規則は無視され、追加された幾何学的図形はこのパスに指定された屈曲規則に制御されます。
        パラメータ:
        pi - このパスに幾何学的図形が追加されるPathIterator
        connect - 新しい幾何学的図形を既存のパスに接続するために初期moveToセグメントをlineToセグメントに変えるかどうかを制御するboolean値
        導入されたバージョン:
        1.6
      • getWindingRule

        public final int getWindingRule()
        塗りつぶしスタイル屈曲規則を返します。
        戻り値:
        現在の屈曲規則を表す整数。
        導入されたバージョン:
        1.6
        関連項目:
        WIND_EVEN_ODD, WIND_NON_ZERO, setWindingRule(int)
      • setWindingRule

        public final void setWindingRule​(int rule)
        このパスの屈曲規則を指定された値に設定します。
        パラメータ:
        rule - 指定された屈曲規則を表す整数
        例外:
        IllegalArgumentException - ruleWIND_EVEN_ODDまたはWIND_NON_ZEROのどちらでもない場合
        導入されたバージョン:
        1.6
        関連項目:
        getWindingRule()
      • getCurrentPoint

        public final Point2D getCurrentPoint()
        パスの最後に追加されたもっとも新しい座標をPoint2Dオブジェクトとして返します。
        戻り値:
        パスの終了座標を含むPoint2Dオブジェクト。パスに点が含まれていない場合はnull
        導入されたバージョン:
        1.6
      • reset

        public final void reset()
        パスを空にリセットします。 追加位置はパスの先頭に設定し直され、すべての座標および点のタイプは破棄されます。
        導入されたバージョン:
        1.6
      • transform

        public abstract void transform​(AffineTransform at)
        指定されたAffineTransformを使用して、このパスの幾何学的図形を変換します。 幾何学的図形は適切に変換され、これにより、このオブジェクトによって定義される境界が永久的に変更されます。
        パラメータ:
        at - 領域を変換するのに使うAffineTransform
        導入されたバージョン:
        1.6
      • createTransformedShape

        public final Shape createTransformedShape​(AffineTransform at)
        このPath2Dの変換されたあとのバージョンを表す、新しいShapeを返します。 戻り値の正確な型と座標の精度は、このメソッドでは指定されません。 このメソッドは、変換された幾何学的図形のための、このPath2Dが現在維持している精度に劣らない精度を含むShapeを返しますが、それ以下の精度が含まれることもあります。 結果での精度とストレージ・サイズのトレードオフが重要な場合は、選択を明確にするために、Path2D.FloatサブクラスとPath2D.Doubleサブクラスの簡易コンストラクタを使用するようにしてください。
        パラメータ:
        at - 新しいShapeを変換するために使用されるAffineTransform
        戻り値:
        指定されたAffineTransformで変換された新しいShape
        導入されたバージョン:
        1.6
      • getBounds

        public final Rectangle getBounds()
        Shapeを完全に囲む整数のRectangleを返します。 返されたRectangleShapeを囲む最小のバウンディング・ボックスであるとは限りません。示されたRectangle内にShapeが完全に収まるというだけです。 また、Shapeが整数型の制限範囲を超える場合、返されたRectangleShapeを完全に囲むことができないこともあります。 通常は、getBounds2Dメソッドの方が、表現の自由度が高いために、比較的ぴったりしたバウンディング・ボックスを返します。

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

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

        shape.contains(x,y)には次が必要: bounds.contains(x,y)

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

        bounds.contains(x,y)は次を示さない: shape.contains(x,y)

        定義:
        getBounds、インタフェース: Shape
        戻り値:
        Shapeを完全に囲む整数型のRectangle
        導入されたバージョン:
        1.6
        関連項目:
        Shape.getBounds2D()
      • contains

        public static boolean contains​(PathIterator pi,
                                       double x,
                                       double y)
        指定された座標が指定されたPathIteratorの閉じた境界内にあるかどうかを判定します。

        このメソッドは、Shapeインタフェースの実装者がShape.contains(double, double)メソッドのサポートを実装するための基本的な機能を提供します。

        パラメータ:
        pi - 指定されたPathIterator
        x - 指定されたX座標
        y - 指定されたY座標
        戻り値:
        指定された座標が指定されたPathIteratorの境界内にある場合はtrue、そうでない場合はfalse
        導入されたバージョン:
        1.6
      • contains

        public static boolean contains​(PathIterator pi,
                                       Point2D p)
        指定されたPoint2Dが指定されたPathIteratorの閉じた境界内にあるかどうかを判定します。

        このメソッドは、Shapeインタフェースの実装者がShape.contains(Point2D)メソッドのサポートを実装するための基本的な機能を提供します。

        パラメータ:
        pi - 指定されたPathIterator
        p - 指定されたPoint2D
        戻り値:
        指定された座標が指定されたPathIteratorの境界内にある場合はtrue、そうでない場合はfalse
        導入されたバージョン:
        1.6
      • contains

        public final boolean contains​(double x,
                                      double y)
        指定された座標が、内側の定義によって記述されたShapeの境界の内側にあるかどうかをテストします。
        定義:
        contains、インタフェース: Shape
        パラメータ:
        x - テストされる指定されたX座標
        y - テストされる指定されたY座標
        戻り値:
        指定された座標がShape境界の内側にある場合はtrue、それ以外の場合はfalse
        導入されたバージョン:
        1.6
      • contains

        public final boolean contains​(Point2D p)
        指定されたPoint2Dが、内側の定義によって記述されたShapeの境界の内側にあるかどうかをテストします。
        定義:
        contains、インタフェース: Shape
        パラメータ:
        p - テストされる指定されたPoint2D
        戻り値:
        指定されたPoint2DShapeの境界の内側にある場合はtrue、それ以外の場合はfalse
        導入されたバージョン:
        1.6
      • contains

        public static boolean contains​(PathIterator pi,
                                       double x,
                                       double y,
                                       double w,
                                       double h)
        指定された矩形領域全体が指定されたPathIteratorの閉じた境界内にあるかどうかを判定します。

        このメソッドは、Shapeインタフェースの実装者がShape.contains(double, double, double, double)メソッドのサポートを実装するための基本的な機能を提供します。

        このメソッド・オブジェクトは、指定された矩形領域がパス・セグメントと交差していて、そのセグメントがパスの内部領域と外部領域の間の境界を表さない場合にも、falseを返すことがあります。 そのようなセグメントがWIND_NON_ZERO屈曲規則を持つパスの一部である場合、またはセグメント・セット間に外部領域が存在しない2つのセグメント・セットが相殺されるようにセグメントが逆方向に再トレースされる場合、セグメントは完全にパスの内部領域側にある可能性があります。 セグメントがパスの内部領域の実際の境界を表すかどうかを判断するには、パスのすべてのセグメントと屈曲規則に対する大量の計算が必要です。そのため、そのような判断はこの実装の範囲を超えています。

        パラメータ:
        pi - 指定されたPathIterator
        x - 指定されたX座標
        y - 指定されたY座標
        w - 指定された矩形領域の幅
        h - 指定された矩形領域の高さ
        戻り値:
        指定されたPathIteratorに指定された矩形領域が含まれる場合はtrue。それ以外の場合はfalse
        導入されたバージョン:
        1.6
      • contains

        public static boolean contains​(PathIterator pi,
                                       Rectangle2D r)
        指定されたRectangle2D全体が指定されたPathIteratorの閉じた境界内にあるかどうかを判定します。

        このメソッドは、Shapeインタフェースの実装者がShape.contains(Rectangle2D)メソッドのサポートを実装するための基本的な機能を提供します。

        このメソッド・オブジェクトは、指定された矩形領域がパス・セグメントと交差していて、そのセグメントがパスの内部領域と外部領域の間の境界を表さない場合にも、falseを返すことがあります。 そのようなセグメントがWIND_NON_ZERO屈曲規則を持つパスの一部である場合、またはセグメント・セット間に外部領域が存在しない2つのセグメント・セットが相殺されるようにセグメントが逆方向に再トレースされる場合、セグメントは完全にパスの内部領域側にある可能性があります。 セグメントがパスの内部領域の実際の境界を表すかどうかを判断するには、パスのすべてのセグメントと屈曲規則に対する大量の計算が必要です。そのため、そのような判断はこの実装の範囲を超えています。

        パラメータ:
        pi - 指定されたPathIterator
        r - 指定されたRectangle2D
        戻り値:
        指定されたPathIteratorに指定されたRectangle2Dが含まれる場合はtrue。それ以外の場合はfalse
        導入されたバージョン:
        1.6
      • contains

        public final 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オブジェクトより正確な幾何学的計算を実行するため、より的確な答えが必要な場合に使用できます。

        このメソッド・オブジェクトは、指定された矩形領域がパス・セグメントと交差していて、そのセグメントがパスの内部領域と外部領域の間の境界を表さない場合にも、falseを返すことがあります。 そのようなセグメントがWIND_NON_ZERO屈曲規則を持つパスの一部である場合、またはセグメント・セット間に外部領域が存在しない2つのセグメント・セットが相殺されるようにセグメントが逆方向に再トレースされる場合、セグメントは完全にパスの内部領域側にある可能性があります。 セグメントがパスの内部領域の実際の境界を表すかどうかを判断するには、パスのすべてのセグメントと屈曲規則に対する大量の計算が必要です。そのため、そのような判断はこの実装の範囲を超えています。

        定義:
        contains、インタフェース: Shape
        パラメータ:
        x - 指定された矩形領域の左上隅のX座標
        y - 指定された矩形領域の左上隅のY座標
        w - 指定された矩形領域の幅
        h - 指定された矩形領域の高さ
        戻り値:
        Shapeの内部に、指定された矩形領域が完全に含まれる場合はtrue、それ以外の場合、またはShapeに矩形領域が含まれ、intersectsメソッドがtrueを返し、さらに負荷が大きすぎて包含の計算を実行できない場合はfalse
        導入されたバージョン:
        1.6
        関連項目:
        AreaShape.intersects(double, double, double, double)
      • contains

        public final boolean contains​(Rectangle2D r)
        Shapeの内部に、指定されたRectangle2Dが完全に含まれるかどうかをテストします。 Shape.contains()メソッドを使用すると、次のような場合に、Shape実装は内部的にfalseを返すことができます。
        • intersectメソッドがtrueを返し、かつ
        • ShapeRectangle2Dが完全に含まれるかどうかを判定するための計算の負荷が非常に大きい。
        つまり、Shapesによっては、ShapeRectangle2Dが含まれている場合でもこのメソッドがfalseを返すことがあります。 Areaクラスは、ほとんどのShapeオブジェクトより正確な幾何学的計算を実行するため、より的確な答えが必要な場合に使用できます。

        このメソッド・オブジェクトは、指定された矩形領域がパス・セグメントと交差していて、そのセグメントがパスの内部領域と外部領域の間の境界を表さない場合にも、falseを返すことがあります。 そのようなセグメントがWIND_NON_ZERO屈曲規則を持つパスの一部である場合、またはセグメント・セット間に外部領域が存在しない2つのセグメント・セットが相殺されるようにセグメントが逆方向に再トレースされる場合、セグメントは完全にパスの内部領域側にある可能性があります。 セグメントがパスの内部領域の実際の境界を表すかどうかを判断するには、パスのすべてのセグメントと屈曲規則に対する大量の計算が必要です。そのため、そのような判断はこの実装の範囲を超えています。

        定義:
        contains、インタフェース: Shape
        パラメータ:
        r - 指定されたRectangle2D
        戻り値:
        Shapeの内部にRectangle2Dが完全に含まれる場合はtrue、それ以外の場合、またはShapeRectangle2Dが含まれ、intersectsメソッドがtrueを返し、さらに負荷が大きすぎて包含の計算を実行できない場合はfalse
        導入されたバージョン:
        1.6
        関連項目:
        Shape.contains(double, double, double, double)
      • intersects

        public static boolean intersects​(PathIterator pi,
                                         double x,
                                         double y,
                                         double w,
                                         double h)
        指定されたPathIteratorの内部が、指定された矩形座標セットの内部と交差するかどうかを判定します。

        このメソッドは、Shapeインタフェースの実装者がShape.intersects(double, double, double, double)メソッドのサポートを実装するための基本的な機能を提供します。

        このメソッド・オブジェクトは、指定された矩形領域がパス・セグメントと交差していて、そのセグメントがパスの内部領域と外部領域の間の境界を表さない場合にも、trueを返すことがあります。 セグメント・セット間に内部領域が存在しない2つのセグメント・セットが相殺されるようにセグメントのセットが逆方向に再トレースされる場合に、このような状態が発生することがあります。 セグメントがパスの内部領域の実際の境界を表すかどうかを判断するには、パスのすべてのセグメントと屈曲規則に対する大量の計算が必要です。そのため、そのような判断はこの実装の範囲を超えています。

        パラメータ:
        pi - 指定されたPathIterator
        x - 指定されたX座標
        y - 指定されたY座標
        w - 指定された矩形座標の幅
        h - 指定された矩形座標の高さ
        戻り値:
        指定されたPathIteratorと、指定された矩形座標セットの内部が互いに交差する場合はtrue。それ以外の場合はfalse
        導入されたバージョン:
        1.6
      • intersects

        public static boolean intersects​(PathIterator pi,
                                         Rectangle2D r)
        指定されたPathIteratorの内部が、指定されたRectangle2Dの内部と交差するかどうかを判定します。

        このメソッドは、Shapeインタフェースの実装者がShape.intersects(Rectangle2D)メソッドのサポートを実装するための基本的な機能を提供します。

        このメソッド・オブジェクトは、指定された矩形領域がパス・セグメントと交差していて、そのセグメントがパスの内部領域と外部領域の間の境界を表さない場合にも、trueを返すことがあります。 セグメント・セット間に内部領域が存在しない2つのセグメント・セットが相殺されるようにセグメントのセットが逆方向に再トレースされる場合に、このような状態が発生することがあります。 セグメントがパスの内部領域の実際の境界を表すかどうかを判断するには、パスのすべてのセグメントと屈曲規則に対する大量の計算が必要です。そのため、そのような判断はこの実装の範囲を超えています。

        パラメータ:
        pi - 指定されたPathIterator
        r - 指定されたRectangle2D
        戻り値:
        指定されたPathIteratorと、指定されたRectangle2Dの内部が互いに交差する場合はtrue。それ以外の場合はfalse
        導入されたバージョン:
        1.6
      • intersects

        public final boolean intersects​(double x,
                                        double y,
                                        double w,
                                        double h)
        Shapeの内部が指定された矩形領域の内部と交差しているかどうかをテストします。 Shapeの内部と指定された矩形領域の両方に含まれている点が存在する場合、その矩形領域はShapeと交差していると見なされます。

        Shape.intersects()メソッドを使用すると、次のような場合に、Shape実装は内部的にtrueを返すことができます。

        • 矩形領域とShapeが交差している可能性が高いが、
        • この共通部分を正確に判断する計算の負荷がかなり大きい。
        つまり、Shapesによっては、矩形領域がShapeと交差していない場合でもこのメソッドがtrueを返すことがあります。 Areaクラスは、ほとんどのShapeオブジェクトより正確な、幾何学的な共通部分の計算を実行するため、より的確な答えが必要な場合に使用できます。

        このメソッド・オブジェクトは、指定された矩形領域がパス・セグメントと交差していて、そのセグメントがパスの内部領域と外部領域の間の境界を表さない場合にも、trueを返すことがあります。 セグメント・セット間に内部領域が存在しない2つのセグメント・セットが相殺されるようにセグメントのセットが逆方向に再トレースされる場合に、このような状態が発生することがあります。 セグメントがパスの内部領域の実際の境界を表すかどうかを判断するには、パスのすべてのセグメントと屈曲規則に対する大量の計算が必要です。そのため、そのような判断はこの実装の範囲を超えています。

        定義:
        intersects、インタフェース: Shape
        パラメータ:
        x - 指定された矩形領域の左上隅のX座標
        y - 指定された矩形領域の左上隅のY座標
        w - 指定された矩形領域の幅
        h - 指定された矩形領域の高さ
        戻り値:
        Shapeの内部と矩形領域の内部が交差しているか、またはどちらも交差している可能性が高いが、負荷が大きすぎて共通部分の計算を実行できない場合はtrue、それ以外の場合はfalse
        導入されたバージョン:
        1.6
        関連項目:
        Area
      • intersects

        public final boolean intersects​(Rectangle2D r)
        Shapeの内部が指定されたRectangle2Dの内部と交差しているかどうかをテストします。 Shape.intersects()メソッドを使用すると、次のような場合に、Shape実装は内部的にtrueを返すことができます。
        • Rectangle2DShapeが交差している可能性が高いが、
        • この共通部分を正確に判断する計算の負荷がかなり大きい。
        つまり、Shapesによっては、Rectangle2DShapeと交差していない場合でもこのメソッドがtrueを返すことがあります。 Areaクラスは、ほとんどのShapeオブジェクトより正確な、幾何学的な共通部分の計算を実行するため、より的確な答えが必要な場合に使用できます。

        このメソッド・オブジェクトは、指定された矩形領域がパス・セグメントと交差していて、そのセグメントがパスの内部領域と外部領域の間の境界を表さない場合にも、trueを返すことがあります。 セグメント・セット間に内部領域が存在しない2つのセグメント・セットが相殺されるようにセグメントのセットが逆方向に再トレースされる場合に、このような状態が発生することがあります。 セグメントがパスの内部領域の実際の境界を表すかどうかを判断するには、パスのすべてのセグメントと屈曲規則に対する大量の計算が必要です。そのため、そのような判断はこの実装の範囲を超えています。

        定義:
        intersects、インタフェース: Shape
        パラメータ:
        r - 指定されたRectangle2D
        戻り値:
        Shapeの内部と指定されたRectangle2Dの内部が交差しているか、またはどちらも交差している可能性が高いが、負荷が大きすぎて共通部分の計算を実行できない場合はtrue、それ以外の場合はfalse
        導入されたバージョン:
        1.6
        関連項目:
        Shape.intersects(double, double, double, double)
      • getPathIterator

        public final PathIterator getPathIterator​(AffineTransform at,
                                                  double flatness)
        Shapeの境界に沿って反復し、Shapeの輪郭の幾何学的図形の平坦化されたビューへのアクセスを提供するイテレータ・オブジェクトを返します。

        イテレータが返すのは、ポイント型SEG_MOVETO、SEG_LINETO、およびSEG_CLOSEだけです。

        オプションのAffineTransformが指定されると、反復処理で返される座標がそれに応じて変換されます。

        曲線セグメントの分割の量は、平坦化されない変換を受けた曲線上の点が、返される平坦化されたパス・セグメントからもっとも離れる距離を指定するflatnessパラメータによって制御されます。 平坦化された輪郭線の精度に対して予告なしに制限が加えられることがあり、この場合、非常に小さな平坦化パラメータが大きな値として扱われることがあります。 この制限は、使用される特定の実装によって決まります。

        このメソッドを呼び出すたびに、同時に使用されているほかのすべてのPathIteratorオブジェクトとは無関係に、Shapeオブジェクトの幾何学的図形をトラバースする新しいPathIteratorオブジェクトが返されます。

        Shapeインタフェースを実装するオブジェクトにより、進行中の反復が、このような反復中に発生する可能性のある元のオブジェクトの幾何学的図形へのどのような変更からも切り離されることを推奨しますが、これは保証されません。

        このクラスのイテレータは、マルチ・スレッドに対して安全ではありません。つまりこのPath2Dクラスでは、このPath2Dオブジェクトの幾何学的図形を変更すると、この幾何学的図形についてすでに進行中の反復処理に影響を及ぼす場合があります。

        定義:
        getPathIterator、インタフェース: Shape
        パラメータ:
        at - 反復処理で返されるときに座標に適用されるオプションのAffineTransform、または変換されていない座標が必要な場合はnull
        flatness - 曲線セグメントを近似するために使用されるライン・セグメントが、元の曲線上の任意の点から離れることができる最大の距離
        戻り値:
        Shapeの幾何学的図形の平坦化されたビューを独立してトラバースする新しいPathIterator
        導入されたバージョン:
        1.6
      • clone

        public abstract Object clone()
        このオブジェクトと同じクラスの新しいオブジェクトを作成します。
        オーバーライド:
        clone、クラス: Object
        戻り値:
        このインスタンスの複製。
        例外:
        OutOfMemoryError - 十分なメモリーがない場合。
        導入されたバージョン:
        1.6
        関連項目:
        Cloneable
      • trimToSize

        public abstract void trimToSize()
        このPath2Dインスタンスの容量を現在のサイズに縮小します。 アプリケーションは、この操作を使用してパスのストレージを最小限に抑えることができます。
        導入されたバージョン:
        10