float globalAngle = 0.0f; int numButtonLists=10; CvButtonList [] buttonLists; int previousColourSet=0; int previousArmMode=0; int previousSpinMode=0; int BL_SpinControl = 0; int BL_Depth = 1; int BL_SpinAlternate = 2; int BL_ClearMode = 3; int BL_LineMode = 4; int BL_NodeMode = 5; int BL_ArmCountMode = 6; int BL_SizeReduction = 7; int BL_ColorSet = 9; color COL_Background; color COL_Line; color COL_Node; color COL_ButtonOutline; color COL_ButtonOn; color COL_ButtonOff; BFont mainFont; int [] randomArms = {3,1,1,2,5,6,7,8,9,10}; float [] randomSpin = {1.0f,-1.0f,1.0f,-1.0f,1.0f,-1.0f,1.0f,-1.0f,1.0f,-1.0f}; void setup() { size(500,500); buttonLists = new CvButtonList[numButtonLists]; for (int i=0; i1.0f) continue;// d=1.0f; d=1.0f-d; d=d*d*d; d=1.0f-d; i=1.0f-d; fill(_red, _green, _blue, _alpha*i); rect(x+xx-r,y+yy-r,1,1); } } } float [] sizeReductions={0.5f,0.6f,0.65f,0.7f,0.75f}; void recurse(float x, float y, float angle, float radius, int level) { // Exit if we have reached recurse limit. if (level>buttonLists[BL_Depth].selectedItem) return; int arms = 2;//5-level;//+3;//3; float xo,yo,angleShift,spinDir=1.0f; float sizeReduction = sizeReductions[buttonLists[BL_SizeReduction].selectedItem]; // arm mode switch (buttonLists[BL_ArmCountMode].selectedItem) { case 0: arms=2; break; case 1: arms=3; break; case 2: arms=4; break; case 3: arms=5-level; break; case 4: arms=level+2; break; case 5: arms=level+3; break; case 6: arms=1+level/3; break; case 7: arms=randomArms[level]; break; } if (arms>5) arms=5; if (arms<1) arms=1; spinDir=1.0f; if (buttonLists[BL_SpinAlternate].selectedItem==1) { if (level==1 || level==3 || level==5 || level==7 || level==9) spinDir=-1.0f; } else if (buttonLists[BL_SpinAlternate].selectedItem==2) { spinDir = randomSpin[level]; } for (int i =0; i0) { if (buttonLists[BL_NodeMode].selectedItem==1) { fill(COL_Node); rectMode(CENTER_DIAMETER); rect(x,y,radius/3.0f+1,radius/3.0f+1); } else if (buttonLists[BL_NodeMode].selectedItem==2) { //drawBlob((int)x, (int)y, (int)(radius*0.1f), 0, 0, 00, 250); fill(COL_Node); ellipseMode(CENTER_DIAMETER); ellipse(x,y,radius/3.0f+1,radius/3.0f+1); } } } ///////////////////////////////////////////////// class CvButtonList { CvButtonList(int x, int y, int num) { borderSize=4; buttonSize=(int)(width/20.0f);//18; // xPos = x; yPos = y; numItems=num; mouseOver=-1; selectedItem=0; totalButtonSize = buttonSize+borderSize+borderSize; subNames = new String[20]; for (int i=0;i<20;i++) subNames[i]=new String("null"); listName="null"; } void tick() { if (mouseX>xPos && mouseXyPos && mouseYnumItems-1) selectedItem=numItems-1; } int xPos,yPos; int numItems; int mouseOver; int selectedItem; int borderSize; int buttonSize; int totalButtonSize; String listName; String [] subNames; };