addModulator(y = new SinLFO(cRad, mMax.y - cRad, 0)).trigger(); y.modulateDurationBy(dy);\r
addModulator(z = new SinLFO(cRad, mMax.z - cRad, 0)).trigger(); z.modulateDurationBy(dz);\r
pSize = addParam ("Size" , 0.4 );\r
- pChoose = addPick ("Animiation" , 0 , 3, new String[] {"Pong", "Ball", "Cone"} );\r
+ pChoose = addPick ("Animiation" , 0, 2, new String[] {"Pong", "Ball", "Cone"} );\r
}\r
\r
void StartRun(double deltaMs) { cRad = mMax.x*pSize.Val()/6; }\r
{\r
int CurAnim, iSymm;\r
int XSym=1,YSym=2,RadSym=3;\r
- float zTime = random(10000), zTheta=0, zSin, zCos;\r
- float rtime = 0, ttime = 0, transAdd=0;\r
+ float zTime , zTheta=0, zSin, zCos, rtime, ttime, transAdd;\r
DParam pSpeed , pDensity, pRotZ;\r
Pick pChoose, pSymm;\r
int _ND = 4;\r
super(glucose);\r
pRotZ = addParam("RotZ" , .5 ); pSpeed = addParam("Fast", .55);\r
pDensity= addParam("Dens" , .5);\r
- pSymm = addPick("Symmetry" , 0, 4, new String[] {"None", "X", "Y", "Radial"} );\r
- pChoose = addPick("Animation", 1, 6, new String[] {"Drip", "Cloud", "Rain", "Fire", "Machine", "Spark"} );\r
+ pSymm = addPick("Symmetry" , 0, 3, new String[] {"None", "X", "Y", "Radial"} );\r
+ pChoose = addPick("Animation", 1, 5, new String[] {"Drip", "Cloud", "Rain", "Fire", "Machine", "Spark"} );\r
for (int i=0; i<_ND; i++) N[i] = new NDat();\r
}\r
\r
+ void StartPattern() { zTime = random(500); zTheta=0; rtime = 0; ttime = 0; transAdd=0; }\r
void StartRun(double deltaMs) {\r
zTime += deltaMs*(pSpeed.Val()-.5)*.002 ;\r
zTheta += deltaMs*(pRotZ .Val()-.5)*.01 ;\r
prvR = dstR; dstR = random(mCtr.y); }\r
}\r
int nBeats = 0;\r
- DParam pAmp, pRad;\r
+ DParam pAmp, pRadius, pBounce;\r
DParam pRotX, pRotY, pRotZ;\r
\r
- float t,amp;\r
+ float t,amp,rad,bnc;\r
rAngle a1 = new rAngle(), a2 = new rAngle(),\r
a3 = new rAngle(), a4 = new rAngle();\r
xyz cPrev = new xyz(), cRand = new xyz(),\r
pRotX = addParam("RotX", .5);\r
pRotY = addParam("RotY", .5);\r
pRotZ = addParam("RotZ", .5);\r
- pAmp = addParam("Amp" , .2);\r
- pRad = addParam("Rad" , .1 );\r
- pTempoMult = addPick ("TMult" , 0 , 6 , new String[] {"1x", "2x", "4x", "8x", "16x", "Rand" } );\r
- pTimePattern= addPick ("TPat" , 6 , 8 , new String[] {"Bounce", "Sin", "Roll", "Quant", "Accel", "Deccel", "Slide", "Rand"} );\r pShape = addPick ("Shape" , 8 , 12 , new String[] {"Line", "Tap", "V", "RandV", "Pyramid", "Wings", "W2", "Clock",\r
- "RSphere", "Sphere", "Cone", "Noise" } );\r
- pForm = addPick ("Form" , 0 , 3 , new String[] {"Bar", "Volume", "Fade"} );\r
+ pRadius = addParam("Rad" , .1 );\r
+ pBounce = addParam("Bnc" , .2 );\r
+ pAmp = addParam("Amp" , .2 );\r
+ pTempoMult = addPick ("TMult" , 0 , 5 , new String[] {"1x", "2x", "4x", "8x", "16x", "Rand" } );\r
+ pTimePattern= addPick ("TPat" , 6 , 7 , new String[] {"Bounce", "Sin", "Roll", "Quant", "Accel", "Deccel", "Slide", "Rand"} );\r pShape = addPick ("Shape" , 13, 15 , new String[] {"Line", "Tap", "V", "RandV",\r
+ "Pyramid", "Wings", "W2", "Clock",\r
+ "Triangle", "Quad", "Sphere", "Cone",\r
+ "Noise", "Wave", "?", "?"} );\r
+ pForm = addPick ("Form" , 2 , 2 , new String[] {"Bar", "Volume", "Fade"} );\r
}\r
\r
+\r
+float zTime = random(1000);\r
void StartRun(double deltaMs) {\r
+ zTime += deltaMs*.001; zTime = zTime % 1000.;\r
t = lx.tempo.rampf();\r
amp = pAmp.Val();\r
+ rad = pRadius.getValuef();\r
+ bnc = pBounce.getValuef(); \r
\r
Theta .set(pRotX.Val()*PI*2, pRotY.Val()*PI*2, pRotZ.Val()*PI*2);\r
TSin .set(sin(Theta.x), sin(Theta.y), sin(Theta.z));\r
case 6: t = .5*(1-cos(PI*t)); break; // slide\r
}\r
\r
- \r
cMid.set (cPrev); cMid.interpolate (t,cRand);\r
cMidNorm.set (cMid); cMidNorm.setNorm();\r
\r
Pn.set(Px); Pn.setNorm();\r
\r
float mp = min(Pn.x, Pn.z);\r
- float yt = map(t,0,1,.5-amp/2,.5+amp/2);\r
- float rad = pRad.getValuef();\r
+ float yt = map(t,0,1,.5-bnc/2,.5+bnc/2);\r
+ float r;\r
\r
switch (pShape.Cur()) {\r
case 0: V.set(Pn.x, yt , Pn.z); break; // bouncing line\r
case 1: V.set(Pn.x, map(cos(PI*t * Pn.x),-1,1,0,1) , Pn.z); break; // top tap\r
- case 2: V.set(Pn.x, amp*map(Pn.x<.5?Pn.x:1-Pn.x,0,.5 ,0,t-.5)+.5, Pn.z); break; // V shape\r
+ case 2: V.set(Pn.x, bnc*map(Pn.x<.5?Pn.x:1-Pn.x,0,.5 ,0,t-.5)+.5, Pn.z); break; // V shape\r
case 3: V.set(Pn.x, Pn.x < cMidNorm.x ? map(Pn.x,0,cMidNorm.x, .5,yt) :\r
map(Pn.x,cMidNorm.x,1, yt,.5), Pn.z); break; // Random V shape\r
\r
case 4: V.set(Pn.x, .5*(Pn.x < cMidNorm.x ? map(Pn.x,0,cMidNorm.x, .5,yt) :\r
map(Pn.x,cMidNorm.x,1, yt,.5)) +\r
.5*(Pn.z < cMidNorm.z ? map(Pn.z,0,cMidNorm.z, .5,yt) :\r
- map(Pn.z,cMidNorm.z,1, yt,.5)), Pn.z); break; // Random Pyramid shape\r
+ map(Pn.z,cMidNorm.z,1, yt,.5)), Pn.z); break; // Random Pyramid shape\r
\r
- case 5: V.set(Pn.x, amp*map((Pn.x-.5)*(Pn.x-.5),0,.25,0,t-.5)+.5, Pn.z); break; // wings\r
- case 6: V.set(Pn.x, amp*map((mp -.5)*(mp -.5),0,.25,0,t-.5)+.5, Pn.z); break; // wings\r
+ case 5: V.set(Pn.x, bnc*map((Pn.x-.5)*(Pn.x-.5),0,.25,0,t-.5)+.5, Pn.z); break; // wings\r
+ case 6: V.set(Pn.x, bnc*map((mp -.5)*(mp -.5),0,.25,0,t-.5)+.5, Pn.z); break; // wings\r
+\r
+\r
\r
case 7: return color(0,0, min(\r
distToSeg(Px.x, Px.y, a1.getX(70),a1.getY(70), mCtr.x, mCtr.y),\r
distToSeg(Px.x, Px.y, a2.getX(40),a2.getY(40), mCtr.x, mCtr.y)) <rad*40?100:0); // clock\r
\r
-// case 8: return color(0,0,c1c(.9+2*pRad.getValuef() - Px.distance(a1.x,a1.y)*.03) ); // sphere - radial\r
-\r
- case 8: float r = amp*200;\r
- return color(0,0, min(\r
+ case 8: r = amp*200 * map(bnc,0,1,1,sin(PI*t)); return color(0,0, min(\r
+ distToSeg(Px.x, Px.y, a1.getX(r),a1.getY(r), a2.getX(r),a2.getY(r)),\r
+ distToSeg(Px.x, Px.y, a2.getX(r),a2.getY(r), a3.getX(r),a3.getY(r)),\r
+ distToSeg(Px.x, Px.y, a3.getX(r),a3.getY(r), a1.getX(r),a1.getY(r)) // triangle\r
+ ) <rad*40?100:0);\r
+ \r
+ case 9: r = amp*200 * map(bnc,0,1,1,sin(PI*t)); return color(0,0, min(\r
distToSeg(Px.x, Px.y, a1.getX(r),a1.getY(r), a2.getX(r),a2.getY(r)),\r
distToSeg(Px.x, Px.y, a2.getX(r),a2.getY(r), a3.getX(r),a3.getY(r)),\r
distToSeg(Px.x, Px.y, a3.getX(r),a3.getY(r), a4.getX(r),a4.getY(r)),\r
- distToSeg(Px.x, Px.y, a4.getX(r),a4.getY(r), a1.getX(r),a1.getY(r))\r
+ distToSeg(Px.x, Px.y, a4.getX(r),a4.getY(r), a1.getX(r),a1.getY(r)) // quad\r
) <rad*40?100:0); // shape\r
\r
+ \r
+ case 10: r = map(bnc,0,1,a1.r,amp*200*sin(PI*t)); \r
+ return color(0,0,c1c(.9+2*rad - dist(Px.x,Px.y,a1.getX(r),a1.getY(r))*.03) ); // sphere\r
\r
- case 9: return color(0,0,c1c(.9+2*pRad.getValuef() - cMid.distance(Px)*.03) ); // sphere - radial\r
-\r
- case 10: return color(0,0,c1c(1 - CalcCone(Px,cMid,mCtr) * 0.02 > .5?1:0)); // cone\r
+ case 11: return color(0,0,c1c(1 - CalcCone(Px,cMid,mCtr) * 0.02 > .5?1:0)); // cone\r
\r
- case 11: return color(100 + noise(Pn.x,Pn.y,Pn.z + (NoiseMove+50000)/1000.)*200,\r
+ case 12: return color(100 + noise(Pn.x,Pn.y,Pn.z + (NoiseMove+50000)/1000.)*200,\r
85,c1c(Pn.y < noise(Pn.x + NoiseMove/2000.,Pn.z)*(1+amp)-amp/2.-.1 ? 1 : 0)); // noise\r
\r
+ case 13: V.set(Pn.x, map(\r
+ sin( zTime*3.7 + Pn.x*2.0*PI)\r
+ + sin( zTime*4.2 + Pn.x*1.7*PI)\r
+ + sin( -zTime*4.7 + Pn.x*2.1*PI)\r
+ + sin( -zTime*5.2 + Pn.x*1.5*PI)\r
+ ,-2,2,.2,.8), Pn.z); break;\r
+ \r
+ \r
default: return color(0,0,0);\r
}\r
\r