FlatteningPathIteratorでShape上の点を取得する
Total: 4700
, Today: 3
, Yesterday: 2
Posted by aterai at
Last-modified:
概要
FlatteningPathIterator
を使って平坦化されたShape
上の座標点を取得、描画します。
Screenshot
Advertisement
サンプルコード
PathIterator i = new FlatteningPathIterator(shape.getPathIterator(null), 1d);
float[] coords = new float[6];
while (!i.isDone()) {
i.currentSegment(coords);
g2.fillRect((int) (coords[0] - .5), (int) (coords[1] - .5), 2, 2);
i.next();
}
View in GitHub: Java, Kotlin解説
Ellipse2D
new Ellipse2D.Double
で作成したShape
を描画
Polygon x 2
- 上記の楕円を
360/60
度ごとに曲線上の座標点を取得し、Polygon
に変換して直線で描画
- 上記の楕円を
private static Polygon convertEllipse2Polygon(Ellipse2D e) {
Rectangle b = e.getBounds();
int r1 = b.width / 2, r2 = b.height / 2;
int x0 = b.x + r1, y0 = b.y + r2;
int v = 60;
double a = 0.0, d = 2 * Math.PI / v;
Polygon polygon = new Polygon();
for (int i = 0; i < v; i++) {
polygon.addPoint(
(int) (r1 * Math.cos(a) + x0),
(int) (r2 * Math.sin(a) + y0));
a += d;
}
return polygon;
}
FlatteningPathIterator
- 上記の楕円から取得した
PathIterator
をFlatteningPathIterator
で平坦化して曲線上の等間隔な座標点を取得してPolygon
に変換して直線で描画 - FlatteningPathIterator and moving object along Shape path.
- 上記の楕円から取得した
参考リンク
- FlatteningPathIterator (Java Platform SE 8)
- FlatteningPathIterator and moving object along Shape path.
Shape
のパスに添ってアニメーションを行うサンプルがある