ELEC2645 (2018/19) / Mbed 2 deprecated el17cd

Dependencies:   mbed

Committer:
el17cd
Date:
Tue Mar 19 10:27:37 2019 +0000
Revision:
9:5915fc800824
Parent:
8:a667bc5050c1
Child:
10:07a23afd5088
Painters algorithm attempt;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
el17cd 0:efb5eec6b8ea 1 /*
el17cd 0:efb5eec6b8ea 2 ELEC2645 Embedded Systems Project
el17cd 0:efb5eec6b8ea 3 School of Electronic & Electrical Engineering
el17cd 0:efb5eec6b8ea 4 University of Leeds
el17cd 0:efb5eec6b8ea 5 Name: Christopher Doel
el17cd 0:efb5eec6b8ea 6 Username: el17cd
el17cd 0:efb5eec6b8ea 7 Student ID Number: 201146223
el17cd 0:efb5eec6b8ea 8 Date: 22/02/19
el17cd 0:efb5eec6b8ea 9 */
el17cd 0:efb5eec6b8ea 10
el17cd 0:efb5eec6b8ea 11 #include "mbed.h"
el17cd 1:044238f7bdda 12 #include <vector>
el17cd 4:759a5c34e239 13 #ifndef FACE_H
el17cd 4:759a5c34e239 14 #define FACE_H
el17cd 3:2e31dfcb712a 15 #include "Face.h"
el17cd 4:759a5c34e239 16 #endif
el17cd 4:759a5c34e239 17 #include "Rasturizer.h"
el17cd 4:759a5c34e239 18 #include "Cube.h"
el17cd 6:75031d14fc0d 19 #include "Gamepad.h"
el17cd 3:2e31dfcb712a 20
el17cd 8:a667bc5050c1 21 Serial pc(USBTX, USBRX); // tx, rx
el17cd 8:a667bc5050c1 22 Ticker ticker;
el17cd 8:a667bc5050c1 23 Gamepad gamepad;
el17cd 9:5915fc800824 24 std::vector<Cube> cubeVector;
el17cd 9:5915fc800824 25 std::vector<Face> faceVector;
el17cd 0:efb5eec6b8ea 26
el17cd 8:a667bc5050c1 27
el17cd 0:efb5eec6b8ea 28 int main()
el17cd 0:efb5eec6b8ea 29 {
el17cd 6:75031d14fc0d 30
el17cd 6:75031d14fc0d 31 gamepad.init();
el17cd 4:759a5c34e239 32 Rasturizer renderer;
el17cd 9:5915fc800824 33 for(int i = 0; i < 1; i++){
el17cd 9:5915fc800824 34 Cube cube(rand()%80-40,0,i*10,5);
el17cd 8:a667bc5050c1 35 cubeVector.push_back(cube);
el17cd 8:a667bc5050c1 36 }
el17cd 1:044238f7bdda 37 while(1) {
el17cd 4:759a5c34e239 38 renderer.clear();
el17cd 8:a667bc5050c1 39 Vector2D coord = gamepad.get_coord();
el17cd 9:5915fc800824 40 bool rotate1 = false;
el17cd 9:5915fc800824 41 if(gamepad.check_event(Gamepad::B_PRESSED) == true){
el17cd 9:5915fc800824 42 rotate1 = true;
el17cd 6:75031d14fc0d 43 }
el17cd 9:5915fc800824 44 bool rotate2 = false;
el17cd 9:5915fc800824 45 if(gamepad.check_event(Gamepad::X_PRESSED) == true){
el17cd 9:5915fc800824 46 rotate2 = true;
el17cd 7:15543cb10a14 47 }
el17cd 7:15543cb10a14 48
el17cd 8:a667bc5050c1 49 for (int c = 0; c< cubeVector.size(); c++)
el17cd 8:a667bc5050c1 50 {
el17cd 9:5915fc800824 51 if(rotate1){
el17cd 9:5915fc800824 52 cubeVector[c].rotateY(0.2);
el17cd 9:5915fc800824 53 }
el17cd 9:5915fc800824 54 if(rotate2){
el17cd 9:5915fc800824 55 cubeVector[c].rotateY(-0.2);
el17cd 9:5915fc800824 56 }
el17cd 8:a667bc5050c1 57 for (int i = 0; i < 6; i++){
el17cd 8:a667bc5050c1 58 renderer.drawFace(cubeVector[c].getFace(i));
el17cd 9:5915fc800824 59 faceVector.push_back(cubeVector[c].getFace(i));
el17cd 9:5915fc800824 60 cubeVector[c].translate(-coord.x*2,0,-coord.y*2);
el17cd 8:a667bc5050c1 61 }
el17cd 9:5915fc800824 62 }
el17cd 9:5915fc800824 63 for (int f = 0; f< faceVector.size()-1; f++){
el17cd 9:5915fc800824 64 for (int f2 = 0; f2< faceVector.size()-1; f2++){
el17cd 9:5915fc800824 65 if(faceVector[f].getAvgZ() < faceVector[f+1].getAvgZ()){
el17cd 9:5915fc800824 66 Face temp = faceVector[f+1];
el17cd 9:5915fc800824 67 faceVector[f+1] = faceVector[f];
el17cd 9:5915fc800824 68 faceVector[f] = temp;
el17cd 9:5915fc800824 69 }
el17cd 8:a667bc5050c1 70 }
el17cd 8:a667bc5050c1 71 }
el17cd 9:5915fc800824 72 for (int f = 0; f< faceVector.size() ; f++){
el17cd 9:5915fc800824 73 renderer.drawFace(faceVector[f]);
el17cd 9:5915fc800824 74 }
el17cd 9:5915fc800824 75 faceVector.clear();
el17cd 6:75031d14fc0d 76
el17cd 4:759a5c34e239 77 renderer.refresh(); // refresh the LCD so the pixels appear
el17cd 8:a667bc5050c1 78 wait_ms(1000/30); // this gives a refresh rate of 10 frames per second
el17cd 0:efb5eec6b8ea 79 }
el17cd 8:a667bc5050c1 80 }