Takashi Asano
/
linearMirrorMotion1017
sotsuron
Fork of linearMirrorMotion1017 by
Diff: renderclass.cpp
- Revision:
- 26:74ecbf9985e1
- Parent:
- 25:423050363215
- Child:
- 27:38bc8dc67dab
--- a/renderclass.cpp Wed Jul 03 07:43:48 2013 +0000 +++ b/renderclass.cpp Mon Jul 22 08:09:18 2013 +0000 @@ -9,15 +9,15 @@ inline void render::shearing(point2dl& dataBefore) { - dataBefore.x = dataBefore.x/4.0 - vx * speedTimer.read_us()/100; //2000000;//dataBefore.x - speed *speedTimer.read_us()/1000000 ;//- speed * cos(angle+PI/2)*speedTimer.read_us()/800; - dataBefore.y = dataBefore.y/4.0 - vy * speedTimer.read_us()/2000000;//dataBefore.y ;//- speed * sin(angle+PI/2)*speedTimer.read_us()/800; + dataBefore.x = -dataBefore.x/2.0 - 5.0*intvx; //vx * speedTimer.read_us()*10; //2000000;//dataBefore.x - speed *speedTimer.read_us()/1000000 ;//- speed * cos(angle+PI/2)*speedTimer.read_us()/800; + dataBefore.y = dataBefore.y/2.0 - 5.0*intvy; //vy * speedTimer.read_us()*10;//dataBefore.y ;//- speed * sin(angle+PI/2)*speedTimer.read_us()/800; } inline void render::rotation(point2dl& dataBefore) { int x=dataBefore.x; - dataBefore.x = x;//x + abs((int)angle) % (2 * (CENTER_AD_MIRROR_X-200)) - CENTER_AD_MIRROR_X+200;//x + (CENTER_AD_MIRROR_X-200) * cos(angle);//radious * cos(angle) + sin(angle)*x - cos(angle)*dataBefore.y;// - dataBefore.y = -dataBefore.y;//radious * sin(angle) - cos(angle)*x - sin(angle)*dataBefore.y;// + dataBefore.x = cos(angle)*x - sin(angle)*dataBefore.y;// + dataBefore.y = sin(angle)*x + cos(angle)*dataBefore.y; } //---------------------------------------------------------------------------------- @@ -27,6 +27,8 @@ speedTimer.start(); renderTimer.attach_us(this, &render::draw,RENDER_INTERVAL); pc.printf("render started!\n"); + pc.printf("int : %f, %f, v :, %f,%f, " , intvx , intvy , vx , vy); + } void render::stopRender() @@ -38,7 +40,8 @@ void render::setRender(vector<letter> *p) { translated.clear(); - + radious = 200; + ptext = p; pc.printf("Size of text to render: %d/n", (*ptext).size() ); //for(int i=0; i!=(*ptext).size(); i++){ @@ -48,7 +51,7 @@ for(int i=0; i<(*itr).letpoints.size(); i++) { point2dl tranPoint; tranPoint.x=itr->letpoints[i].x+560*count; - tranPoint.y=itr->letpoints[i].y; + tranPoint.y=-itr->letpoints[i].y; tranPoint.laserSwitch=itr->letpoints[i].laserSwitch; translatedLetter.letpoints.push_back(tranPoint); @@ -69,40 +72,51 @@ } -void render::updateSpeed(float gspeed, float gangle, float vvx, float vvy) +void render::updateSpeed(float vvx, float vvy) { - speed = gspeed; - angle = gangle; + vx = vvx; + vy = vvy; + + //intvx += RENDER_INTERVAL*vx; + //intvy += RENDER_INTERVAL*vy; + + angle= 0;//(1/9.0)*PI ;//+0.3* atan( vy / vx ) * 0.7*angle; atan2 +} - vx = vvx;//gspeed * radious * cos(angle+PI/2); - vy = vvy;//gspeed * radious * sin(angle+PI/2); - - - //speed=sqrt(vx*vx+vy*vy);//*factorSpeed; - //angle=atan2(vy,vx); -} void render::draw() { - if(firstPointCounter == 0){ + /* + if(firstPointCounter < 3){ + + IO.writeOutXY(CENTER_AD_MIRROR_X, CENTER_AD_MIRROR_Y); if(laserColor % 2 == 0) IO.setRedPower(translated[currentLetters].letpoints[currentPoints].laserSwitch); if(laserColor % 3 == 0) IO.setGreenPower(translated[currentLetters].letpoints[currentPoints].laserSwitch); - firstPointCounter = 1; + + firstPointCounter+=1; } else{ IO.setRedPower(0); IO.setGreenPower(0); - firstPointCounter = 0 + firstPointCounter = 0; } - /* - if(translated.size()>0) { + */ + + + //if(abs(vx)<0.001 || abs(vy) < 0.001)startSwitch = 1; + + if(translated.size()>0 && startSwitch == 1) { switch(rendererState) { case NORMAL_POINT: + intvx += speedTimer.read_us()*vx; + intvy += speedTimer.read_us()*vy; + speedTimer.reset(); + point2dl drawPoint=translated[currentLetters].letpoints[currentPoints]; transform(drawPoint); // transform it with the current speed and angle IO.writeOutXY(CENTER_AD_MIRROR_X + (int)drawPoint.x , CENTER_AD_MIRROR_Y + (int)drawPoint.y); @@ -133,13 +147,18 @@ currentLetters++; if(currentLetters >= translated.size()) { currentLetters = 0; - speedTimer.reset(); + startSwitch=0; + intvx = intvy =0; + + } rendererState=FIRST_POINT; + } break; case FIRST_POINT: + if (firstPointCounter<WAITING_FIRST) { firstPointCounter++; @@ -147,6 +166,9 @@ point2dl drawPoint=translated[currentLetters].letpoints[0]; transform(drawPoint); // transform it with the current speed and angle IO.writeOutXY(CENTER_AD_MIRROR_X + (int)drawPoint.x , CENTER_AD_MIRROR_Y + (int)drawPoint.y); + speedTimer.reset(); + + //IO.setRedPower(translated[currentLetters].letpoints[currentPoints].laserSwitch); } else { @@ -157,7 +179,7 @@ break; } } - */ + } void render::transform(point2dl& mypoint) {