X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=AlexGreen.pde;h=910371a4c2dac3c2ea7eba695e8fe6286ea4b2f9;hb=3fa45e9e98890ed539a4b7defe50f5de39351053;hp=488d04b6fcb6bd3b0ff53f9d41e57b4a3221fe70;hpb=5096de16133c3422e8f9627dd86d1c5f103e9469;p=SugarCubes.git diff --git a/AlexGreen.pde b/AlexGreen.pde index 488d04b..910371a 100644 --- a/AlexGreen.pde +++ b/AlexGreen.pde @@ -1,6 +1,8 @@ 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)); - //PVector modelcenter = new PVector(model.xMax, model.yMax, model.zMax); Pick Sshape; class Sphery { @@ -16,6 +18,7 @@ class SineSphere extends DPat { public BasicParameter huespread; public BasicParameter bouncerate; public BasicParameter bounceamp; + public PVector circlecenter; @@ -27,11 +30,11 @@ class SineSphere extends DPat { 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)); - + addModulator( vx = new SinLFO(-4000, 10000, 100000)).trigger() ; //addModulator(xbounce = new SinLFO(model.xMax/3, 2*model.yMax/3, 2000)).trigger(); addModulator(ybounce= new SinLFO(model.yMax/3, 2*model.yMax/3, 240000./lx.tempo.bpm())).trigger(); //ybounce.modulateDurationBy @@ -42,6 +45,7 @@ class SineSphere extends DPat { } 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 +73,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) @@ -86,16 +100,23 @@ float distfromcirclecenter(float px, float py, float pz, float f1x, float f1y, f - 1.2*vibration.getValuef() ) ) ) ; } - - void run(int deltaMS) { }; +void run(double deltaMs) { + float vv = vibration.getValuef(); + float ybv = ybounce.getValuef(); + + } } 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), @@ -125,14 +146,38 @@ final Sphery[] spherys; // } // } - void StartRun(int 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 + .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); + + + //.translateCenter(model, model.cx, , model.cz); + + + 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, .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)); + + } + } @@ -142,15 +187,11 @@ final Sphery[] spherys; // spheremode++; // } - color CalcPoint(PVector Px) - { - // if (spheremode == 0 ) + // color CalcPoint(PVector Px) + // { + // // if (spheremode == 0 ) //{ - color c = 0; - c = blendColor(c, spherys[1].spheryvalue(Px.x, Px.y, Px.z, .75*model.xMax, model.yMax/2, model.zMax/2), ADD); - c = blendColor(c, spherys[0].spheryvalue(Px.x, Px.y, Px.z, model.xMax/4, model.yMax/4, model.zMax/2), ADD); - c = blendColor(c, spherys[2].spheryvalue(Px.x, Px.y, Px.z, model.xMax/2, model.yMax/2, model.zMax/2),ADD); - return c; + //} // else if (spheremode == 1) // { @@ -167,7 +208,7 @@ final Sphery[] spherys; // } - } + // } } @@ -202,13 +243,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 + " ");