week 4 recursion
This commit is contained in:
109
w4_1_recursion/Turtle/sketch.js
Normal file
109
w4_1_recursion/Turtle/sketch.js
Normal file
@@ -0,0 +1,109 @@
|
||||
let t;
|
||||
const len = 1000;
|
||||
|
||||
function setup() {
|
||||
// createCanvas(400, 300);
|
||||
createCanvas(window.innerWidth, window.innerHeight);
|
||||
noLoop(); // will draw only once
|
||||
t = new Turtle(); // getting ready to draw
|
||||
// green
|
||||
stroke(0, 200, 0);
|
||||
strokeWeight(5);
|
||||
}
|
||||
|
||||
function draw() {
|
||||
background(240);
|
||||
|
||||
// getting ready
|
||||
t.setxy(-len / 2, 0);
|
||||
t.right(90);
|
||||
|
||||
// draw Koch line
|
||||
koch(5, len);
|
||||
}
|
||||
|
||||
function koch(order, length) {
|
||||
// PLACEHOLDER
|
||||
t.forward(200);
|
||||
}
|
||||
|
||||
// Don't write underneath this line
|
||||
|
||||
class Turtle {
|
||||
constructor() {
|
||||
this.oldx = int(width / 2);
|
||||
this.oldy = int(height / 2);
|
||||
this.x = this.oldx;
|
||||
this.y = this.oldy;
|
||||
this.tcolor = 0;
|
||||
this.angle = 0;
|
||||
stroke(this.tcolor);
|
||||
}
|
||||
|
||||
forward(step) {
|
||||
this.x = this.oldx - step * cos(radians(this.angle + 90));
|
||||
this.y = this.oldy - step * sin(radians(this.angle + 90));
|
||||
line(this.oldx, this.oldy, this.x, this.y);
|
||||
this.oldx = this.x;
|
||||
this.oldy = this.y;
|
||||
}
|
||||
|
||||
back(step) {
|
||||
this.x = this.oldx + step * cos(radians(this.angle + 90));
|
||||
this.y = this.oldy + step * sin(radians(this.angle + 90));
|
||||
line(this.oldx, this.oldy, this.x, this.y);
|
||||
this.oldx = this.x;
|
||||
this.oldy = this.y;
|
||||
}
|
||||
|
||||
home() {
|
||||
this.oldx = int(width / 2);
|
||||
this.oldy = int(height / 2);
|
||||
line(this.oldx, this.oldy, this.x, this.y);
|
||||
this.oldx = this.x;
|
||||
this.oldy = this.y;
|
||||
this.angle = 0.0;
|
||||
}
|
||||
|
||||
setx(step) {
|
||||
this.x = this.oldx + step;
|
||||
this.oldx = this.x;
|
||||
}
|
||||
|
||||
sety(step) {
|
||||
this.y = this.oldy + step;
|
||||
this.oldy = this.y;
|
||||
}
|
||||
|
||||
setxy(stepx, stepy) {
|
||||
this.x = this.oldx + stepx;
|
||||
this.y = this.oldy + stepy;
|
||||
this.oldx = this.x;
|
||||
this.oldy = this.y;
|
||||
}
|
||||
|
||||
left(dangle) {
|
||||
this.angle -= dangle;
|
||||
}
|
||||
|
||||
right(dangle) {
|
||||
this.angle += dangle;
|
||||
}
|
||||
|
||||
setheading(nangle) {
|
||||
this.angle = nangle;
|
||||
}
|
||||
|
||||
pencolor(ncolor) {
|
||||
this.tcolor = ncolor;
|
||||
stroke(this.tcolor);
|
||||
}
|
||||
|
||||
penup() {
|
||||
noStroke();
|
||||
}
|
||||
|
||||
pendown() {
|
||||
stroke(this.tcolor);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user