From 194dbeac503125c5045ac7f6c446ee15d51b1d3a Mon Sep 17 00:00:00 2001 From: "Deni (s55db)" Date: Wed, 13 Mar 2019 10:00:37 +0100 Subject: [PATCH] Init --- city.cfdg | 179 +++++++++++++++++++++++++++++++++++++++++++++++++ confined.cfdg | 145 +++++++++++++++++++++++++++++++++++++++ snowflake.cfdg | 14 ++++ symchasm.cfdg | 19 ++++++ 4 files changed, 357 insertions(+) create mode 100755 city.cfdg create mode 100644 confined.cfdg create mode 100755 snowflake.cfdg create mode 100755 symchasm.cfdg diff --git a/city.cfdg b/city.cfdg new file mode 100755 index 0000000..1e8176d --- /dev/null +++ b/city.cfdg @@ -0,0 +1,179 @@ +/* + city-reflection.cfdg + + by AK, Jan 2009 + + city.cfdg with reflections + + Variants: IOH, XCZ, ... +*/ + +startshape city + +background { b -0.90 h 270 sat 0.5 } + +/** city has horizontal "skyline" strips vanishing into +distance **/ +rule city { + skyline{y -20} + city { s -0.9 0.85 0.9 } + } +rule city 0.1{} // on average 10 skyline strips + +rule skyline{ // each strip consists of two half-strips +back-to-back + semiskyline{ x 9 } + semiskyline { x 3 flip 90 } + } +rule semiskyline 2 { + building_site{} + semiskyline { x 15 } + } +rule semiskyline 2 { + building_site{} + semiskyline { x 20 } + } +rule semiskyline{} // on average 5 building sites per +semiskyline + + +/*************** building sites: some occupied, some vacant +***********/ +rule building_site 2{ + building{s 10 10 10} // building drawn in the plane +z=10 with reflection drawn in the plane z=-10 + G{s 50 5 b 0 sat 1 h 60} + haze {z 9.9 } + haze {z 10.1 } + } +rule building_site 1{ + G{s 50 5 b 0 sat 1 h 60} + haze {z 9.9 } + } + +/* Each building has a random number of +/- 20% rescaling + steps applied to it. */ +rule building 3{building{ s 1 0.8}} +rule building 3{building {s 1 1.2}} +rule building 2{building{ s 0.8 1}} +rule building 2{building {s 1.2 1}} + +/* There are three types of buildings, of height 1, 2 or 4 +units. + Each has a matching reflection that is proportional + to the building. */ +rule building{ B1{ z 1} R1{z -1} } +rule building{ B2{z 1} R2{z -1} } +rule building{ B3{z 1} R3{z -1} } + +rule B1{BOX{}} +rule B2{B1{y 1}B1{}} +rule B3{B2{y 2}B2{}} + +/* There are three different styles of reflection possible +*/ + +// Style 1: reflections on rough water +rule R1{RF{ s 1.2 -1.4 y -0.5 b 0.5 sat 0.3 h 180}} +rule R2{RF{ s 1.2 -2.8 y -0.5 b 0.7 sat 0.3 h 180}} +rule R3{RF{ s 1.2 -5.6 y -0.5 b 0.9 sat 0.3 h 180}} + +/* vvv----------- unused code --------vvv +// Style 2: reflections on smooth water - not so good as +different windows are lit +rule R1{B1{h 240 sat 0.5 b -0.5 s -1}} +rule R2{B2{h 240 sat 0.5 b -0.5 s -1}} +rule R3{B3{h 240 sat 0.5 b -0.5 s -1}} +// Style 3: tapered reflections on smooth water +rule R1{BOX{h 240 sat 0.5 b -0.5 s -1}} +rule R2{R1{ y -1 s 0.8 1} R1{ s 1.2 1} } +rule R3{R2{ y -2 s 0.64 1 } R2{ s 1.44 1}} +^^^----------- unused code -----------^^^ */ + + +/* This is the element from which buildings are built. A +box with windows. */ +rule BOX{ + SQUARE{ y 0.5 } + wa{ y 0.5 s 0.8 1 z 0.1} + } + +/* get windows on BOX by progressive subdivision */ +rule wa{ wb { s 1 0.5 y -0.25 } wb{ s 1 0.5 y 0.25 } } +rule wb{ wc{ s 1 0.5 y -0.25 } wc{ s 1 0.5 y 0.25 } } +rule wc{ wd{ s 0.5 1 x -0.25 } wd { s 0.5 1 x 0.25 }} +rule wd{ we{ s 0.5 1 x -0.25 } we { s 0.5 1 x 0.25 }} + +/* but only some windows are lit */ +rule we 2 {} +rule we{ win{}} + +/* some alternative window subdivision pathways that give +all or no lit windows on a floor */ +rule wc 0.1{ wdx{ s 0.5 1 x -0.25 } wdx { s 0.5 1 x 0.25 }} +rule wc 0.1{} +rule wdx{ win{ s 0.5 1 x -0.25 } win { s 0.5 1 x 0.25 }} + + +/* possibly tweak window colour and brightness */ +rule win 3{ win {b 0.2 }} +rule win 3{ win {b -0.2 }} +rule win { win {h 20 }} +/* a window */ +rule win{ + SQUARE { size .8 0.7 b .5 sat +0.2 } + SQUARE { s 0.1 0.8 b -1} // vertical divider +// SQUARE { s 0.8 0.1 b -1} // horizontal divider + } + + +/* Reflection on rough water. + The tear-drop shape comes from a shape + being scaled non-proportionally + while progressively shifted. */ +rule RF{ + SPARKLE{ s 2 0.1 x 1} + SPARKLE{ s 2 0.1 b 0.2} + RF[ y 1 s -0.9 0.96 y -1 b -0.02] + } +rule SPARKLE{ // shiny filler + CIRCLE{ s 1.5 0.5 a -0.98} + 6 * {r 60} SPARK { s 0.15 x 0.5 a -0.8} + } +rule SPARK{TRIANGLE{}} +rule SPARK 5{SPARK{r 222}} +rule SPARK 2{SPARK{x 1}} +rule SPARKLE 5 {SPARKLE{r 223}} +rule SPARKLE 2{ + SPARKLE{s 0.7 x 0.5} + SPARKLE{s 0.7 x -0.5} + } +rule SPARKLE 0.5{} + + +/* Ground - a generic blobby shape */ +rule G{ CIRCLE{} } +rule G{ CIRCLE{} + G{ y -0.5 s 0.7 0.7 r 60} + G{ y -0.5 s 0.7 0.7 r -60} } +rule G{ G {r 10}} +rule G{G { flip 90}} +rule G 0.2{} + + + +/* ------------ Ground level haze ------------*/ +rule haze { haze { x .1 }} +rule haze { haze { x -.1 }} +rule haze { + hazecircle { } + haze { s 1 0.3 x .5 b .3} + haze { s 1 0.3 x -.5 b .3} + } +rule haze .5{} +rule hazecircle { hazecircle { r 10 }} +rule hazecircle { hazecircle { flip 90 }} +rule hazecircle { + CIRCLE { s 30 20 z 0.1 h 40 b 0.5 sat .2 a -0.98 } + } + diff --git a/confined.cfdg b/confined.cfdg new file mode 100644 index 0000000..7a5ad3e --- /dev/null +++ b/confined.cfdg @@ -0,0 +1,145 @@ +startshape Scene + +CF::Impure = 1 +//CF::Background = [b -0.8 sat 1 h 200] +CF::Background = [b -0.8] +CF::Size = [s 3] + +//random variable that controls how straight the path is +bend = -5..-1 + +shape Scene { + // Storm + Path(29.5,0,160..200,0) [s (1/60)] + + // Square + //loop 10 [s 0.998 a -0.2] Frame [s 0.5 z 1000 b 1 sat 0.4 h 180] + loop 10 [s 0.998 a -0.2] Frame [s 0.5 z 1000 b 0.96 sat 0.81 h 38] + + + // Outer square + //loop 10 [s 1.003 a -0.2] Frame [s 0.5 z 1000 b 1 sat 0.4 h 180] + loop 10 [s 1.003 a -0.2] Frame [s 0.5 z 1000 b 0.96 sat 0.81 h 38] + + // Backgroud glow + //Glow [] +} + +path Frame +{ + MOVETO(1,1) + LINETO(-1,1) + LINETO(-1,-1) + LINETO(1,-1) + CLOSEPOLY() + STROKE(0.01) [] +} + +shape Path (number px, number py, number pr, number idx) +rule 4000 { + + // number of steps to take + if (idx < 2000) { + if (max(abs(px),abs(py)) < 30 ) { + + //change the values in rand to + //alter the behaviour of the beam + + Path( px + cos(pr), py + sin(pr), pr + rand(bend,2), idx + 1 ) [] + + // glowing beam + transform [x px y py r pr ] { + loop 10 [s 1 1.5 a -0.4] SQUARE [ + // notranje strele + b 0.96 sat 0.81 h 38 s 0.85 0.08] + //b 1 sat 0.4 h 180 s 0.85 0.08] + } + + } + else { + Flash[x px y py z 1 s 1.5] + + //detect which edge we have crossed and reflect + if (px > 30) { + Path(px/1.004 - cos(pr), py+sin(pr), 180-pr, idx +1) [] + Lightning [ x px y py r -5..5] + } + if (px < -30) { + Path(px/1.004 - cos(pr), py+sin(pr), 180-pr, idx +1) [] + Lightning [[ x px y py r -5..5 r 180]] + } + if (py > 30) { + Path(px + cos(pr), py/1.004 - sin(pr), pr*-1, idx +1) [] + Lightning [[ x px y py r -5..5 r 90]] + } + if (py < -30) { + Path(px + cos(pr), py/1.004 - sin(pr), pr*-1, idx +1) [] + Lightning [[ x px y py r -5..5 r -90]] + } + } + } + // done iterating, draw the particle! + else { Flash[[ x px y py z 1 r pr s 1.5 0.4 ]] } +} + +// Pike na kvadratu +shape Flash{ + loop 10 [s 1.4 a -0.4] + //CIRCLE[b 1 sat 0.4 h 180 s 0.6..1] + CIRCLE[b 0.96 sat 0.81 h 38 s 0.6..1] +} + +shape Lightning +rule 10{ + LightningUnit [] + Lightning [x 1] + Glow2 [s 2 a -0.5] +} +rule 1.5 { + Lightning[r 30..45] + Glow2 [s 4 a -0.5] +} +rule 1.5 { + Lightning[r -30..-45] + Glow2 [s 4 a -0.5] +} +rule 1 { + // s 0.6 normally + Lightning[r 20..45 s 0.6 0.8 a -0.5] + Lightning[r -20..-45 s 0.4 0.8 a -0.5] + Glow2 [s 4 a -0.5] +} + + +// Strele zunaj +shape LightningUnit { + loop 20 [s 1 1.1 a -0.2] + //SQUARE [b 1 sat 0.4 h 180 s 0.89 0.1 x 0.5] + SQUARE [b 0.96 sat 0.81 h 38 s 0.89 0.1 x 0.5] +} + + +shape Glow { + loop 30 [s 0.97 a -0.04 ] + //CIRCLE [s 2.3..2.5 x -0.1..0.1 y -0.1..0.1 b 1 sat 0.6 h 180 a -0.97] + CIRCLE [s 2.3..2.5 x -0.1..0.1 y -0.1..0.1 b 0.96 sat 0.81 h 38 a -0.97] +} + +shape Glow2 { + loop 5 [s 0.7 a -0.4 ] + //CIRCLE [s 2.3..2.5 x -0.1..0.1 y -0.1..0.1 b 1 sat 0.4 h 180 a -0.99] + CIRCLE [s 2.3..2.5 x -0.1..0.1 y -0.1..0.1 b 0.96 sat 0.81 h 38 a -0.99] +} + + +// BNR AKL ABD VFF VFJ VFL VFP + + + + + + + + + + diff --git a/snowflake.cfdg b/snowflake.cfdg new file mode 100755 index 0000000..8aef531 --- /dev/null +++ b/snowflake.cfdg @@ -0,0 +1,14 @@ +background{b -.95 sat 1 h 270} +startshape init +rule init{turn{sat -1 b 1 a -.995 |sat -1}} +rule turn{ + CIRCLE{x 1.77 y .13 s .5} SQUARE{x .5 y -.05 s 1 .1 sat +-1} + turn{ |sat .05 sat 1| a .1 z 1 r -2.072 s 0.299} + turn{ |sat .05 sat 1| a .1 z 1 x 1 r 45.928 s +(1/sqrt(.85)*0.299)} + turn{ |sat .05 sat -1 h 144 z 1 x +(1+1/sqrt(.85)*cos(48)) y (1/sqrt(.85)*sin(48)) r -48 s +(sqrt(.85))} +} + diff --git a/symchasm.cfdg b/symchasm.cfdg new file mode 100755 index 0000000..74b3300 --- /dev/null +++ b/symchasm.cfdg @@ -0,0 +1,19 @@ +startshape r0 +background {b -1} +rule r0{16*{a -0.2}r1{b 1}} + +rule r1 {r2[] r2[s 0.5 x 2.5] r1[x 2.5]} +rule r1 {r2[] r2[s 0.5 y 2.5] r1[y 2.5]} +rule r1 {r1[skew 0 5]} +rule r1 {r1[skew 0 -5]} +rule r1 0.3 {r1 {f 0} r1 {f 45}} +rule r1 {r1[s 0.8]} + +rule r2 {r4{a -100 b -100 } r3{}} +rule r4 {CIRCLE[a 0.008 b 0.8 s 10]} + +rule r3 { CIRCLE{}} +rule r3 { TRIANGLE{}} +rule r3 { SQUARE{}} +rule r3 { r3{b 1} r3{r 45 b -1 s 0.8}} +rule r3 4 {r3{s 0.9}}