int xSize = 600; int ySize = 400; int xMid = xSize/2; int yMid = ySize/2; int total = 0; int maxTent = 100; Tentacle[] tentacle; Meander meander; boolean clear = true; boolean click = false; int counter = 0; void setup() { size(xSize,ySize); smooth(); colorMode(HSB,255); background(166,200,51); ellipseMode(CENTER_DIAMETER); tentacle = new Tentacle[maxTent]; meander = new Meander(xMid, yMid, 1); for (int i=0; i= maxTent){ tentacle[maxTent-1] = new Tentacle(maxTent-1); for (int i=1; i xSize + 150 || y[0] < -150 || y[0] > ySize + 150){ outOfBounds = true; } } void render(){ noStroke(); fill(255,15); ellipse(x[0],y[0],50,50); } } class Tentacle { int index; int numNodes = 75; float head = 1; float girth = 1; //float muscleRange = numNodes; //float muscleFreq = numNodes/100.0f; float muscleRange = 1; float muscleFreq = .1; float theta; float thetaMuscle; float count = 0; float[] x; float[] y; float tv; float angle; float xOffset = xMid; float yOffset = yMid; boolean visible = true; Tentacle (int sentIndex) { index = sentIndex; x = new float[numNodes]; y = new float[numNodes]; } void move () { if (count == 0){ x[0] = meander.x[0]; y[0] = meander.y[0]; angle = atan2((meander.y[0] - meander.y[1]), (meander.x[0] - meander.x[1])); for (int i=0; i 100 && B < 120){ B = 255; A *= 2.0; } else if (B > 225 && B < 255){ H = 150; B = 200; A *= 2.0; } else { H = 150; B = (B + 50.0)/2.0; } stroke(H,S,B,A); vertex(x[i], y[i]); } endShape(); } }