From 5dfb8253155abac53d1f767a20d4be05c8b4281a Mon Sep 17 00:00:00 2001 From: Rokas Puzonas Date: Mon, 5 Feb 2024 23:48:54 +0200 Subject: [PATCH] implement bee-like movement into ecosystem project --- Ecosystem Project/index.html | 15 +++++++++ Ecosystem Project/sketch.js | 60 ++++++++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 Ecosystem Project/index.html create mode 100644 Ecosystem Project/sketch.js diff --git a/Ecosystem Project/index.html b/Ecosystem Project/index.html new file mode 100644 index 0000000..c390616 --- /dev/null +++ b/Ecosystem Project/index.html @@ -0,0 +1,15 @@ + + + + + + + +
+
+ + diff --git a/Ecosystem Project/sketch.js b/Ecosystem Project/sketch.js new file mode 100644 index 0000000..954c95b --- /dev/null +++ b/Ecosystem Project/sketch.js @@ -0,0 +1,60 @@ +// An algorithm for picking a random number based on monte carlo method +function acceptreject(formula) { + // We do this “forever” until we find a qualifying random value. + while (true) { + // Pick a random value. + let r1 = random(1); + // Assign a probability. + let probability = formula(r1); + // Pick a second random value. + let r2 = random(1); + + //{!3} Does it qualify? If so, we’re done! + if (r2 < probability) { + return r1; + } + } +} + +class Walker { + constructor(x = 0, y = 0) { + this.t = 0 + this.x = x + this.y = y + } + + step() { + let dx, dy + if (noise(this.t+20000) < 0.5) { + let step = -1.5 + dx = random(-step, step) + dy = random(-step, step) + } else { + let step = 0.5; + dx = map(noise(this.t), 0, 1, -1, 1)*step; + dy = map(noise(this.t+10000), 0, 1, -1, 1)*step; + } + + this.x = (this.x + dx) % width + this.y = (this.y + dy) % height + this.t += 0.01 + } + + draw() { + stroke(0) + point(this.x, this.y) + } +} + +let walker + +function setup() { + createCanvas(640, 240) + background(255) + walker = new Walker(320, 120) +} + +function draw() { + walker.step(); + walker.draw(); +}