2017-12-11 25 views
1

一般的なShapeをPointsのリストに分割しようとしているので、特定の割合に応じて特定のスプライトをパスに沿って移動させることができます。java 2dpathを等分して分割する方法

今、私は複数のポイントに形状を分割することができます:、あなたが絵に見ることができるよう

shapeComp = system.gui.getParentWindow(event).getComponentForPath('Root Container.Path') 
shape=shapeComp.getShape() 
pathIterator = FlatteningPathIterator(shape.getPathIterator(AffineTransform()), 1) 
graphics = system.gui.getParentWindow(event).graphics 

segment = jarray.zeros(6,'d') 
path = [] 

while not pathIterator.isDone(): 
    pathIterator.currentSegment(segment) 
    path.append([segment[0], segment[1]]) 
    graphics.fillOval(int(segment[0]), int(segment[1]), 5, 5) 
    pathIterator.next() 

ポイント:これは以下のコードによって生成された

Point distribution

パスに沿って均等に分布していません。すべてのポイント間の距離を同じにする方法はありますか?

答えて

0

javadocにあるように、フラットネスの追加属性があります。したがって、2番目の引数を特定の値に設定して、期待通りの結果を得ることができるはずです。しかし、これがすべての場合に当てはまる場合、私は知らない。

平坦 - 曲線セグメントを近似するために使用されるラインセグメントが、元の曲線上の任意の点から逸脱することが許可されていること最大距離

+0

最大距離があることは事実であるが、私2点間の正確な距離が必要です。だから私は同じ長さのセグメントを得るだろう。どのようにこれが可能になるかについての任意のアイデア? – Thijs

+0

Ohh私は、デフォルトの実装ではこれが不可能であることをご存じでしょうか。このためには、PathIteratorインターフェイスを自分で実装する必要があります。 –

関連する問題