Pascalの三角形 #6

Pascalの三角形のグラフをSierpinskiの三角形*1っぽいものに変換してみる。

sierpinski.g
BEG_G {
  size = "5";
  ratio = "auto";
}

N {
  if (label % 2 == 0) {
    style = "invis";
  } else {
    style = "filled";
    fillcolor = "black";
  }
}

E {
  style = "invis";
}

これはpascal2.gやpascal3.gの出力をフィルタリングする。
ノードのlabel属性が偶数ならstyle属性を不可視に、奇数なら黒く塗り潰す。
また、エッジは不可視にする。

$ gvpr -fpascal3.g -a60 | gvpr -c -fsierpinski.g | dot -Tpng -osierpinski.png

sierpinski.gは入力DOTファイルの属性を変えるフィルタの役割なので、
フィルタ後の入力をそのまま出力するために-cオプションを与える必要がある。

下の方へ行くと段々とレイアウトが怪しく歪んでいる。
単純に上下方向に潰れているわけではないのでアスペクト比を変えただけでは修正できない。

*1:Sierpinskiのガスケットの方が通りがいい?