ELEC2645 (2018/19) / Mbed 2 deprecated el17cd

Dependencies:   mbed

Revision:
12:b69657862610
Parent:
11:2cd6341136ca
Child:
13:f4de03202477
diff -r 2cd6341136ca -r b69657862610 Rasturizer/Rasturizer.cpp
--- a/Rasturizer/Rasturizer.cpp	Sun Mar 24 12:31:38 2019 +0000
+++ b/Rasturizer/Rasturizer.cpp	Sun Mar 24 16:59:48 2019 +0000
@@ -3,16 +3,18 @@
 
 N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);
 
+Serial pc(USBTX, USBRX); // tx, rx
 
 Rasturizer::Rasturizer(){
     lcd.init();
 }
 
 void Rasturizer::drawHorizon(double angle){
+
     lcd.drawLine(0,
-             21,
+             21-rint(angle*50),
              84,
-             21,
+             21+rint(angle*50),
              1);/*
     double floorPoints[14][3] = {{-120,5, 5}, {-120,0, 1000}, {-80,5, 5}, {-80,0, 1000}, {-40,5, 5}, {-40,0, 1000}, {0,5, 5}, {0,0, 1000}, {40,5, 5}, {40,0, 1000}, {80,5, 5}, {80,0, 1000}, {120,5, 5}, {120,0, 1000}};//{-10,20, 10}, {-10,0, 100}, {0,20, 10}, {0,0, 100}, {10,20, 10}, {10,0, 100}, {20,20, 10}, {20,0, 100},{30,20, 10}, {30,0, 100}};
     for(int i = 0; i < 14; i += 2){
@@ -38,19 +40,23 @@
     }
     
     
-    if (points[0][2] > 10 || points[1][2] > 10 || points[2][2] > 10|| points[3][2] > 10){
+    if (points[0][2] > 20 || points[1][2] > 20 || points[2][2] > 20|| points[3][2] > 20){
         
-        int diffX1 = points[0][0]-points[1][0];
-        int diffY1 = points[0][1]-points[1][1];
-        int diffX2 = points[2][0]-points[3][0];
-        int diffY2 = points[2][1]-points[3][1];
+        int diffX1 = points[0][0]*(40/points[0][2])-(points[1][0]*(40/points[1][2]));
+        int diffY1 = points[0][1]*(40/points[0][2])-(points[1][1]*(40/points[1][2]));
+        int diffX2 = points[2][0]*(40/points[2][2])-(points[3][0]*(40/points[3][2]));
+        int diffY2 = points[2][1]*(40/points[2][2])-(points[3][1]*(40/points[3][2]));
         
         double step = (double)diffY2/(double)diffX2;
         double stepSmall1 = (double)diffX1/(double)diffX2;
         double stepSmall2 = (double)diffY1/(double)diffX2;
+        pc.printf("%d\n", diffX2);
         
-        for(int s = 0; s<= abs(diffX2)-1; s++){
-            lcd.drawLine(rint((points[0][0]-stepSmall1*s)*(40/points[0][2]))+42, rint((points[0][1]-stepSmall2*s)*(40/points[0][2]))+21,rint((points[3][0]+s)*(40/points[3][2]))+42, rint((points[3][1]+step*s)*(40/points[3][2]))+21, 0);
+        for(int s = 0; s< abs(diffX2); s++){
+            lcd.drawLine(rint((points[0][0])*(40/points[0][2])-stepSmall1*s)+42,
+             rint((points[0][1])*(40/points[0][2])-stepSmall2*s)+21,
+             rint((points[3][0])*(40/points[3][2])+s)+42, 
+             rint((points[3][1])*(40/points[3][2])+step*s)+21, 0);
         }
         
         for (int i = 0; i < 3; i++){