X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=AlexGreen.pde;h=d2220b790e2367b9578fecef68a0e223f8413464;hb=bdef287d097659a12c9573879d0e8a7e34cbdef6;hp=91677db78efd90e70327392cd6bafc857a3f4c45;hpb=bae2197a9a134bd45f983cd81ceb635d646620e3;p=SugarCubes.git diff --git a/AlexGreen.pde b/AlexGreen.pde index 91677db..d2220b7 100644 --- a/AlexGreen.pde +++ b/AlexGreen.pde @@ -1,6 +1,7 @@ -class SineSphere extends SCPattern { - private SinLFO yrot = new SinLFO(0, TWO_PI, 2000); +class SineSphere extends DPat { + private SawLFO yrot = new SawLFO(0, TWO_PI, 3000); public final Projection sinespin; + 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(); @@ -27,8 +28,8 @@ class SineSphere extends SCPattern { 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); + //addParameter(bounceamp = new BasicParameter("Amp", .5)); + //addParameter(bouncerate = new BasicParameter("Rate", .5)); //ybounce.modulateDurationBy(bouncerate); addParameter(widthparameter = new BasicParameter("Width", .1)); addParameter(huespread = new BasicParameter("Hue", .2)); @@ -42,6 +43,7 @@ class SineSphere extends SCPattern { } 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; @@ -69,11 +71,21 @@ float distfromcirclecenter(float px, float py, float pz, float f1x, float f1y, f return dist(px, py, pz, f1x, f1y, f1z); } //void updatespherey(deltaMs, ) - color spheryvalue (float px, float py, float pz , float f1xc, float f1yc, float f1zc) - { + + int quadrant(PVector q) { + //float theta = + 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); //switch(sShpape.cur() ) {} - return lx.hsb(constrain(huespread.getValuef()*5*px, 0, 360) , dist(px, py, pz, f1xc, f1yc, f1zc) , - max(0, 100 - 100*widthparameter.getValuef()*abs(dist(px, py, pz, f1xcenter, ybounce.getValuef(), f1zcenter) + return lx.hsb(constrain( huespread.getValuef()*5*quadrant(p), 0, 360) , + PVector.dist(p,circlecenter) , + max(0, 100 - 100*widthparameter.getValuef()*abs(PVector.dist(p, circlecenter) - vibration.getValuef() ) ) ); } color ellipsevalue(float px, float py, float pz , float f1xc, float f1yc, float f1zc, float f2xc, float f2yc, float f2zc) @@ -96,11 +108,13 @@ void run(double deltaMs) { final Sphery[] spherys; + SineSphere(GLucose glucose) { super(glucose); sinespin = new Projection(model); addModulator(yrot).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), @@ -130,27 +144,33 @@ final Sphery[] spherys; // } // } - void run( double deltaMs) { + public 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);] + spherys[0].run(deltaMs); + spherys[1].run(deltaMs); + spherys[2].run(deltaMs); sinespin.reset(model) - // Translate so the center of the car is the origin, offset by yPos + // 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); + - // Rotate around the origin (now the center of the car) about an X-vector - .rotate(yrot.getValuef(), 0, 1, 0); - - + //.translateCenter(model, model.cx, , model.cz); + - for (Point p: model.points){ + 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.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); + 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); colors[p.index] = lx.hsb(lx.h(c), lx.s(c), lx.b(c)); @@ -221,13 +241,13 @@ 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 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, 0, cos(c.rz)*CW/2 + sin(c.rz)*CW/2); +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(cubecenter, centerrot); +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 + " ");