1 | // draw a colourful mikachuball |
1 | // draw a colourful mikachuball |
2 | |
2 | |
3 | ruleset ( |
3 | ruleset ( |
4 | S => |
4 | S => |
5 | { |
5 | { |
6 | attr(color,'1 0 0) F+ |
6 | attr(color,'1 0 1) F+ |
7 | attr(color,'0 1 1) F+ |
7 | attr(color,'0 1 1) F+ |
8 | attr(color,'0 1 0) F+ |
8 | attr(color,'1 1 0) F+ |
9 | attr(color,'0 0 1) F+ |
9 | attr(color,'1 1 1) F+ |
10 | } |
10 | } |
11 | [ attr(color,'1 1 1) F+ F+ F+ F ]; |
11 | [ attr(color,'1 1 1) F+ F+ F+ F ]; |
12 | ) |
12 | ) |
13 | |
13 | |
14 | mikachuball(n) => attr (delta, 90) S,n-1; |
14 | mikachuball(n) => attr (delta, 90) S,n-1; |
15 | |
15 | |
16 | define size 0.45; |
16 | define size 0.41; |
17 | |
17 | |
18 | S => [ |
18 | S => [ |
19 | [S] |
19 | [S] |
20 | attr (distance, distance * (1 - size) * 0.5) |
20 | attr (distance, distance * (1 - size) * 0.5) |
21 | f+f- |
21 | f+f- |
22 | attr (distance, distance / (1 - size) / 0.5 * size) |
22 | attr (distance, distance / (1 - size) / 0.5 * size) |
|
|
23 | +(15) |
|
|
24 | [&f&(-90)S] // roof |
|
|
25 | [&S]f+ |
|
|
26 | [&S]f+ |
|
|
27 | [&S]f+ |
23 | [&S] |
28 | [&S] |
24 | +(70) |
|
|
25 | [&f&(-90)S] |
|
|
26 | f+[&S] |
|
|
27 | f+[&S] |
|
|
28 | f+[&S] |
|
|
29 | ]; |
29 | ]; |
30 | |
30 | |