private BasicParameter rotation = new BasicParameter("rotation", 0);
float modelrad = sqrt((model.xMax)*(model.xMax) + (model.yMax)*(model.yMax) + (model.zMax)*(model.zMax));
Pick Sshape;
+ public final PVector P = new PVector();
class Sphery {
float f1xcenter, f1ycenter, f1zcenter, f2xcenter , f2ycenter, f2zcenter; //second three are for an ellipse with two foci
public BasicParameter huespread;
public BasicParameter bouncerate;
public BasicParameter bounceamp;
- public PVector circlecenter;
-
-
+ public BasicParameter vibrationrate;
+ public final PVector circlecenter = new PVector();
public Sphery(float f1xcenter, float f1ycenter, float f1zcenter, float vibration_min, float vibration_max, float vperiod)
{
this.vperiod = vperiod;
//addParameter(bounceamp = new BasicParameter("Amp", .5));
//addParameter(bouncerate = new BasicParameter("Rate", .5)); //ybounce.modulateDurationBy(bouncerate);
+ addParameter(vibrationrate = new BasicParameter("vibration", 1000, 10000));
addParameter(widthparameter = new BasicParameter("Width", .1));
- addParameter(huespread = new BasicParameter("Hue", .5, 10));
+ addParameter(huespread = new BasicParameter("Hue", 180, 360));
- addModulator( vx = new SinLFO(-4000, 10000, 100000)).trigger() ;
+ addModulator( vx = new SinLFO(500, 10000, 100000)).trigger() ;
//addModulator(xbounce = new SinLFO(model.xMax/3, 2*model.yMax/3, 2000)).trigger();
- addModulator(ybounce= new SinLFO(model.yMax/3, 2*model.yMax/3, 240000./lx.tempo.bpm())).trigger(); //ybounce.modulateDurationBy
+ addModulator(ybounce= new SinLFO(model.yMax/3, 2*model.yMax/3, 240000./lx.tempo.bpm())).trigger(); //bounce.modulateDurationBy
//addModulator(bounceamp); //ybounce.setMagnitude(bouncerate);
- addModulator( vibration = new SinLFO(vibration_min , vibration_max, 240000./lx.tempo.bpm())).trigger(); //vibration.modulateDurationBy(vx);
-
+ addModulator( vibration = new SinLFO(vibration_min , vibration_max, 240000./lx.tempo.bpm() ) ).trigger(); vibration.modulateDurationBy(vx);
+
}
+
+ //for an ellipse
public Sphery(float f1xcenter, float f1ycenter, float f1zcenter, float f2xcenter, float f2ycenter, float f2zcenter,
float vibration_min, float vibration_max, float vperiod)
float quadrant(PVector q) {
float qtheta = atan2( (q.x-f1xcenter) , (q.z - f1zcenter) );
- //println( "qtheta " + qtheta);
- return map(qtheta, -PI/2, PI/2, 140, 240);
+
+ return map(qtheta, -PI/2, PI/2, 0, huespread.getValuef());
//if (q.x > f1xcenter ) {return 140 ;}
//else {return 250;}
}
- color spheryvalue (PVector p, float f1xcenter, float f1ycenter, float f1zcenter)
- { circlecenter = new PVector(f1xcenter, f1ycenter, f1zcenter);
+ color spheryvalue (PVector p, float f1xcenter, float f1ycenter, float f1zcenter) {
+ circlecenter.set(f1xcenter, f1ycenter, f1zcenter);
+
+
//switch(sShpape.cur() ) {}
- return lx.hsb(constrain( huespread.getValuef()*5*quadrant(p), 0, 360) ,
- 80,
- max(0, 100 - 100*widthparameter.getValuef()*abs(PVector.dist(p, circlecenter)
- - vibration.getValuef() ) ) );
+
+ float b = max(0, 100 - 100*widthparameter.getValuef()*abs(p.dist(circlecenter)
+ - vibration.getValuef() ) );
+
+ if (b <= 0) {
+ return 0;
+ }
+
+ return lx.hsb(
+ constrain(quadrant(p), 0, 360),
+ 80,
+ b
+ );
}
color ellipsevalue(float px, float py, float pz , float f1xc, float f1yc, float f1zc, float f2xc, float f2yc, float f2zc)
{
new Sphery(.75*model.xMax, model.yMax/2, model.zMax/2, modelrad/20, modelrad/10, 2000),
new Sphery(model.xMax/2, model.yMax/2, model.zMax/2, modelrad/4, modelrad/8, 2300),
- };
-
+ };
}
// public void onParameterChanged(LXParameter parameter)
for (Coord p: sinespin)
// for (Point p: model.points)
{
- PVector P = new PVector(p.x, p.y, p.z);
- color c = 0;
- c = blendColor(c, spherys[1].spheryvalue(P, .75*model.xMax, model.yMax/2, model.zMax/2), ADD);
- c = blendColor(c, spherys[0].spheryvalue(P, model.xMax/4, model.yMax/4, model.zMax/2), ADD);
- c = blendColor(c, spherys[2].spheryvalue(P, model.xMax/2, model.yMax/2, model.zMax/2),ADD);
+ P.set(p.x, p.y, p.z);
+ // PVector P = new PVector(p.x, p.y, p.z);
+ color c = #000000;
+ c = blendIfColor(c, spherys[1].spheryvalue(P, .75*model.xMax, model.yMax/2, model.zMax/2), ADD);
+ c = blendIfColor(c, spherys[0].spheryvalue(P, model.xMax/4, model.yMax/4, model.zMax/2), ADD);
+ c = blendIfColor(c, spherys[2].spheryvalue(P, model.xMax/2, model.yMax/2, model.zMax/2),ADD);
- colors[p.index] = lx.hsb(lx.h(c), lx.s(c), lx.b(c));
+ colors[p.index] = c;
}
for (Coord p: sinespin2)
{ color c = 0;
- PVector P = new PVector(p.x, p.y, p.z);
- c = blendColor(c, spherys[3].spheryvalue(P, .3*model.xMax, .7*model.yMax, .6*model.zMax),ADD);
+ // PVector P = new PVector(p.x, p.y, p.z);
+ P.set(p.x, p.y, p.z);
+ c = blendIfColor(c, spherys[3].spheryvalue(P, .3*model.xMax, .7*model.yMax, .6*model.zMax),ADD);
- colors[p.index] = blendColor(colors[p.index], c , ADD);
+ colors[p.index] = blendIfColor(colors[p.index], c , ADD);
}
+ }
+
+ color blendIfColor(color c1, color c2, int mode) {
+ if (c2 != 0) {
+ return blendColor(c1, c2, mode);
+ }
+ return c1;
}