JavaTM 2 Platform
Std. Ed. v1.3

java.awt.geom
インタフェース PathIterator

既知の実装クラスの一覧:
FlatteningPathIterator

public interface PathIterator

PathIterator インタフェースの提供する機構を使用すると、Shape インタフェースを実装するオブジェクトは、一度に 1 セグメント単位で境界のパスを取り出すことを呼び出し側に許可することで、その境界のジオメトリを返すことができます。このインタフェースは、1 次から 3 次までのベジェ曲線 (ラインおよび 2 次または 3 次ベジェスプライン) を使用することでそれらのオブジェクトがその境界のパスを取り出せるようにします。

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

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

関連項目:
Shape, BasicStroke

フィールドの概要
static int SEG_CLOSE
          先行するサブパスがもっとも新しい SEG_MOVETO に対応する点までのラインセグメントを追加することで閉じられなければならないことを指定するセグメント型定数です。
static int SEG_CUBICTO
          もっとも新しく指定された点から描画される 3 次パラメトリック曲線を指定する 3 つの点のセットのセグメント型定数です。
static int SEG_LINETO
          もっとも新しく指定された点から描画されるラインの終点を指定する点のセグメント型定数です。
static int SEG_MOVETO
          新しいサブパスの開始位置を指定する点のセグメント型定数です。
static int SEG_QUADTO
          もっとも新しく指定された点から描画される 2 次パラメトリック曲線を指定する点のペアのセグメント型定数です。
static int WIND_EVEN_ODD
          パスの内部を決めるために偶奇規則を指定する屈曲規則定数です。
static int WIND_NON_ZERO
          パスの内部を決めるために非ゼロ規則を指定する屈曲規則定数です。
 
メソッドの概要
 int currentSegment(double[] coords)
          繰り返し処理の現在のパスセグメントの座標および型を返します。
 int currentSegment(float[] coords)
          繰り返し処理の現在のパスセグメントの座標およびタイプを返します。
 int getWindingRule()
          パスの内部を決める屈曲規則を返します。
 boolean isDone()
          繰り返し処理が完了したかどうかを判定します。
 void next()
          移動の順方向にまだ点がある場合に、その方向に沿ってパスの次のセグメントに反復子を移動します。
 

フィールドの詳細

WIND_EVEN_ODD

public static final int WIND_EVEN_ODD
パスの内部を決めるために偶奇規則を指定する屈曲規則定数です。偶奇規則は、点から無限遠点に任意の方向に描画された光線がパスセグメントによって奇数回横切られる場合にその点がパスの内側にあることを指定します。

WIND_NON_ZERO

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

SEG_MOVETO

public static final int SEG_MOVETO
新しいサブパスの開始位置を指定する点のセグメント型定数です。

SEG_LINETO

public static final int SEG_LINETO
もっとも新しく指定された点から描画されるラインの終点を指定する点のセグメント型定数です。

SEG_QUADTO

public 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

public 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

public static final int SEG_CLOSE
先行するサブパスがもっとも新しい SEG_MOVETO に対応する点までのラインセグメントを追加することで閉じられなければならないことを指定するセグメント型定数です。
メソッドの詳細

getWindingRule

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

isDone

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

next

public void next()
移動の順方向にまだ点がある場合に、その方向に沿ってパスの次のセグメントに反復子を移動します。

currentSegment

public 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

public 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

JavaTM 2 Platform
Std. Ed. v1.3

バグや機能要求の報告
さらに詳しい API リファレンスおよび開発者ドキュメントについては、 Java 2 SDK SE Developer Documentation を参照してください。このドキュメントには、概念、用語の定義、回避策、 実用的なコード例など、開発者を対象にした詳細な解説が掲載されています。

Java、Java 2D、JDBC は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2000 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.