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

インタフェースPathIterator

既知のすべての実装クラス:
FlatteningPathIterator

public interface PathIterator
PathIteratorインタフェースの提供するメカニズムを使用すると、Shapeインタフェースを実装するオブジェクトは、一度に1セグメント単位で境界のパスを取り出すことを呼出し側に許可することで、その境界の幾何学的図形を返すことができます。 このインタフェースでは、ラインおよび2次または3次ベジェ・スプラインである1次から3次までのベジェ曲線を使用することによって、これらのオブジェクトがその境界のパスを一度に1セグメントずつ取り出せるようにします。

複数のサブパスは、「MOVETO」セグメントを使用して幾何学的図形を不連続にし、あるサブパスの最後から次のサブパスの先頭に移動することで表現できます。

各サブパスは、サブパスの最後のセグメントをそのサブパスの先頭の「MOVETO」セグメントと同じ座標で終わらせるか、または「CLOSE」セグメントを使用して最後の点から最初の点までライン・セグメントを追加することで手作業で終了することができます。 「CLOSE」セグメントを使用してパスを閉じる以外の方法で輪郭を手作業で閉じると、サブパスの終点で異なる線種装飾が使用される可能性があります。 たとえば、BasicStrokeオブジェクトは「CLOSE」セグメントが検出された場合、「JOIN」を線の装飾として使用して最初の点と最後の点を結びます。これに対して、単純に最初の座標と同じ座標でパスを終わらせると、最後に「CAP」が線の装飾として使用されます。

