+ SineSphere(GLucose glucose)
+ {
+ super(glucose);
+ sinespin = new Projection(model);
+ sinespin2 = new Projection(model);
+ addModulator(yrot).trigger();
+ addModulator(yrot2).trigger();
+ addParameter(rotation);
+ //Sshape = addPick("Shape", , 1);
+ spherys = new Sphery[] {
+ new Sphery(model.xMax/4, model.yMax/2, model.zMax/2, modelrad/16, modelrad/8, 3000),
+ 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),
+
+ new Sphery(.3*model.xMax, .4*model.yMax, .6*model.zMax, modelrad/16, modelrad/8, 4000),
+ 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 (Sphery s : spherys) {
+// if (s == null) continue;
+// double bampv = s.bounceamp.getValue();
+// double brv = s.bouncerate.getValue();
+// double tempobounce = lx.tempo.bpm();
+// if (parameter == s.bounceamp)
+// {
+// s.ybounce.setRange(bampv*model.yMax/3 , bampv*2*model.yMax/3, brv);
+// }
+// else if ( parameter == s.bouncerate )
+// {
+// s.ybounce.setDuration(120000./tempobounce);
+// }
+// }
+// }
+
+ public void run( double deltaMs) {
+ float t = lx.tempo.rampf();
+ float bpm = lx.tempo.bpmf();
+ spherys[0].run(deltaMs);
+ spherys[1].run(deltaMs);
+ spherys[2].run(deltaMs);
+ spherys[3].run(deltaMs);
+
+ sinespin.reset(model)
+
+
+ // Translate so the center of the car is the origin, offset
+ .translateCenter(model, 0, 0, 0)
+ // .scale(1.3,1.3,1.3)
+ // Rotate around the origin (now the center of the car) about an y-vector
+ .rotate(yrot.getValuef(), 0, 1 , 0)
+ .translate(model.cx, model.cy, model.cz);
+