diff --git a/1. Vectors/6. Random Walker/index.html b/1. Vectors/6. Random Walker/index.html new file mode 100644 index 0000000..c390616 --- /dev/null +++ b/1. Vectors/6. Random Walker/index.html @@ -0,0 +1,15 @@ + + + + + + + +
+
+ + diff --git a/1. Vectors/6. Random Walker/sketch.js b/1. Vectors/6. Random Walker/sketch.js new file mode 100644 index 0000000..e22f581 --- /dev/null +++ b/1. Vectors/6. Random Walker/sketch.js @@ -0,0 +1,62 @@ +class Walker { + constructor(x = 0, y = 0) { + this.t = createVector(0, 10000) + this.position = createVector(x, y) + this.velocity = createVector(0, 0) + this.accelaration = createVector(0, 0) + this.topSpeed = 50 + } + + step() { + this.accelaration = createVector( + map(noise(this.t.x), 0, 1, -1, 1), + map(noise(this.t.y), 0, 1, -1, 1) + ).normalize() + this.accelaration.mult(50) + + const dt = deltaTime/1000 + this.velocity.add(p5.Vector.mult(this.accelaration, dt)) + this.velocity.limit(this.topSpeed) + this.position.add(p5.Vector.mult(this.velocity, dt)) + this.t.add(createVector(dt, dt)) + + + if (this.position.x < 0) { + this.position.x += width + } + if (this.position.x > width) { + this.position.x -= width + } + + if (this.position.y < 0) { + this.position.y += height + } + if (this.position.y > height) { + this.position.y -= height + } + } + + draw() { + stroke(0) + line( + this.position.x, this.position.y, + this.position.x + this.accelaration.x, + this.position.y + this.accelaration.y + ) + circle(this.position.x, this.position.y, 20) + } +} + +let walker + +function setup() { + createCanvas(640, 240) + background(255) + walker = new Walker(width/2, height/2) +} + +function draw() { + background(255) + walker.step() + walker.draw() +}