int xSize = 600; int ySize = 400; int xMid = xSize/2; int yMid = ySize/2; int tTotal = 0; int tMax = 100; Tentacle[] tentacle; Meander meander; boolean clear = true; boolean click = false; int counter = 0; float myAngle; float mouseAngle; float HOffset = 100.0; float H,S,B,A; void setup() { size(xSize,ySize); //smooth(); colorMode(HSB,360); background(166,200,51); ellipseMode(CENTER_DIAMETER); tentacle = new Tentacle[tMax]; meander = new Meander(xMid, yMid, 3); for (int i=0; i 100 && myAngle < 150){ B += (25 - abs(125 - myAngle)) * 5.0; } if ((myAngle - mouseAngle) > 90 && (myAngle - mouseAngle) < 140){ B += (25 - abs(115 - (myAngle - mouseAngle))) * 5.0; } if (n == 1 || t == tTotal-1){ A = 250; } fill(H,S,B,A); vertex(tentacle[t-1].x[n], tentacle[t-1].y[n]); fill(H,S,B,A); vertex(tentacle[t].x[n], tentacle[t].y[n]); } endShape(); } counter ++; if(tTotal >= tMax){ tentacle[tMax-1] = new Tentacle(tMax-1); for (int i=1; i xSize + 150 || y[0] < -150 || y[0] > ySize + 150){ outOfBounds = true; } } } class Tentacle { int index; int numNodes = 50; float head = 1; float girth = 1; float muscleRange = 45; float muscleFreq = .3; 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 exist(){ if (count == 0){ init(); } move(); //render(); } void init(){ 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(); } }