summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuval Adam <yuv.adm@gmail.com>2012-06-08 12:14:57 +0300
committerYuval Adam <yuv.adm@gmail.com>2012-06-08 12:14:57 +0300
commitb5f792b3f1562c3b824c441b60577c9048cccd9b (patch)
treebc48f0f28566ff1454c7973eaaadb176154949ca
parentcefdcb00b30a828d2403e3b0cd62d4ea083ea5a2 (diff)
[H,L,U]' is now a single forward step vector
-rw-r--r--lsys.js41
1 files changed, 21 insertions, 20 deletions
diff --git a/lsys.js b/lsys.js
index 1c84179..502a351 100644
--- a/lsys.js
+++ b/lsys.js
@@ -85,11 +85,12 @@ function LSystem(axiom, rules, draw_constants) {
var x = 0, y = 0, z = 0; // cartesian coordinates
var nx = 0, ny = 1, nz = 0; // next step delta
- var H = [1,0,0];
- var L = [0,1,0];
- var U = [0,0,1];
+ var H = 0;
+ var L = 1;
+ var U = 0;
for (var i=0; i<this.tree.length; i++) {
+ console.log(H, L, U);
var c = this.tree.charAt(i);
if (this.draw_constants.indexOf(c) != -1) {
@@ -98,32 +99,32 @@ function LSystem(axiom, rules, draw_constants) {
var _HLU;
switch(c) {
case '+':
- _HLU = this.matrix_mult([H,L,U], this.R_U(alpha));
- H = _HLU[0], L = _HLU[1], U = _HLU[2];
+ _HLU = this.matrix_mult(this.R_U(alpha), [[H],[L],[U]]);
+ H = _HLU[0][0], L = _HLU[1][0], U = _HLU[2][0];
break;
case '-':
- _HLU = this.matrix_mult([H,L,U], this.R_U(-alpha));
- H = _HLU[0], L = _HLU[1], U = _HLU[2];
+ _HLU = this.matrix_mult(this.R_U(-alpha), [[H],[L],[U]]);
+ H = _HLU[0][0], L = _HLU[1][0], U = _HLU[2][0];
break;
case '&':
- _HLU = this.matrix_mult([H,L,U], this.R_L(alpha));
- H = _HLU[0], L = _HLU[1], U = _HLU[2];
+ _HLU = this.matrix_mult(this.R_L(alpha), [[H],[L],[U]]);
+ H = _HLU[0][0], L = _HLU[1][0], U = _HLU[2][0];
break;
case '^':
- _HLU = this.matrix_mult([H,L,U], this.R_L(-alpha));
- H = _HLU[0], L = _HLU[1], U = _HLU[2];
+ _HLU = this.matrix_mult(this.R_L(-alpha), [[H],[L],[U]]);
+ H = _HLU[0][0], L = _HLU[1][0], U = _HLU[2][0];
break;
case '<':
- _HLU = this.matrix_mult([H,L,U], this.R_H(alpha));
- H = _HLU[0], L = _HLU[1], U = _HLU[2];
+ _HLU = this.matrix_mult(this.R_H(alpha), [[H],[L],[U]]);
+ H = _HLU[0][0], L = _HLU[1][0], U = _HLU[2][0];
break;
case '>':
- _HLU = this.matrix_mult([H,L,U], this.R_H(-alpha));
- H = _HLU[0], L = _HLU[1], U = _HLU[2];
+ _HLU = this.matrix_mult(this.R_H(-alpha), [[H],[L],[U]]);
+ H = _HLU[0][0], L = _HLU[1][0], U = _HLU[2][0];
break;
case '|':
- _HLU = this.matrix_mult([H,L,U], this.R_U(Math.PI));
- H = _HLU[0], L = _HLU[1], U = _HLU[2];
+ _HLU = this.matrix_mult(this.R_U(Math.PI), [[H],[L],[U]]);
+ H = _HLU[0][0], L = _HLU[1][0], U = _HLU[2][0];
break;
case '[':
stack.push(x, y, z, H, L, U, geometry);
@@ -145,9 +146,9 @@ function LSystem(axiom, rules, draw_constants) {
nx = 0, ny = 1, nz = 0;
nc = this.tree.charAt(i+1);
- x += nx;
- y += ny;
- z += nz;
+ x += H;
+ y += L;
+ z += U;
geometry.push([x,y,z]);
break;