neon lights
@author
ArrayList<Node> nodes;
ArrayList<Edge> edges;
color c;
void setup(){
size(640, 640);
mousePressed();
}
void mousePressed(){
nodes = new ArrayList<Node>();
float r = 200;
float angStep = TWO_PI / 20;
for(int i = 0; i < 20; i++){
float angle = i * angStep;
nodes.add(new Node(r * cos(angle), r * sin(angle)));
}
edges = new ArrayList<Edge>();
int eNum = int(random(10, 70));
while(edges.size() < eNum){
Node node1 = nodes.get(int(random(nodes.size())));
Node node2 = nodes.get(int(random(nodes.size())));
if(node1 == node2){
continue;
}
for(Edge e: edges){
if((e.node1 == node1 && e.node2 == node2) || (e.node2 == node1 && e.node1 == node2)){
continue;
}
}
edges.add(new Edge(node1, node2));
}
c = color(random(255), random(255), random(255));
}
void draw(){
background(0);
translate(width / 2, height / 2);
noStroke();
fill(c);
for(Node node: nodes){
ellipse(node.loc.x, node.loc.y, 15, 15);
}
stroke(c);
strokeWeight(8);
for(Edge edge: edges){
line(edge.node1.loc.x, edge.node1.loc.y, edge.node2.loc.x, edge.node2.loc.y);
}
noStroke();
fill(255);
for(Node node: nodes){
ellipse(node.loc.x, node.loc.y, 10, 10);
}
stroke(255);
strokeWeight(4);
for(Edge edge: edges){
line(edge.node1.loc.x, edge.node1.loc.y, edge.node2.loc.x, edge.node2.loc.y);
}
}
class Node{
PVector loc;
Node(float x, float y){
loc = new PVector(x, y);
}
}
class Edge{
Node node1, node2;
Edge(Node _node1, Node _node2){
node1 = _node1;
node2 = _node2;
}
}