シェイプを指定した個数だけ描く シェイプを指定した個数だけ描く

シェイプをたくさん描く方法は、大雑把に2通りあります。 ひとつは、描く個数を指定する方法、もうひとつは再帰呼び出しによって描き続ける方法です。 まずは、描く個数を指定する方法を見てみましょう。

startshape Dango

rule Dango{
  5 * { x 1 } CIRCLE {}
}
dango

円を描くCIRCLEの前に、“5 * { x 1 }”という命令を書きました。 これは“x軸方向に1個分移動して描画”を5回繰り返すという意味です。 描画されるシェイプの情報がこれに続き、円が5個並んで描かれました。

*の直後の中カッコに書かれた内容の変更をくわえながら、その後ろに記述された内容のシェイプを*の前の個数分繰り返すときにこう記述します。

繰り返しに伴う変更は、位置だけでなく回転や変形・色などで可能です。

startshape Dango

rule Dango{
  5 * { x 1 s 1 0.8 r -10 } CIRCLE {}
}
dango 2

この例では、繰り返しのたびにx軸方向に1個分移動、y軸を0.8倍に縮小、時計回りに10度回転しています。

繰り返しのネスト(入れ子)も可能です。

startshape Dango

rule Dango{
  36 * { y 1 r 10 } {
    5 * { x 1 } CIRCLE {}
  }
}
dango

5個並びの円を、y軸方向に1個分移動&10度回転させながら36回描画しました。 10度×36でちょうど1周しますから、このような模様になります。

できるようになった(はずの)こと
  1. 個数を指定して、属性を変更しながらシェイプを描画できる