sotsuron

Fork of linearMirrorMotion1017 by Hiromasa Oku

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) {