import controlP5.*; import java.util.*; import java.math.*; ControlP5 controlP5; //controlP5.Label label; int RainNumber =0; int Arraysize; int Index = 0; float Default = 0.61; //ControlFont ctrlfont; ParticleSystem ps; //constants to set gradient direction int Y_AXIS = 1; int X_AXIS = 2; //Plotting constants int unitX, unitY; int plotX1, plotX2; int plotY1, plotY2; int labelX, labelY; int dataMin, dataMax; int XMIN, XMAX; PFont font, font0, font1, font2; ArrayList datapoints; double[][] data; Integrator[] interpolators; String[] CatNames = {"Europe", "Asia", "Africa", "North America", "South America", "Other"}; void setup() { //ensure a 3:2 aspect ratio size(1200,800); // background(80); frameRate(60); //define grid unit size.. unitX = width/60; unitY = height/40; //smooth(); datapoints = loadTransactions(); RainNumber = ceil(100*(float)Default); double minDist = abs((float)data[0][0]-Default); for(int i = 0; iminDist){ Index = Index; } else{ Index = i; } minDist = curDist; } //Load font library //font = loadFont("Helvetica-14.vlw"); font0 = loadFont("HelveticaNeue-Light-13.vlw"); font1 = loadFont("HelveticaNeue-Light-10.vlw"); font2 = loadFont("HelveticaNeue-Light-22.vlw"); //Set Plot dimensions plotX1 = 7*unitX; plotX2 = width-(7*unitX); plotY1 = 6*unitY; plotY2 = height-6*unitY; labelX = 4*unitY+ unitY/2; labelY = height-(3*unitX+unitX/2); //Define data ranges dataMin = 0; dataMax = 400; XMIN = 0; XMAX = 100; //Slider Setup controlP5 = new ControlP5(this); // controlP5.disableColorBackground(); //s = controlP5.addSlider("slider",0,100,0,width-60,100,10,height-200); Slider s = controlP5.addSlider("slider",0,2.1,(float)Default,plotX2+1*unitX,plotY1,floor(1.6*unitX),plotY2-plotY1); silderSetup(s); //Rain Setup ps = new ParticleSystem(1, new PVector(width,height,0)); interpolators = new Integrator[7]; int wetness = floor(map(RainNumber, 0.0,100.0,0.0,datapoints.size()-1)); for (int row = 0; row < 6; row++) { float initialValue = (float)data[wetness][row+1]; // total = total + (int)datapoints.get(row).europe; interpolators[row] = new Integrator(initialValue); interpolators[row].attraction = 0.15; } } void draw() { background(15); //drawGrid(); drawPlot(); drawTitle(); drawAxisLabels(); // drawXLabels(); drawYLabels(); ps.run(); //controlP5.draw(); double rain = drawData(); int dropValue = ceil(map(Index,0,Arraysize,0,9));//ceil(map(RainNumber-0.1, 0, 50, 0, 9)); // framecount = framecount % 60; for(int i = 0;i