1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
/* Based on http://www.robotacid.com/PBeta/LSystem/index.html */
var lsystem = new LSystem();
var width = 1200;
var height = 600;
var HALF_PI = 3.141592 / 2;
function setup(axiom, ruleset, iterations) {
lsystem = new LSystem(axiom, ruleset);
lsystem.iterate(iterations);
}
function saveImage() {
console.log("save");
window.open(c.toDataURL());
}
function draw(x, y, axiom, ruleset, iterations, angle, zoom, drawtype) {
a.fillStyle = "#fff";
a.fillRect(0, 0, width, height);
var angle_radians = parseFloat(angle) * (Math.PI / 360);
lsystem.draw(x, y, zoom, angle_radians, drawtype);
a.fillStyle = "#666";
a.fillRect(0, 0, width, 20);
a.fillStyle = "#fff";
a.font = "bold 10px 'Lucida Grande', Helvetica";
var str = "axiom: " + axiom + " ";
str += "ruleset: " + ruleset + " ";
str += "angle: " + angle + "º ";
str += "iterations: " + iterations + " ";
str += "zoom: " + zoom + " ";
str += "x: " + x + " ";
str += "y: " + y + " ";
str += "drawtype: " + drawtype;
a.fillText(str, 5, 13);
}
function generate() {
var axiom = document.getElementById("axiom").value;
var ruleset = document.getElementById("ruleset").value;
var angle = document.getElementById("angle").value;
var iterations = document.getElementById("iterations").value;
var zoom = document.getElementById("zoom").value;
var x = document.getElementById("x").value;
var y = document.getElementById("y").value;
var drawtype = document.getElementById("drawtype").value;
setup(axiom, ruleset, iterations);
draw(x, y, axiom, ruleset, iterations, angle, zoom, drawtype);
}
generate();
|