ライフゲーム #10

6x6ではあんまりなのでGliderをもうちょっとだけ広い空で滑空させる。
メッシュサイズを20x16にして第0世代のグラフを今まで通りの方法で作る。

gvpr -f gen_mesh.g -a "20 16" | gvpr -c "N{if(name=='n16_2'||name=='n16_3'||name=='n17_1'||name=='n17_3'||name=='n18_3'){alive=1;}}" > glider_0.gv
gvpr -cf vis_alive.g glider_0.gv | neato -Nlabel="" -Nshape=box -Nwidth=.2 -Nheight=.2 -Ncolor=slategrey -Nfillcolor=blue -Estyle=invis -Elen=.3 -T png -o glider_0.png


うわ、歪んでる。微妙だが明らかに中央が縦方向に圧縮され横方向に膨張している。
実のところ原因は分かっている。ノードのpos属性がピン留めされていないからだ。
vis_alive.gで付加するpos属性の値にはメッシュの座標番号がそのまま設定されている。
しかしこれはピン留めしていない値なので、neatoのレイアウトに従って移動する。
このとき、ノード間の引っ張り合い等のレイアウト方針の都合で均等な率で移動してくれないのだ。
posの値を正確に指定しなくてもneatoが適当にやってくれるという、
ピン留めしないことの利点もあるので悩ましいところではある。

上の画像ではちょっと大きいので小さくしよう。

gvpr -cf vis_alive.g glider_0.gv | neato -Nlabel="" -Nshape=box -Nwidth=.1 -Nheight=.1 -Ncolor=slategrey -Nfillcolor=blue -Estyle=invis -Elen=.1 -T png -o glider_0.png


小さくするとノードの線色が濃すぎて見づらいので薄くしてみる。
neatoの-Ncolor=slategrey-Ncolor=greyに変更するだけである。

なんだか歪み具合が手描きっぽい感じでこれはこれでよいかも。今後はこれでやってみよう。