関連項目:
Shape, BasicStroke
  • フィールドのサマリー

    フィールド
    修飾子と型
    フィールド
    説明
    static int
    先行するサブパスがもっとも新しいSEG_MOVETOに対応する点までのライン・セグメントを追加することで閉じられなければならないことを指定するセグメント型定数です。
    static int
    もっとも新しく指定された点から描画される3次パラメトリック曲線を指定する3つの点のセットのセグメント型定数です。
    static int
    もっとも新しく指定された点から描画されるラインの終点を指定する点のセグメント型定数です。
    static int
    新しいサブパスの開始位置を指定する点のセグメント型定数です。
    static int
    もっとも新しく指定された点から描画される2次パラメトリック曲線を指定する点のペアのセグメント型定数です。
    static int
    パスの内部を決めるために偶奇規則を指定する屈曲規則定数です。
    static int
    パスの内部を決めるために非ゼロ規則を指定する屈曲規則定数です。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    int
    currentSegment​(double[] coords)
    繰返し処理の現在のパス・セグメントの座標および型を返します。
    int
    currentSegment​(float[] coords)
    繰返し処理の現在のパス・セグメントの座標および型を返します。
    int
    パスの内部を決める屈曲規則を返します。
    boolean
    繰返し処理が完了したかどうかを判定します。
    void
    移動の順方向にまだ点がある場合に、その方向に沿ってパスの次のセグメントにイテレータを移動します。
  • フィールド詳細

    • WIND_EVEN_ODD

      @Native static final int WIND_EVEN_ODD
      パスの内部を決めるために偶奇規則を指定する屈曲規則定数です。 偶奇規則は、点から無限遠点に任意の方向に描画された光線がパス・セグメントによって奇数回横切られる場合にその点がパスの内側にあることを指定します。
      関連項目:
      定数フィールド値
    • WIND_NON_ZERO

      @Native static final int WIND_NON_ZERO
      パスの内部を決めるために非ゼロ規則を指定する屈曲規則定数です。 非ゼロ規則は、点から無限遠点に描画された光線が、パス・セグメントによって時計方向とは異なる回数で、反時計方向に横切られる場合にその点がパスの内側にあることを指定します。
      関連項目:
      定数フィールド値
    • SEG_MOVETO

      @Native static final int SEG_MOVETO
      新しいサブパスの開始位置を指定する点のセグメント型定数です。
      関連項目:
      定数フィールド値
    • SEG_LINETO

      @Native static final int SEG_LINETO
      もっとも新しく指定された点から描画されるラインの終点を指定する点のセグメント型定数です。
      関連項目:
      定数フィールド値
    • SEG_QUADTO

      @Native static final int SEG_QUADTO
      もっとも新しく指定された点から描画される2次パラメトリック曲線を指定する点のペアのセグメント型定数です。 曲線は、もっとも新しく指定された(現在の)点(CP)、最初の制御点(P1)、および最後の補間された制御点(P2)を使用して、範囲(t=[0..1])でパラメトリック・コントロール方程式を解くことで補間されます。 この曲線のパラメトリック・コントロール方程式は次のようになります。
                P(t) = B(2,0)*CP + B(2,1)*P1 + B(2,2)*P2
                0 <= t <= 1
      
              B(n,m) = mth coefficient of nth degree Bernstein polynomial
                     = C(n,m) * t^(m) * (1 - t)^(n-m)
              C(n,m) = Combinations of n things, taken m at a time
                     = n! / (m! * (n-m)!)
       
      関連項目:
      定数フィールド値
    • SEG_CUBICTO

      @Native static final int SEG_CUBICTO
      もっとも新しく指定された点から描画される3次パラメトリック曲線を指定する3つの点のセットのセグメント型定数です。 曲線は、もっとも新しく指定された(現在の)点(CP)、最初の制御点(P1)、2番目の制御点(P2)、および最後の補間された制御点(P3)を使用して、範囲(t=[0..1])でパラメトリック・コントロール方程式を解くことで補間されます。 この曲線のパラメトリック・コントロール方程式は次のようになります。
                P(t) = B(3,0)*CP + B(3,1)*P1 + B(3,2)*P2 + B(3,3)*P3
                0 <= t <= 1
      
              B(n,m) = mth coefficient of nth degree Bernstein polynomial
                     = C(n,m) * t^(m) * (1 - t)^(n-m)
              C(n,m) = Combinations of n things, taken m at a time
                     = n! / (m! * (n-m)!)
       
      この形式の曲線は一般に、ベジェ曲線と呼ばれます。
      関連項目:
      定数フィールド値
    • SEG_CLOSE

      @Native static final int SEG_CLOSE
      先行するサブパスがもっとも新しいSEG_MOVETOに対応する点までのライン・セグメントを追加することで閉じられなければならないことを指定するセグメント型定数です。
      関連項目:
      定数フィールド値
  • メソッドの詳細

    • getWindingRule

      int getWindingRule()
      パスの内部を決める屈曲規則を返します。
      戻り値:
      屈曲規則。
      関連項目:
      WIND_EVEN_ODD, WIND_NON_ZERO
    • isDone

      boolean isDone()
      繰返し処理が完了したかどうかを判定します。
      戻り値:
      すべてのセグメントが読み込まれている場合はtrue、そうでない場合はfalse
    • next

      void next()
      移動の順方向にまだ点がある場合に、その方向に沿ってパスの次のセグメントにイテレータを移動します。
    • currentSegment

      int currentSegment(float[] coords)
      繰返し処理の現在のパス・セグメントの座標および型を返します。 戻り値はパス・セグメントのタイプであり、SEG_MOVETO、SEG_LINETO、SEG_QUADTO、SEG_CUBICTO、SEG_CLOSEのいずれかです。 長さ6のfloat配列を渡さなければならず、それは点の座標を格納するために使用されます。 各点は、float x,y座標のペアとして格納されます。 SEG_MOVETO型およびSEG_LINETO型は1つの点を返し、SEG_QUADTOは2つの点を返し、SEG_CUBICTOは3つの点を返し、SEG_CLOSEは点を返しません。
      パラメータ:
      coords - このメソッドから返されるデータを保持する配列
      戻り値:
      現在のパス・セグメントの型。
      関連項目:
      SEG_MOVETO, SEG_LINETO, SEG_QUADTO, SEG_CUBICTO, SEG_CLOSE
    • currentSegment

      int currentSegment(double[] coords)
      繰返し処理の現在のパス・セグメントの座標および型を返します。 戻り値はパス・セグメントのタイプであり、SEG_MOVETO、SEG_LINETO、SEG_QUADTO、SEG_CUBICTO、SEG_CLOSEのいずれかです。 長さ6のdouble配列を返さなければならず、それは点の座標を格納するために使用されます。 各点は、double x,y座標のペアとして格納されます。 SEG_MOVETO型およびSEG_LINETO型は1つの点を返し、SEG_QUADTOは2つの点を返し、SEG_CUBICTOは3つの点を返し、SEG_CLOSEは点を返しません。
      パラメータ:
      coords - このメソッドから返されるデータを保持する配列
      戻り値:
      現在のパス・セグメントの型。
      関連項目:
      SEG_MOVETO, SEG_LINETO, SEG_QUADTO, SEG_CUBICTO, SEG_CLOSE