From e85e453f2fac50c651571b8a84498609df62d21d Mon Sep 17 00:00:00 2001 From: hellerve Date: Mon, 27 Nov 2017 12:37:41 +0100 Subject: [PATCH] initial: set up the environment, added some bootstrapping code, mostly sketched --- README.md | 3 ++ ring/ring.pde | 86 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 89 insertions(+) create mode 100644 README.md create mode 100644 ring/ring.pde diff --git a/README.md b/README.md new file mode 100644 index 0000000..2a714f9 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# ring + +A generatively designed ring for the woman I love. For a momentous occasion. diff --git a/ring/ring.pde b/ring/ring.pde new file mode 100644 index 0000000..996e528 --- /dev/null +++ b/ring/ring.pde @@ -0,0 +1,86 @@ +class Leaf { + PVector pos; + + Leaf() { + pos = PVector.random2D(); + } +} + +class Branch { + PVector pos; + + Branch(PVector pos) { + this.pos = pos; + } + + Branch(Branch b) { + this.pos = b.pos; + } +} + +class Tree { + ArrayList branches = new ArrayList<>(); + ArrayList leaves = new ArrayList<>(); + + Tree() { + for (int i = 0; i < 2000; i++) leaves.add(new Leaf()); + + Branch root = new Branch(new PVector(width/2, height/2)); + branches.add(root); + Branch current = new Branch(root); + + while(!closeEnough(current)) { + Branch trunk = new Branch(current); + branches.add(trunk); + current = trunk; + } + } + + boolean closeEnough(Branch b) { + for (Leaf l : leaves) { + float d = PVector.dist(b.pos, l.pos); + if (d < max_dist) return true; + } + return false; + } + + void show() { + } + + void grow() { + Branch closest = null; + PVector closestDir = null; + float record = -1; + + for (Branch b : branches) { + PVector dir = PVector.sub(l.pos, b.pos); + float d = dir.mag(); + if (d < min_dist) { + l.reached(); + closest = null; + break; + } else if (closest == null && d <= max_dist) { + closest = b; + closestDir = dir; + record = d; + } + } + } +} + +Tree tree; + +float min_dist = 5; +float max_dist = 50; + +void setup() { + size(600, 600); + frameRate(5); + tree = new Tree(); +} + +void draw() { + background(40); + tree.show(); + tree.grow(); +} \ No newline at end of file