diff --git a/build/bin/mainV8.exe b/build/bin/mainV8.exe new file mode 100644 index 0000000..ccc34b0 Binary files /dev/null and b/build/bin/mainV8.exe differ diff --git a/src/pieces/headers/sensore.hpp b/src/pieces/headers/sensore.hpp index 99a661b..53cb173 100644 --- a/src/pieces/headers/sensore.hpp +++ b/src/pieces/headers/sensore.hpp @@ -15,6 +15,8 @@ class Sensore : public PieceInterface{ std::vector> rotData; std::vector timeData; + float gModule; + //in che punto sto controllando il segnale unsigned int* dataPos; @@ -32,8 +34,8 @@ class Sensore : public PieceInterface{ //funzioni specifiche void initCSV(std::vector> data); - void setIntervall(int min, int max); - void setPos(int &pos); + + float getZ_Acc(); }; #endif \ No newline at end of file diff --git a/src/pieces/methods/sensore_class.cpp b/src/pieces/methods/sensore_class.cpp index fe9d417..481d684 100644 --- a/src/pieces/methods/sensore_class.cpp +++ b/src/pieces/methods/sensore_class.cpp @@ -22,7 +22,7 @@ Sensore::~Sensore(){ void Sensore::initCSV(std::vector> data){ //timestamp_ns, wx, wy, wz, ax, ay, az, gx, gy, gz - if (data.size() < 1) throw "Sensor data empty"; + if (data.size() < 10) throw "Sensor data empty"; float stTime = int64_t( data[0][0] ) ; for (std::vector row : data){ @@ -37,6 +37,14 @@ void Sensore::initCSV(std::vector> data){ accData.push_back(tmpA); gData.push_back(tmpG); } + + //trovo il modulo di g facendo la media del modulo nei primi 1000 campioni + gModule = 0; + for(int i = 0; i< data.size()>1000 ? 1000 : 10; i++){ + gModule += sqrt(pow(gData[i][0],2)+pow(gData[i][1],2)+pow(gData[i][2],2)); + } + gModule = gModule / 1000; + } @@ -90,13 +98,12 @@ sf::Shape* Sensore::draw(ReferencePlane plane){ void Sensore::calcRotWithG(unsigned int index){ // calcolo rotazione con valori della gravità int dir = direction == Direction::R ? -1 : 1; std::vector grav = gData[index]; - float modG = sqrt(pow(grav[0],2)+pow(grav[1],2)+pow(grav[2],2)); //x = mod * cosX -> mod = x/cosx -> cosx = x/mod - float tmpSinX = -grav[0] / modG; - float tmpSinY = -grav[1] / modG; - float tmpSinZ = -grav[2] / modG; + float tmpSinX = -grav[0] / gModule; + float tmpSinY = -grav[1] / gModule; + float tmpSinZ = -grav[2] / gModule; float tmpAX = acos(dir*tmpSinX); float tmpAY = acos(dir*tmpSinY); @@ -106,5 +113,11 @@ void Sensore::calcRotWithG(unsigned int index){ // calcolo rotazione con valori } +float Sensore::getZ_Acc(){ + int id = *dataPos; + float tmpAcc = 0; + tmpAcc = gModule - sqrt(pow(gData[id][0],2)+pow(gData[id][1],2)+pow(gData[id][2],2)); + return tmpAcc; +} /////////////// cinematica inversa \ No newline at end of file diff --git a/src/sfml_util.cpp b/src/sfml_util.cpp index 86a3fc1..30a9cb6 100644 --- a/src/sfml_util.cpp +++ b/src/sfml_util.cpp @@ -324,6 +324,13 @@ void doGUI(State &gs) gs.selectedPlane = (ReferencePlane)currentPlane; gs.updateCollections(); } + + + /*////// DA FARE ///////*/ + + //Finestra gestione velocità di riproduzione + + //Finestra controllo sovrapposizione ImGui::End();