public interface PathIterator
PathIterator
インタフェースの提供するメカニズムを使用すると、Shape
インタフェースを実装するオブジェクトは、一度に 1 セグメント単位で境界のパスを取り出すことを呼び出し側に許可することで、その境界の幾何学的図形を返すことができます。このインタフェースでは、ラインおよび 2 次または 3 次ベジェスプラインである 1 次から 3 次までのベジェ曲線を使用することによって、これらのオブジェクトがその境界のパスを一度に 1 セグメントずつ取り出せるようにします。
複数のサブパスは、「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()
移動の順方向にまだ点がある場合に、その方向に沿ってパスの次のセグメントにイテレータを移動します。
|
static final int WIND_EVEN_ODD
static final int WIND_NON_ZERO
static final int SEG_MOVETO
static final int SEG_LINETO
static final int SEG_QUADTO
(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)!)
static final int SEG_CUBICTO
(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)!)この形式の曲線は一般に、ベジェ曲線と呼ばれます。
static final int SEG_CLOSE
int getWindingRule()
WIND_EVEN_ODD
, WIND_NON_ZERO
boolean isDone()
true
、そうでない場合は false
。void next()
int currentSegment(float[] coords)
coords
- このメソッドから返されるデータを保持する配列SEG_MOVETO
, SEG_LINETO
, SEG_QUADTO
, SEG_CUBICTO
, SEG_CLOSE
int currentSegment(double[] coords)
coords
- このメソッドから返されるデータを保持する配列SEG_MOVETO
, SEG_LINETO
, SEG_QUADTO
, SEG_CUBICTO
, SEG_CLOSE
バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.