From e0cea6008a7bdfb19012ed8f7ef1213cb553783d Mon Sep 17 00:00:00 2001 From: Mark Slee Date: Tue, 6 Aug 2013 23:35:56 -0700 Subject: [PATCH] Use the new layout code --- MarkSlee.pde | 2 +- TestPatterns.pde | 2 +- _Internals.pde | 14 ++++++-------- code/GLucose.jar | Bin 19308 -> 18529 bytes 4 files changed, 8 insertions(+), 10 deletions(-) diff --git a/MarkSlee.pde b/MarkSlee.pde index 97df3a0..1ecb640 100644 --- a/MarkSlee.pde +++ b/MarkSlee.pde @@ -335,7 +335,7 @@ public class PianoKeyPattern extends SCPattern { for (Cube c : model.cubes) { float v = max(getBase(i).getValuef() * levelf/4., getEnvelope(i++).getValuef()); setColor(c, color( - (huef + 20*v + abs(c.fx-model.xMax/2.)*.3 + c.fy) % 360, + (huef + 20*v + abs(c.cx-model.xMax/2.)*.3 + c.cy) % 360, min(100, 120*v), 100*v )); diff --git a/TestPatterns.pde b/TestPatterns.pde index 87d9ee2..d7d5625 100644 --- a/TestPatterns.pde +++ b/TestPatterns.pde @@ -112,7 +112,7 @@ class TestProjectionPattern extends SCPattern { projection.reset(model) // Translate so the center of the car is the origin, offset by yPos - .translateCenter(0, yPos.getValuef(), 0) + .translateCenter(model, 0, yPos.getValuef(), 0) // Rotate around the origin (now the center of the car) about an X-vector .rotate(angle.getValuef(), 1, 0, 0) diff --git a/_Internals.pde b/_Internals.pde index 108bec5..7dcf175 100644 --- a/_Internals.pde +++ b/_Internals.pde @@ -68,8 +68,6 @@ DebugUI debugUI; // Camera variables float eyeR, eyeA, eyeX, eyeY, eyeZ, midX, midY, midZ; -final float FEET = 12; - void setup() { startMillis = lastMillis = millis(); @@ -117,10 +115,10 @@ void setup() { logTime("Setup MIDI devices"); // Setup camera - midX = glucose.model.xMax/2 + 20; + midX = TRAILER_WIDTH/2. + 20; midY = glucose.model.yMax/2; - midZ = glucose.model.zMax/2; - eyeR = -270; + midZ = TRAILER_DEPTH/2.; + eyeR = -290; eyeA = .15; eyeY = midY + 20; eyeX = midX + eyeR*sin(eyeA); @@ -204,7 +202,7 @@ void draw() { // 2D Overlay camera(); - javax.media.opengl.GL gl= ((PGraphicsOpenGL)g).beginGL(); + javax.media.opengl.GL gl = ((PGraphicsOpenGL)g).beginGL(); gl.glClear(javax.media.opengl.GL.GL_DEPTH_BUFFER_BIT); ((PGraphicsOpenGL)g).endGL(); strokeWeight(1); @@ -228,9 +226,9 @@ void drawCube(Cube c) { void drawBox(float x, float y, float z, float rx, float ry, float rz, float xd, float yd, float zd, float sw) { pushMatrix(); translate(x, y, z); - rotate(rx, 1, 0, 0); + rotate(rx / 180. * PI, -1, 0, 0); rotate(ry / 180. * PI, 0, -1, 0); - rotate(rz, 0, 0, 1); + rotate(rz / 180. * PI, 0, 0, -1); for (int i = 0; i < 4; ++i) { float wid = (i % 2 == 0) ? xd : zd; diff --git a/code/GLucose.jar b/code/GLucose.jar index a116287a9dcda981e10b2c3dc93fca7d34ce7dc3..3410152de412b43bf83cc87f7a3032b4966d8066 100644 GIT binary patch delta 10969 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 delta 11681 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μ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 -- 2.34.1