Merge branch 'master' of https://github.com/sugarcubes/SugarCubes into alexgreen
authorAlexander Green <alexandergreen22@gmail.com>
Fri, 15 Nov 2013 07:44:26 +0000 (23:44 -0800)
committerAlexander Green <alexandergreen22@gmail.com>
Fri, 15 Nov 2013 07:44:26 +0000 (23:44 -0800)
LX point stuff, etc don't know if it works yet
Conflicts:
AlexGreen.pde
SugarCubes.pde

1  2 
AlexGreen.pde
AlexGreen.pde.orig
MarkSlee.pde
SugarCubes.pde
SugarCubes.pde.orig
_Internals.pde
_Mappings.pde

diff --cc AlexGreen.pde
index e3897cfe8045ebfb8752cb0975995f62f362f02a,e8b55cec34a6794de908f1fbacae0a0f4b8d7a7d..e507d20b179171fcd899973b6bd0ce42496e17df
@@@ -1,20 -1,6 +1,12 @@@
  class SineSphere extends SCPattern {
 -  private SinLFO yrot = new SinLFO(0, TWO_PI, 2000);
 +  private SawLFO yrot = new SawLFO(0, TWO_PI, 3000);
 +  private SawLFO yrot2 = new SawLFO(0, -TWO_PI,  8000);
 +  public BasicParameter huespread = new BasicParameter("Hue", 0, 180);
 +  public BasicParameter widthparameter= new BasicParameter("Width", .2);
 +  private int pitch = 0; 
 +  private int channel = 0; 
 +  private int velocity = 0; 
-   public final Projection sinespin;
-   public final Projection sinespin2; 
-   
-   //to-do:  how to sync all hues across sphery's via one basicparameter 
-   //public BasicParameter huespread = new BasicParameter("HueSpread", 180, 360);
-   public BasicParameter rotationx = new BasicParameter("rotx", 0, 0, 1 );
-   public BasicParameter rotationy = new BasicParameter("roty", 1, 0, 1);
-   public BasicParameter rotationz = new BasicParameter("rotz", 0, 0, 1);
-   
+   public final LXProjection sinespin; 
   float modelrad = sqrt((model.xMax)*(model.xMax) + (model.yMax)*(model.yMax) + (model.zMax)*(model.zMax));
    Pick Sshape; 
    public final PVector P = new PVector();
@@@ -160,16 -99,8 +152,16 @@@ final Sphery[] spherys
    SineSphere(GLucose glucose) 
    {
      super(glucose);
-     sinespin = new Projection(model);
+     sinespin = new LXProjection(model);
 +    sinespin2 = new Projection(model);
 +    addParameter(huespread);
 +    addParameter(rotationx);
 +    addParameter(rotationy);
 +    addParameter(rotationz);
      addModulator(yrot).trigger();
 +    addModulator(yrot2).trigger(); 
 +    
 +    //addParameter(huespread);
      //Sshape = addPick("Shape", , 1);
      spherys = new Sphery[] {
        new Sphery(model.xMax/4, model.yMax/2, model.zMax/2, modelrad/16, modelrad/8, 3000),
  //     }
  //   }
  
 -     void run( double deltaMs) {
 -     float t = lx.tempo.rampf();
 -     float bpm = lx.tempo.bpmf();
 +    public void run( double deltaMs) {
 +     double t = lx.tempo.ramp();
 +     double bpm = lx.tempo.bpm();
-      spherys[0].run(deltaMs);
-      spherys[1].run(deltaMs);
-      spherys[2].run(deltaMs);
-      spherys[3].run(deltaMs);
-      
++     //spherys[0].run(deltaMs);
+      //spherys[1].run(deltaMs);
+      //spherys[2].run(deltaMs);
+      //spherys[3].run(deltaMs);]
+      sinespin.reset()
++    .center
++     .rotate(yrot.getValuef(), 0, 1, 0);
  
 -     // Translate so the center of the car is the origin, offset by yPos
 -      .center()
 -
 -      // Rotate around the origin (now the center of the car) about an X-vector
 -      .rotate(yrot.getValuef(), 0, 1, 0);
 +     switch (pitch) 
 +    {
 +     case 53: t = .5*t;   bpm = .5*bpm;  break;
  
 +     case 54: t = t;   bpm = bpm;   break;
  
 +     case 55: t = 2*t;  bpm = 2*bpm; break;
  
 -     for (LXPoint p : model.points){
 -    color c = 0;
 -    c = blendColor(c, spherys[1].spheryvalue(p.x, p.y, p.z, .75*model.xMax, model.yMax/2, model.zMax/2), ADD);
 -    c = blendColor(c, spherys[0].spheryvalue(p.x, p.y, p.z, model.xMax/4, model.yMax/4, model.zMax/2), ADD);
 -    c = blendColor(c, spherys[2].spheryvalue(p.x, p.y, p.z, model.xMax/2, model.yMax/2, model.zMax/2),ADD);
 +     default: t= t;   bpm = bpm; 
++}
       
 -      colors[p.index] = lx.hsb(lx.h(c), lx.s(c), lx.b(c));
 +      }
 +      
 +      for ( Sphery s: spherys){
 +      s.setVibrationPeriod(480000/bpm);
 +      s.vibration.setBasis(t);
 +       }
 +     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(), rotationx.getValuef(), rotationy.getValuef() , rotationz.getValuef())
 +      .translate(model.cx, model.cy, model.cz);
 +      
  
 -               }
 +   
 +   
 +
 +     for (Coord p: sinespin)
 +   // for (Point p: model.points)
 +     {
 +       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] = c;
 +    
        
 +               }
 +   sinespin2.reset(model).
 +   translateCenter(model,0,0,0).
 +   rotate(yrot2.getValuef(), 0, 1, 0).
 +   translate(model.cx,model.cy,model.cz);
 +
 +    for (Coord p: sinespin2)
 +    {   color c = 0;
 +      // 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] = blendIfColor(colors[p.index], c , ADD);
  
 +    }  
  
    }
 -  int spheremode = 0;
    
 -   // void keyPressed() {
 -   //   spheremode++;
 -   //     }
 -
 -  // color CalcPoint(PVector Px) 
 -  // { 
 -  //      // if (spheremode == 0 )
 -              //{
 -            
 -             //}
 -      //   else if (spheremode == 1)
 -      // {
 +  color blendIfColor(color c1, color c2, int mode) {
 +    if (c2 != 0) {
 +      return blendColor(c1, c2, mode);
 +    }
 +    return c1;
 +  }
 +  
  
        //   color c = 0;
        //   c = blendColor(c, spherys[3].ellipsevalue(Px.x, Px.y, Px.z, model.xMax/4, model.yMax/4, model.zMax/4, 3*model.xMax/4, 3*model.yMax/4, 3*model.zMax/4),ADD);
index 13abdfe4b80e017d9c2cf7cca9ac715c632249e5,0000000000000000000000000000000000000000..9d657e9fb5ef48b57c90fa59300c7f191b3e99f9
mode 100644,000000..100644
--- /dev/null
@@@ -1,362 -1,0 +1,446 @@@
-   private BasicParameter rotation = new BasicParameter("rotation", 0);
 +class SineSphere extends SCPattern {
++<<<<<<< HEAD
 +  private SawLFO yrot = new SawLFO(0, TWO_PI, 3000);
 +  private SawLFO yrot2 = new SawLFO(0, -TWO_PI,  8000);
++  public BasicParameter huespread = new BasicParameter("Hue", 0, 180);
++  public BasicParameter widthparameter= new BasicParameter("Width", .2);
++  private int pitch = 0; 
++  private int channel = 0; 
++  private int velocity = 0; 
 +  public final Projection sinespin;
 +  public final Projection sinespin2; 
-   public BasicParameter widthparameter;
-   public BasicParameter huespread;
++  
++  //to-do:  how to sync all hues across sphery's via one basicparameter 
++  //public BasicParameter huespread = new BasicParameter("HueSpread", 180, 360);
++  public BasicParameter rotationx = new BasicParameter("rotx", 0, 0, 1 );
++  public BasicParameter rotationy = new BasicParameter("roty", 1, 0, 1);
++  public BasicParameter rotationz = new BasicParameter("rotz", 0, 0, 1);
++  
++=======
++  private SinLFO yrot = new SinLFO(0, TWO_PI, 2000);
++  public final LXProjection sinespin; 
++>>>>>>> b8bb27489db7dc687bf150576e9d9439f1fa17a6
 + 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
 +  private  SinLFO vibration; 
 +  private  SinLFO surface;
 +  private  SinLFO vx;
 +  private SinLFO xbounce;
 +  public SinLFO ybounce;
 +  private SinLFO zbounce;
 +  float vibration_min, vibration_max, vperiod;
- <<<<<<< HEAD
- =======
++  
++  //public BasicParameter huespread;
 +  public BasicParameter bouncerate;
 +  public BasicParameter bounceamp;
- >>>>>>> 4ad9f85959980d306800ad50636f4fd7c2a5d36b
++  public BasicParameter vibrationrate;
 +  public final PVector circlecenter = new PVector(); 
-    addParameter(widthparameter = new BasicParameter("Width", .1));
-    addParameter(huespread = new BasicParameter("Hue", .5, 10));
 + 
 +  public Sphery(float f1xcenter, float f1ycenter, float f1zcenter, float vibration_min, float vibration_max, float vperiod) 
 +  {
 +   this.f1xcenter = f1xcenter;
 +   this.f1ycenter = f1ycenter;
 +   this.f1zcenter = f1zcenter;
 +   this.vibration_min = vibration_min;
 +   this.vibration_max = vibration_max;
 +   this.vperiod = vperiod;
 +   //addParameter(bounceamp = new BasicParameter("Amp", .5));
 +   //addParameter(bouncerate = new BasicParameter("Rate", .5));  //ybounce.modulateDurationBy(bouncerate);
-    addModulator( vx = new SinLFO(-4000, 10000, 100000)).trigger() ;
++   //addParameter(vibrationrate = new BasicParameter("vibration", 1000, 10000));
++    //addParameter(widthparameter = new BasicParameter("Width", .2));
++    
 +   
-    addModulator(ybounce= new SinLFO(model.yMax/3, 2*model.yMax/3, 240000./lx.tempo.bpm())).trigger(); //ybounce.modulateDurationBy
++   addModulator( vx = new SinLFO(500, 10000, 100000)).trigger() ;
 +   //addModulator(xbounce = new SinLFO(model.xMax/3, 2*model.yMax/3, 2000)).trigger(); 
-    addModulator( vibration = new SinLFO(vibration_min , vibration_max, 240000./lx.tempo.bpm())).trigger(); //vibration.modulateDurationBy(vx);
++   addModulator(ybounce= new SinLFO(model.yMax/3, 2*model.yMax/3, 240000./lx.tempo.bpm())).trigger(); //bounce.modulateDurationBy
 +    
 +   //addModulator(bounceamp); //ybounce.setMagnitude(bouncerate);
-  public Sphery(float f1xcenter, float f1ycenter, float f1zcenter, float f2xcenter, float f2ycenter, float f2zcenter, 
-   float vibration_min, float vibration_max, float vperiod)  
++   addModulator( vibration = new SinLFO(vibration_min , vibration_max, 10000)).trigger(); //vibration.setPeriod(240000/lx.tempo.bpm());
 +      
 +  }
-  {
-     this.f1xcenter = f1xcenter;
-    this.f1ycenter = f1ycenter;
-    this.f1zcenter = f1zcenter;
-    this.f2xcenter = f2xcenter;
-    this.f2ycenter = f2ycenter;
-    this.f2zcenter = f2zcenter;
-    this.vibration_min = vibration_min;
-    this.vibration_max = vibration_max;
-    this.vperiod = vperiod;
-    //addModulator(xbounce = new SinLFO(model.xMax/3, 2*model.yMax/3, 2000)).trigger(); 
-    addModulator(ybounce).trigger(); 
-    addModulator( vibration = new SinLFO(vibration_min , vibration_max, lx.tempo.rampf())).trigger(); //vibration.modulateDurationBy(vx);
-    addParameter(widthparameter = new BasicParameter("Width", .1));
-    addParameter(huespread = new BasicParameter("Hue", .2));
++
++  //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)  
 + 
- }
++//  {
++//     this.f1xcenter = f1xcenter;
++//    this.f1ycenter = f1ycenter;
++//    this.f1zcenter = f1zcenter;
++//    this.f2xcenter = f2xcenter;
++//    this.f2ycenter = f2ycenter;
++//    this.f2zcenter = f2zcenter;
++//    this.vibration_min = vibration_min;
++//    this.vibration_max = vibration_max;
++//    this.vperiod = vperiod;
++//    //addModulator(xbounce = new SinLFO(model.xMax/3, 2*model.yMax/3, 2000)).trigger(); 
++//    addModulator(ybounce).trigger(); 
++//    addModulator( vibration = new SinLFO(vibration_min , vibration_max, lx.tempo.rampf())).trigger(); //vibration.modulateDurationBy(vx);
++//    addParameter(widthparameter = new BasicParameter("Width", .1));
++//    //addParameter(huespread = new BasicParameter("bonk", .2));
 +  
-    //println( "qtheta  " + qtheta);
++// }
++ 
 +
 +
++void setVibrationPeriod(double period){
++// to-do:  make this conditional upon time signature
 +
++vibration.setPeriod(period);
++
++}
 +
 +
 +float distfromcirclecenter(float px, float py, float pz, float f1x, float f1y, float f1z) 
 +{
 +   return dist(px, py, pz, f1x, f1y, f1z);
 +    }
 + //void updatespherey(deltaMs, )
 +
 + float quadrant(PVector q) {
 +   float qtheta = atan2(  (q.x-f1xcenter) , (q.z - f1zcenter) ); 
-     return map(qtheta, -PI/2, PI/2, 140, 240);
 +
-   // circlecenter = new PVector(f1xcenter, f1ycenter, f1zcenter);
++
++    return map(qtheta, -PI/2, PI/2, 160-huespread.getValuef(), 240 +huespread.getValuef());
 +  //if (q.x > f1xcenter ) {return 140 ;}
 +    //else  {return 250;}  
 + }
 + color spheryvalue (PVector p, float f1xcenter, float f1ycenter, float f1zcenter) {
 +   circlecenter.set(f1xcenter, f1ycenter, f1zcenter); 
 +
-      constrain(huespread.getValuef()*5*quadrant(p), 0, 360),
++  
 +//switch(sShpape.cur() ) {}  
 +
 +   float b = max(0, 100 - 100*widthparameter.getValuef()*abs(p.dist(circlecenter)
 +      - vibration.getValuef() ) );
 +
 +   if (b <= 0) {
 +     return 0;
 +   }
 +
 +   return lx.hsb(
-     addParameter(rotation);
++     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)
 +  {
 +//switch(sShpape.cur() ) {}  
 +   return lx.hsb(huespread.getValuef()*5*px, dist(model.xMax-px, model.yMax-py, model.zMax-pz, f1xc, f1yc, f1zc) , 
 +    max(0, 100 - 100*widthparameter.getValuef() *
 +      abs( (dist(px, py, pz, f1xc, ybounce.getValuef(), f1zc) + 
 +        (dist(px, py , pz, f2xc, ybounce.getValuef(), f2zc) ) )/2  
 +      - 1.2*vibration.getValuef() ) ) ) ; 
 +  }
 +
 +void run(double deltaMs) {
 +      float vv = vibration.getValuef();
 +      float ybv = ybounce.getValuef();
 +      
 +    }
 +  
 +}  
 +
++// public boolean gridPressed(int row, int co){
++// midiengine.grid.setState();
++
++// return true;
++
++// }
++
++public boolean noteOn(Note note)  {
++pitch= note.getPitch();  
++velocity=note.getVelocity();
++channel=note.getChannel();
++return true;
++}
 +
 +final Sphery[] spherys;
 + 
 +  SineSphere(GLucose glucose) 
 +  {
 +    super(glucose);
++<<<<<<< HEAD
 +    sinespin = new Projection(model);
 +    sinespin2 = new Projection(model);
++    addParameter(huespread);
++    addParameter(rotationx);
++    addParameter(rotationy);
++    addParameter(rotationz);
++=======
++    sinespin = new LXProjection(model);
++>>>>>>> b8bb27489db7dc687bf150576e9d9439f1fa17a6
 +    addModulator(yrot).trigger();
 +    addModulator(yrot2).trigger(); 
-      float t = lx.tempo.rampf();
-      float bpm = lx.tempo.bpmf();
++    
++    //addParameter(huespread);
 +    //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);
 +//       }
 +//     }
 +//   }
 +
++<<<<<<< HEAD
 +    public void run( double deltaMs) {
-       .rotate(yrot.getValuef(), 0, 1 , 0)
++     double t = lx.tempo.ramp();
++     double bpm = lx.tempo.bpm();
 +     spherys[0].run(deltaMs);
 +     spherys[1].run(deltaMs);
 +     spherys[2].run(deltaMs);
 +     spherys[3].run(deltaMs);
 +     
++
++     switch (pitch) 
++    {
++     case 53: t = .5*t;   bpm = .5*bpm;  break;
++=======
++     void run( double deltaMs) {
++     float t = lx.tempo.rampf();
++     float bpm = lx.tempo.bpmf();
++     //spherys[1].run(deltaMs);
++     //spherys[2].run(deltaMs);
++     //spherys[3].run(deltaMs);]
++     sinespin.reset()
++
++     // Translate so the center of the car is the origin, offset by yPos
++      .center()
++>>>>>>> b8bb27489db7dc687bf150576e9d9439f1fa17a6
++
++     case 54: t = t;   bpm = bpm;   break;
++
++     case 55: t = 2*t;  bpm = 2*bpm; break;
++
++     default: t= t;   bpm = bpm; 
++
++<<<<<<< HEAD
++=======
++     for (LXPoint p : model.points){
++    color c = 0;
++    c = blendColor(c, spherys[1].spheryvalue(p.x, p.y, p.z, .75*model.xMax, model.yMax/2, model.zMax/2), ADD);
++    c = blendColor(c, spherys[0].spheryvalue(p.x, p.y, p.z, model.xMax/4, model.yMax/4, model.zMax/2), ADD);
++    c = blendColor(c, spherys[2].spheryvalue(p.x, p.y, p.z, model.xMax/2, model.yMax/2, model.zMax/2),ADD);
++>>>>>>> b8bb27489db7dc687bf150576e9d9439f1fa17a6
++     
++      }
++      
++      for ( Sphery s: spherys){
++      s.setVibrationPeriod(480000/bpm);
++      s.vibration.setBasis(t);
++       }
 +     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
- // for (Point p : c.points ){
++      .rotate(yrot.getValuef(), rotationx.getValuef(), rotationy.getValuef() , rotationz.getValuef())
 +      .translate(model.cx, model.cy, model.cz);
 +      
 +
 +   
 +   
 +
 +     for (Coord p: sinespin)
 +   // for (Point p: model.points)
 +     {
 +       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] = c;
 +    
 +      
 +               }
 +   sinespin2.reset(model).
 +   translateCenter(model,0,0,0).
 +   rotate(yrot2.getValuef(), 0, 1, 0).
 +   translate(model.cx,model.cy,model.cz);
 +
 +    for (Coord p: sinespin2)
 +    {   color c = 0;
 +      // 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] = blendIfColor(colors[p.index], c , ADD);
 +
 +    }  
 +
 +
 +
 +  }
 +  
 +  color blendIfColor(color c1, color c2, int mode) {
 +    if (c2 != 0) {
 +      return blendColor(c1, c2, mode);
 +    }
 +    return c1;
 +  }
 +  
 +
 +      //   color c = 0;
 +      //   c = blendColor(c, spherys[3].ellipsevalue(Px.x, Px.y, Px.z, model.xMax/4, model.yMax/4, model.zMax/4, 3*model.xMax/4, 3*model.yMax/4, 3*model.zMax/4),ADD);
 +      //   return c; 
 +      // }
 +      // return lx.hsb(0,0,0);
 +      //  // else if(spheremode ==2)
 +       // { color c = 0;
 +       //   return lx.hsb(CalcCone( (xyz by = new xyz(0,spherys[2].ybounce.getValuef(),0) ), Px, mid) );
 +
 +       // }
 +
 +  
 +       //   } 
 +        
 +  }
 +
 +class CubeCurl extends SCPattern{
 +float CH, CW, diag;
 +ArrayList<PVector> cubeorigin = new ArrayList<PVector>();
 +ArrayList<PVector> centerlist = new ArrayList<PVector>();
 +private SinLFO curl = new SinLFO(0, Cube.EDGE_HEIGHT, 5000 ); 
 +
 +private SinLFO bg = new SinLFO(180, 220, 3000);
 +
 +CubeCurl(GLucose glucose){
 +super(glucose);
 +addModulator(curl).trigger();
 +addModulator(bg).trigger();
 + this.CH = Cube.EDGE_HEIGHT;
 + this.CW = Cube.EDGE_WIDTH;
 + this.diag = sqrt(CW*CW + CW*CW);
 +
 +
 +ArrayList<PVector> centerlistrelative = new ArrayList<PVector>();
 +for (int i = 0; i < model.cubes.size(); i++){
 +  Cube a = model.cubes.get(i);
 +  cubeorigin.add(new PVector(a.x, a.y, a.z));
 +  centerlist.add(new PVector(a.cx, a.cy, a.cz) );
 +  
 +} 
 +
 +}
 +//there is definitely a better way of doing this!
 +PVector centerofcube(int i) { 
 +Cube c = model.cubes.get(i);
 +
 +println(" cube #:  " + i + " c.x  "  +  c.x  + "  c.y   "  + c.y   + "  c.z  "  +   c.z  );
 +// PVector cubeangle = new PVector(c.rx, c.ry, c.rz);
 +println("raw x angle:  " + c.rx + "raw y angle:  " + c.ry + "raw z angle:  " + c.rz);
 +PVector cubecenter = new PVector(c.x + CW/2, c.y + CH/2, c.z + CW/2);
 +println("cubecenter unrotated:  "  + cubecenter.x + "  "  +cubecenter.y + "  " +cubecenter.z );
 +PVector centerrot = new PVector(cos(c.rx)*CW/2 - sin(c.rx)*CW/2, cubecenter.y, cos(c.rz)*CW/2 + sin(c.rz)*CW/2);
 + // nCos*(y-o.y) - nSin*(z-o.z) + o.y
 +cubecenter = PVector.add(new PVector(c.x, c.y, c.z), centerrot);
 +println( "  cubecenter.x  " + cubecenter.x  + " cubecenter.y  " +  cubecenter.y + " cubecenter.z  "   +  cubecenter.z  + "   ");
 +
 +
 +return cubecenter;
 +}
 +
 +
 +void run(double deltaMs){
 +for (int i =0; i < model.cubes.size(); i++)  {
 +Cube c = model.cubes.get(i);
 +float cfloor = c.y;
 +
 +// if (i%3 == 0){
 +
- //  for (Point p: c.points){
++// for (LXPoint p : c.points ){
 +//  // colors[p.index]=color(0,0,0);
 +//   //float dif = (p.y - c.y);
 +//   //colors[p.index] = color( bg.getValuef() , 80 , dif < curl.getValuef() ? 80 : 0, ADD);
 +//    }
 +//  }
 +
 +// else if (i%3 == 1) {
 +  
-    for (Point p: c.points) {
++//  for (LXPoint p: c.points){
 +//   colors[p.index]=color(0,0,0);
 +//   float dif = (p.y - c.y);
 +//   // colors[p.index] = 
 +//   // color(bg.getValuef(),
 +//   //   map(curl.getValuef(), 0, Cube.EDGE_HEIGHT, 20, 100), 
 +//   //   100 - 10*abs(dif - curl.getValuef()), ADD );
 +//      }
 +//     }
 +// else if (i%3 == 2){
 + // centerlist[i].sub(cubeorigin(i);
-   for (Point p : model.points) {
++   for (LXPoint p: c.points) {
 +    PVector pv = new PVector(p.x, p.y, p.z);
 +     colors[p.index] =color( constrain(4* pv.dist(centerlist.get(i)), 0, 360)  , 50, 100 );
 +   // colors[p.index] =color(constrain(centerlist[i].x, 0, 360), constrain(centerlist[i].y, 0, 100),  );
 +
 +
 +    }
 +
 +
 +  //}
 +
 +   }
 +  }
 + }
 +
 + class HueTestHSB extends SCPattern{
 +  BasicParameter HueT = new BasicParameter("Hue", .5);
 +  BasicParameter SatT = new BasicParameter("Sat", .5);
 +  BasicParameter BriT = new BasicParameter("Bright", .5);
 +
 +HueTestHSB(GLucose glucose) {
 +  super(glucose);
 +  addParameter(HueT);
 +  addParameter(SatT);
 +  addParameter(BriT);
 +}
 +  void run(double deltaMs){
 +
++  for (LXPoint p : model.points) {
 +    color c = 0;
 +    c = blendColor(c, lx.hsb(360*HueT.getValuef(), 100*SatT.getValuef(), 100*BriT.getValuef()), ADD);
 +    colors[p.index]= c;
 +  }
 +   int now= millis();
 +   if (now % 1000 <= 20)
 +   {
 +   println("Hue: " + 360*HueT.getValuef() + "Sat: " + 100*SatT.getValuef() + "Bright:  " + 100*BriT.getValuef());
 +   }
 +  }
 +
 + }
diff --cc MarkSlee.pde
Simple merge
diff --cc SugarCubes.pde
Simple merge
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..e98998022b5a75b5017e5463ef32d6cf907ae0ab
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,148 @@@
++/**
++ *           +-+-+-+-+-+               +-+-+-+-+-+
++ *          /         /|               |\         \
++ *         /         / +               + \         \
++ *        +-+-+-+-+-+  |   +-+-+-+-+   |  +-+-+-+-+-+
++ *        |         |  +  /         \  +  |         |
++ *        +   THE   + /  /           \  \ +  CUBES  +
++ *        |         |/  +-+-+-+-+-+-+-+  \|         |
++ *        +-+-+-+-+-+   |             |   +-+-+-+-+-+
++ *                      +             +
++ *                      |    SUGAR    |
++ *                      +             +
++ *                      |             |
++ *                      +-+-+-+-+-+-+-+
++ *
++ * Welcome to the Sugar Cubes! This Processing sketch is a fun place to build
++ * animations, effects, and interactions for the platform. Most of the icky
++ * code guts are embedded in the GLucose library extension. If you're an
++ * artist, you shouldn't need to worry about any of that.
++ *
++ * Below, you will find definitions of the Patterns, Effects, and Interactions.
++ * If you're an artist, create a new tab in the Processing environment with
++ * your name. Implement your classes there, and add them to the list below.
++ */ 
++
++LXPattern[] patterns(GLucose glucose) {
++  return new LXPattern[] {
++
++<<<<<<< HEAD
++    new SineSphere(glucose),
++    new CubeCurl(glucose),
++=======
++>>>>>>> b8bb27489db7dc687bf150576e9d9439f1fa17a6
++    // Slee
++    new Cathedrals(glucose),
++    new MidiMusic(glucose),
++    new Pulley(glucose),
++    new Swarm(glucose),
++    new ViolinWave(glucose),
++    new BouncyBalls(glucose),
++    new SpaceTime(glucose),
++    new ShiftingPlane(glucose),
++    new AskewPlanes(glucose),
++    new Blinders(glucose),
++    new CrossSections(glucose),
++    new Psychedelia(glucose),
++    
++    new Traktor(glucose).setEligible(false),
++    new BassPod(glucose).setEligible(false),
++    new CubeEQ(glucose).setEligible(false),
++    new PianoKeyPattern(glucose).setEligible(false),
++
++    // DanH
++    new Noise(glucose),
++    new Play (glucose),
++    new Pong (glucose),
++    new Worms(glucose),
++
++    // Alex G
++     
++
++    // Shaheen
++    new HelixPattern(glucose).setEligible(false),
++    
++    // Toby
++    new GlitchPlasma(glucose),
++    new FireEffect(glucose).setEligible(false),
++    new StripBounce(glucose),
++    new SoundRain(glucose).setEligible(false),
++    new SoundSpikes(glucose).setEligible(false),
++    new FaceSync(glucose),
++
++    // Jack
++    new Swim(glucose),
++    new Balance(glucose),
++
++    // Tim
++    new TimPlanes(glucose),
++    new TimPinwheels(glucose),
++    new TimRaindrops(glucose),
++    new TimCubes(glucose),
++    // new TimTrace(glucose),
++    new TimSpheres(glucose),
++
++    // Ben
++    // new Sandbox(glucose),
++    new TowerParams(glucose),
++    new DriveableCrossSections(glucose),
++    new GranimTestPattern2(glucose),
++    
++    //JR
++    new Gimbal(glucose),
++    
++    // Sam
++    new JazzRainbow(glucose),
++    
++    // Arjun
++    new TelevisionStatic(glucose),
++    new AbstractPainting(glucose),
++    new Spirality(glucose),
++
++    // Basic test patterns for reference, not art    
++    new TestCubePattern(glucose),
++    new TestTowerPattern(glucose),
++    new TestProjectionPattern(glucose),
++    new TestStripPattern(glucose),
++    new TestBassMapping(glucose),
++    new TestFloorMapping(glucose),
++    new TestSpeakerMapping(glucose),    
++    // new TestHuePattern(glucose),
++    // new TestXPattern(glucose),
++    // new TestYPattern(glucose),
++    // new TestZPattern(glucose),
++
++  };
++}
++
++LXTransition[] transitions(GLucose glucose) {
++  return new LXTransition[] {
++    new DissolveTransition(lx),
++    new AddTransition(glucose),
++    new MultiplyTransition(glucose),
++    new OverlayTransition(glucose),
++    new DodgeTransition(glucose),
++    new SwipeTransition(glucose),
++    new FadeTransition(lx),
++//  new SubtractTransition(glucose),  // similar to multiply - dh
++//  new BurnTransition(glucose),              // similar to multiply - dh
++//  new ScreenTransition(glucose),            // same as add -dh
++//  new SoftLightTransition(glucose), // same as overlay -dh
++  };
++}
++
++// Handles to globally triggerable effects 
++class Effects {
++  FlashEffect flash = new FlashEffect(lx);
++  BoomEffect boom = new BoomEffect(glucose);
++  BlurEffect blur = new BlurEffect(glucose);
++  QuantizeEffect quantize = new QuantizeEffect(glucose);
++  ColorFuckerEffect colorFucker = new ColorFuckerEffect(glucose);
++  
++  Effects() {
++    blur.enable();
++    quantize.enable();
++    colorFucker.enable();
++  }
++}
++
diff --cc _Internals.pde
Simple merge
diff --cc _Mappings.pde
Simple merge