ELEC2645 (2018/19) / Mbed 2 deprecated el17cd

Dependencies:   mbed

Committer:
el17cd
Date:
Sat Feb 23 16:19:29 2019 +0000
Revision:
6:75031d14fc0d
Parent:
4:759a5c34e239
Child:
7:15543cb10a14
Translation of cubes working;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
el17cd 1:044238f7bdda 1 #include "mbed.h"
el17cd 1:044238f7bdda 2 #include "Rasturizer.h"
el17cd 2:a5bc7b3779f7 3
el17cd 4:759a5c34e239 4 N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);
el17cd 3:2e31dfcb712a 5
el17cd 3:2e31dfcb712a 6
el17cd 4:759a5c34e239 7 Rasturizer::Rasturizer(){
el17cd 3:2e31dfcb712a 8 lcd.init();
el17cd 4:759a5c34e239 9 }
el17cd 1:044238f7bdda 10
el17cd 4:759a5c34e239 11 void Rasturizer::drawFace(Face face){
el17cd 4:759a5c34e239 12 float points[4][3];
el17cd 4:759a5c34e239 13 for(int vertex = 0; vertex < 4; vertex++){
el17cd 4:759a5c34e239 14 for(int axis = 0; axis < 3; axis++){
el17cd 4:759a5c34e239 15 points[vertex][axis] = face.getVertexValue(vertex, axis);
el17cd 4:759a5c34e239 16 }
el17cd 4:759a5c34e239 17 }
el17cd 6:75031d14fc0d 18
el17cd 6:75031d14fc0d 19
el17cd 1:044238f7bdda 20 int diffX1 = points[0][0]-points[1][0];
el17cd 1:044238f7bdda 21 int diffY1 = points[0][1]-points[1][1];
el17cd 1:044238f7bdda 22 int diffX2 = points[2][0]-points[3][0];
el17cd 1:044238f7bdda 23 int diffY2 = points[2][1]-points[3][1];
el17cd 6:75031d14fc0d 24 /*
el17cd 1:044238f7bdda 25 if (abs(diffX1) > abs(diffX2)){
el17cd 1:044238f7bdda 26
el17cd 1:044238f7bdda 27 float step = (float)diffY1/(float)diffX1;
el17cd 1:044238f7bdda 28 float stepSmall1 = (float)diffX2/(float)diffX1;
el17cd 1:044238f7bdda 29 float stepSmall2 = (float)diffY2/(float)diffX1;
el17cd 1:044238f7bdda 30 lcd.printString("top",0,0);
el17cd 1:044238f7bdda 31 for(int s = 0; s<= abs(diffX1)-1; s++){
el17cd 6:75031d14fc0d 32 lcd.drawLine((rint(points[0][0]+s)/points[0][2]), rint((points[0][1]+step*s)/points[0][2]), rint((points[3][0]-stepSmall1*s)/points[3][2]), rint((points[3][1]-stepSmall2*s)/points[3][2]), 0);
el17cd 6:75031d14fc0d 33 lcd.drawLine((rint(points[0][0]+s+1)/points[0][2]), rint((points[0][1]+step*s)/points[0][2]), rint((points[3][0]-stepSmall1*s-1)/points[3][2]), rint((points[3][1]-stepSmall2*s)/points[3][2]), 0);
el17cd 6:75031d14fc0d 34
el17cd 6:75031d14fc0d 35 //lcd.drawLine(points[0][0]+s, rint(points[0][1]+step*s), rint(points[3][0]-stepSmall1*s), rint(points[3][1]-stepSmall2*s), 0);
el17cd 6:75031d14fc0d 36 //lcd.drawLine(points[0][0]+s+1, rint(points[0][1]+step*s), rint(points[3][0]-stepSmall1*s-1), rint(points[3][1]-stepSmall2*s), 0);
el17cd 6:75031d14fc0d 37
el17cd 1:044238f7bdda 38 }
el17cd 1:044238f7bdda 39 }
el17cd 1:044238f7bdda 40 else{
el17cd 1:044238f7bdda 41 lcd.printString("bottom",0,0);
el17cd 1:044238f7bdda 42 float step = (float)diffY2/(float)diffX2;
el17cd 1:044238f7bdda 43 float stepSmall1 = (float)diffX1/(float)diffX2;
el17cd 1:044238f7bdda 44 float stepSmall2 = (float)diffY1/(float)diffX2;
el17cd 1:044238f7bdda 45
el17cd 1:044238f7bdda 46 for(int s = 0; s<= abs(diffX2)-1; s++){
el17cd 6:75031d14fc0d 47 lcd.drawLine(rint((points[0][0]-stepSmall1*s)*(40/points[0][2])), rint((points[0][1]-stepSmall2*s)*(40/points[0][2])),rint((points[3][0]+s)*(40/points[3][2])), rint((points[3][1]+step*s)*(40/points[3][2])), 0);
el17cd 6:75031d14fc0d 48 lcd.drawLine(rint((points[0][0]-stepSmall1*s-1)*(40/points[0][2])), rint((points[0][1]-stepSmall2*s)*(40/points[0][2])),rint((points[3][0]+s+1)*(40/points[3][2])), rint((points[3][1]+step*s)*(40/points[3][2])), 0);
el17cd 1:044238f7bdda 49 }
el17cd 6:75031d14fc0d 50 }*/
el17cd 6:75031d14fc0d 51
el17cd 1:044238f7bdda 52 for (int i = 0; i < 3; i++){
el17cd 6:75031d14fc0d 53
el17cd 6:75031d14fc0d 54 lcd.drawLine(rint(points[i][0]*(40/points[i][2]))+42,
el17cd 6:75031d14fc0d 55 rint(points[i][1]*(40/points[i][2]))+21,
el17cd 6:75031d14fc0d 56 rint(points[i+1][0]*(40/points[i+1][2]))+42,
el17cd 6:75031d14fc0d 57 rint(points[i+1][1]*(40/points[i+1][2]))+21,
el17cd 1:044238f7bdda 58 1);
el17cd 6:75031d14fc0d 59
el17cd 1:044238f7bdda 60 }
el17cd 6:75031d14fc0d 61 lcd.drawLine(rint(points[0][0]*(40/points[0][2]))+42,
el17cd 6:75031d14fc0d 62 rint(points[0][1]*(40/points[0][2]))+21,
el17cd 6:75031d14fc0d 63 rint(points[3][0]*(40/points[3][2]))+42,
el17cd 6:75031d14fc0d 64 rint(points[3][1]*(40/points[3][2]))+21,
el17cd 1:044238f7bdda 65 1);
el17cd 4:759a5c34e239 66 }
el17cd 4:759a5c34e239 67 void Rasturizer::clear(){
el17cd 4:759a5c34e239 68 lcd.clear();
el17cd 4:759a5c34e239 69 }
el17cd 4:759a5c34e239 70
el17cd 4:759a5c34e239 71 void Rasturizer::refresh(){
el17cd 4:759a5c34e239 72 lcd.refresh();
el17cd 1:044238f7bdda 73 }