シェイプを反転する シェイプを反転する

Context Freeではシェイプを反転して描画することができます。

startshape start 

include i_pix.cfdg

rule start {
    text {}
    text { y -1.5 flip 0 }
}

rule text {
    F_5by5 { x 0 }
    L_5by5 { x 1.2 }
    I_5by5 { x 2.4 }
    P_5by5 { x 3.6 }
}
flip 1

FLIPという文字と、反転した文字が描画されました。 flip 0は0度のラインで(つまり、水平に引かれたラインで上下に)シェイプを反転します。 シェイプを左右に反転したいときは、ラインの角度を90度flip 90にします。

startshape start 

include i_pix.cfdg

rule start {
    text {}
    text { x -1.5 flip 90 }
}

rule text {
    F_5by5 { x 0 }
    L_5by5 { x 1.2 }
    I_5by5 { x 2.4 }
    P_5by5 { x 3.6 }
}
flip 2

このように、flipの後に入力された数値の角度で、シェイプの反転が行われます。 他の属性値と同じように、繰り返しや再帰呼び出しに使用することも可能です。

startshape zigzag 

include i_pix.cfdg

rule zigzag {
    5 * { flip 45 y -4.5 } text {}
}

rule text {
    F_5by5 { x 0 }
    L_5by5 { x 1.2 }
    I_5by5 { x 2.4 }
    P_5by5 { x 3.6 }
}
flip 3

この例では、45度のラインに沿って反転を繰り返すので、シェイプがジグザグに描画されます。

startshape Glass

rule Glass {
 TRIANGLE { s 0.5 1 }
 Glass { r 10 y 0.5 s 0.93 }
}

rule Glass 0.1 {
 Glass {}
 Glass { flip 90 }
}
flip 4

再帰呼び出しで描画するときの枝分かれにflipを使うと、シンプルなコードで見た目は複雑なイメージが描けます。

できるようになった(はずの)こと
  1. シェイプを反転させて描画できる