Controllo posizione con gui completa

This commit is contained in:
2026-06-06 11:27:21 +02:00
parent 52b2a95032
commit ba5e071c6f
7 changed files with 20 additions and 44 deletions
+1 -1
View File
@@ -32,7 +32,7 @@ class PieceInterface{
rb::rigidbody body;
sf::Color color;
virtual void update(unsigned int pos) = 0;
virtual void update(sf::Clock cl) = 0;
virtual sf::Shape* draw(ReferencePlane plane) = 0;
virtual ~PieceInterface(){}
};
+3 -6
View File
@@ -14,12 +14,9 @@ class Sensore : public PieceInterface{
std::vector<std::vector<float>> gData;
std::vector<std::vector<float>> rotData;
std::vector<float> timeData;
rb::Vector3 stPos;
//in che punto sto controllando il segnale
unsigned int dataPos;
std::vector<int> dataIntvl;
unsigned int curTime;
unsigned int* dataPos;
//funzioni ausiliarie
void calcRotWithG(unsigned int index);
@@ -27,10 +24,10 @@ class Sensore : public PieceInterface{
public:
Sensore(rb::Vector3 coords, _Float16 mass);
Sensore(rb::Vector3 coords, _Float16 mass, unsigned int st, int min, int max, std::vector<std::vector<float>> data);
Sensore(rb::Vector3 coords, _Float16 mass, unsigned int* st, std::vector<std::vector<float>> data);
~Sensore();
void update(unsigned int pos) override;
void update(sf::Clock cl) override;
sf::Shape* draw(ReferencePlane plane) override;
//funzioni specifiche
+6 -29
View File
@@ -9,11 +9,9 @@ Sensore::Sensore(rb::Vector3 coords, _Float16 mass){
initialize_shapes(sensore_Dim);
}
Sensore::Sensore(rb::Vector3 coords, _Float16 mass, unsigned int st, int min, int max, std::vector<std::vector<float>> data) : Sensore(coords, mass){
Sensore::Sensore(rb::Vector3 coords, _Float16 mass, unsigned int* st, std::vector<std::vector<float>> data) : Sensore(coords, mass){
dataPos = st;
this->dataIntvl = {min, max};
initCSV(data);
curTime = 0;
}
@@ -45,27 +43,14 @@ void Sensore::initCSV(std::vector<std::vector<float>> data){
void Sensore::update(sf::Clock cl){
// Aggiorno la posizione nei dati
curTime += cl.getElapsedTime().asMilliseconds();
/*
if (timeData[dataPos]){
}
*/
/*
if (timeData[dataPos] < currTime && dataIntvl - dataPos > 0) { //aggiorno solo se ho cambiato posizione
dataPos++;
//calcolo la posizione e velocità
calcRotWithG(dataPos);
//calcolo la posizione e velocità
calcRotWithG(*dataPos);
body.setAcc(rb::Vector3{accData[dataPos]});
body.step(cl);
}
*/
body.setAcc(rb::Vector3{accData[*dataPos]});
body.step(cl);
}
sf::Shape* Sensore::draw(ReferencePlane plane){
@@ -118,13 +103,5 @@ void Sensore::calcRotWithG(unsigned int index){ // calcolo rotazione con valori
}
void Sensore::setIntervall(int min, int max){
this->dataIntvl = {min, max};
}
void Sensore::setPos(int &pos){
this->dataPos = pos;
}
/////////////// cinematica inversa