• fullscreen
• Hex.pde
• honeycomb2.pde
• ```//my own object - hexagon

class Hexagon {

PVector pos; // position (x,y)
int age; // how long have i been alive?
int kid;//kids
int maxAge = 30;//set max age

Hexagon parent; // my parent

Hexagon(PVector _pos, float _rad, Hexagon _parent){//constructor
pos = _pos;
parent = _parent;
age = 0;//start age at 0
kid = 0;//start number of kids counter at 0.

}

void hexagon(float r) {//Hexagon
beginShape();
float angle = 0;
for (int v=0; v<6; v++) {
vertex(cos(angle)*r, sin(angle)*r);
angle += (TWO_PI/6.0);
}
endShape(CLOSE);
}

void render(){//draw this hexagon
fill(235 -(age*15),0,0,255-(age*25));//change fill colour and satuation by age account
pushMatrix();//save the current system
translate(pos.x,pos.y);//display haxagon at x,y position
popMatrix();//restore the previous system
stroke(255);
strokeWeight(1.0);

if (parent != null){//ignore there are no parents

line(pos.x,pos.y, parent.pos.x, parent.pos.y );//draw lines between hexagons and parent hexagons
}

}

void grow(){//grow haxagons
age++;
//pick a spot to grow a new cell
float angle = TWO_PI/12 + int (random(0,6))*(TWO_PI/4);//angle change

//decide position for growth hexagons
PVector newpos = new PVector(pos.x + cos(angle)*(rad + distance), pos.y + sin(angle)*(rad + distance));

//  check if that spot is free - check for collisions with all other hexagons

for (Hexagon checkhexagon : hexagons){ // run through the hexagons list, and check each one
float checkdist = newpos.dist(checkhexagon.pos);//how far the distance is
if (checkdist <= rad*2) return; // if you get a collision, give up
}

// if you can read this, the space is free
Hexagon newhexagon = new Hexagon(newpos, rad*0.95, this  ); // make a new hexagon

}
}
```
```
ArrayList<Hexagon> hexagons = new ArrayList <Hexagon>();//list of all the living hexagons

int maxhexagons = 200;// max number of hexagons

void setup(){ //set up
size (700,700,P2D);
background(255);
//stroke(255);
smooth();
frameRate(5);//slow frame rate

Hexagon firstHexagon = new Hexagon (new PVector(width/2,height/2),startrad,null);//make start hexagon
}

void draw(){
background (255);//redraw background

for (int h=0; h<hexagons.size(); h++){
Hexagon hexagon = hexagons.get(h);//get each hexagon from the list
hexagon.render(); // draw the hexagon
//if the max number of hexagons been reached & radius greater than the min radius
hexagon.grow();
}

}

void mouseReleased(){//mouse click
background(255);//redraw background
hexagons.clear();//clear hexagon list

}
```

tweaks (0)

This sketch is running as Java applet, exported from Processing.

Report Sketch

Report for inappropriate content

Your have successfully reported the sketch. Thank you very much for helping to keep OpenProcessing clean and tidy :)