Merge branch 'master' of https://github.com/sugarcubes/SugarCubes
authorAlexander Green <alexandergreen22@gmail.com>
Fri, 18 Oct 2013 04:19:04 +0000 (00:19 -0400)
committerAlexander Green <alexandergreen22@gmail.com>
Fri, 18 Oct 2013 04:19:04 +0000 (00:19 -0400)
Conflicts:
_Mappings.pde

AlexGreen.pde
SugarCubes.pde
_Mappings.pde

index 6ee9a393f5fa00621d2516bf15aca1b8985d5868..e240f7db9d08bf65ad69f76d6c2fd14734c9084c 100644 (file)
@@ -96,7 +96,7 @@ final Sphery[] spherys;
   SineSphere(GLucose glucose) 
   {
     super(glucose);
-    //Sshape = addPick("Shape", 0, 1);
+    //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),
@@ -171,6 +171,93 @@ final Sphery[] spherys;
         
   }
 
+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(centerofcube(i));
+  
+} 
+
+}
+//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" + cubeangle.x + "raw y" + cubeangle.y + "raw z" + cubeangle.z);
+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, 0, cos(c.rz)*CW/2 + sin(c.rz)*CW/2);
+ // nCos*(y-o.y) - nSin*(z-o.z) + o.y
+cubecenter = PVector.add(cubecenter, 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 ){
+//  // 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){
+//   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: 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);
index 84a311a54675ba2a00c36c2283a41a0fe36b1e50..893152f31148221424950f696c5cad306abb4f04 100644 (file)
@@ -26,7 +26,9 @@
 LXPattern[] patterns(GLucose glucose) {
   return new LXPattern[] {
 
-    
+    new SineSphere(glucose),
+     new CubeCurl(glucose),
+
     // Slee
     // new MidiMusic(glucose),
     new Pulley(glucose),
@@ -52,8 +54,7 @@ LXPattern[] patterns(GLucose glucose) {
     new Worms(glucose),
 
     // Alex G
-    new SineSphere(glucose),
-
+   
     // Shaheen
     new HelixPattern(glucose).setEligible(false),
     
index 9ff78ba00a37f45aa3afbbc76e0734eb3abaee8f..a16c46737870165bc69a06840bcf4089463476c1 100644 (file)
@@ -24,6 +24,8 @@ public Model buildModel() {
   // Utility value if you need the height of a cube shorthand
   final float CH = Cube.EDGE_HEIGHT;
   final float CW = Cube.EDGE_WIDTH ;
+
+  
   
   // Positions for the bass box
   final float BBY = BassBox.EDGE_HEIGHT + BoothFloor.PLEXI_WIDTH;
@@ -54,7 +56,8 @@ public Model buildModel() {
   // Single cubes can be constructed directly here if you need them
   Cube[] singleCubes = new Cube[] {
     // new Cube(15, int( Cube.EDGE_HEIGHT), 39, 0, 10, 0,  WRL),     // Back left channel behind speaker
-    // new Cube(x, y, z, rx, ry, rz, wiring),
+     //new Cube(x, y, z, rx, ry, rz, wiring),
+    new Cube(0,0,0,0,-135,0, WRR),
   };
 
   // The bass box!
@@ -77,7 +80,7 @@ public Model buildModel() {
                  (i+1)*CW,                                                             // x
                  (i % 2 == 0) ? 0 : CH * 2./3.         ,   // y
                 - ((i % 2 == 0) ? 0 : 11) + 97         ,   // z
-                -135, (i % 2 == 0) ? MaxCubeHeight : MaxCubeHeight-1));         // num cubes
+                -135, (i % 2 == 0) ? MaxCubeHeight : MaxCubeHeight-1) );        // num cubes
        
        ArrayList<Cube> dcubes = new ArrayList<Cube>();
        for (int i=1; i<6; i++) {
@@ -107,16 +110,16 @@ public Model buildModel() {
     towerList.add(new Tower(tower));
   }
 
-  for (StaggeredTower st : scubes) {
+  
+  for (Cube cube : singleCubes) cubes[cubeIndex++] = cube;
+  for (Cube cube : dcubes)             cubes[cubeIndex++] = cube;
+for (StaggeredTower st : scubes) {
     tower = new ArrayList<Cube>();
     for (int i=0; i < st.n; i++)
       tower.add(cubes[cubeIndex++] = new Cube(st.x, st.y + CH* 4/3.*i, st.z, 0, st.r, 0, WRR));
     towerList.add(new Tower(tower));
   }
 
-  for (Cube cube : singleCubes) cubes[cubeIndex++] = cube;
-  for (Cube cube : dcubes)             cubes[cubeIndex++] = cube;
-
   return new Model(towerList, cubes, bassBox, speakers);
 }
 
@@ -141,17 +144,17 @@ public PandaMapping[] buildPandaList() {
     //     new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { }),                // 30 J15 (unplugged)
     //     new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { 53, 54, 55, 72 }), // 30 J16
     // }),
-    // new PandaMapping(
-    //   "10.200.1.29", new ChannelMapping[] {
-    //     new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { }),                // 29 J3  (not connected)
-    //     new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { }),                // 29 J4  (not connected)
-    //     new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { 28, 29, 30,  2}),  // 29 J7
-    //     new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { 33, 34, 32, 31}),  // 29 J8  //XXX   
-    //     new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { }),                // 29 J13 //XX //bassbox  (not working)
-    //     new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { }),                // 29 J14 (not working)
-    //     new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { 12, 13, 14, 15 }), // 29 J15
-    //     new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] {  8,  9, 10, 11 }), // 29 J16
-    // }),    
+    new PandaMapping(
+      "10.200.1.29", new ChannelMapping[] {
+        new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { 1,2,3,4}),                // 29 J3  (not connected)
+        new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { 1,2,3,4 }),                // 29 J4  (not connected)
+        new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { 1,2,3,4}),  // 29 J7
+        new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { 1,2,3,4}),  // 29 J8  //XXX   
+        new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { 8,9,10}),                // 29 J13 //XX //bassbox  (not working)
+        new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { 8,9,10 }),                // 29 J14 (not working)
+        new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { 14,15,16,17 }), // 29 J15
+        new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] {  14,15,16,17 }), // 29 J16
+    }),    
     new PandaMapping(
       "10.200.1.28", new ChannelMapping[] {
 /*        new ChannelMapping(ChannelMapping.MODE_CUBES, new int[] { 60, 61, 62, 63 }), // 28 J3