Cambio posizione aggoirnamento dati (da concludere)

This commit is contained in:
2026-06-06 10:57:51 +02:00
parent 474b4e6c8c
commit 52b2a95032
7 changed files with 63 additions and 156 deletions
+1 -1
View File
@@ -32,7 +32,7 @@ class PieceInterface{
rb::rigidbody body;
sf::Color color;
virtual void update(sf::Clock cl) = 0;
virtual void update(unsigned int pos) = 0;
virtual sf::Shape* draw(ReferencePlane plane) = 0;
virtual ~PieceInterface(){}
};
+6 -4
View File
@@ -18,8 +18,8 @@ class Sensore : public PieceInterface{
//in che punto sto controllando il segnale
unsigned int dataPos;
unsigned int dataIntvl;
std::vector<int> dataIntvl;
unsigned int curTime;
//funzioni ausiliarie
void calcRotWithG(unsigned int index);
@@ -27,14 +27,16 @@ class Sensore : public PieceInterface{
public:
Sensore(rb::Vector3 coords, _Float16 mass);
Sensore(rb::Vector3 coords, _Float16 mass, unsigned int st, unsigned int dataIntvl, std::vector<std::vector<float>> data);
Sensore(rb::Vector3 coords, _Float16 mass, unsigned int st, int min, int max, std::vector<std::vector<float>> data);
~Sensore();
void update(sf::Clock cl) override;
void update(unsigned int pos) override;
sf::Shape* draw(ReferencePlane plane) override;
//funzioni specifiche
void initCSV(std::vector<std::vector<float>> data);
void setIntervall(int min, int max);
void setPos(int &pos);
};
+21 -7
View File
@@ -9,10 +9,11 @@ Sensore::Sensore(rb::Vector3 coords, _Float16 mass){
initialize_shapes(sensore_Dim);
}
Sensore::Sensore(rb::Vector3 coords, _Float16 mass, unsigned int st, unsigned int dataIntvl, std::vector<std::vector<float>> data) : Sensore(coords, mass){
Sensore::Sensore(rb::Vector3 coords, _Float16 mass, unsigned int st, int min, int max, std::vector<std::vector<float>> data) : Sensore(coords, mass){
dataPos = st;
this->dataIntvl = dataIntvl;
this->dataIntvl = {min, max};
initCSV(data);
curTime = 0;
}
@@ -35,7 +36,7 @@ void Sensore::initCSV(std::vector<std::vector<float>> data){
/////// DA CAMBIARE QUI ///////////
rotData.push_back(tmpR);
accData.push_back(tmpA);
gData.push_back(tmpG);
@@ -45,7 +46,14 @@ void Sensore::initCSV(std::vector<std::vector<float>> data){
void Sensore::update(sf::Clock cl){
// Aggiorno la posizione nei dati
int64_t currTime = cl.getElapsedTime().asMicroseconds() *100000;
curTime += cl.getElapsedTime().asMilliseconds();
/*
if (timeData[dataPos]){
}
*/
/*
if (timeData[dataPos] < currTime && dataIntvl - dataPos > 0) { //aggiorno solo se ho cambiato posizione
dataPos++;
@@ -56,6 +64,7 @@ void Sensore::update(sf::Clock cl){
body.setAcc(rb::Vector3{accData[dataPos]});
body.step(cl);
}
*/
}
@@ -108,9 +117,14 @@ void Sensore::calcRotWithG(unsigned int index){ // calcolo rotazione con valori
body.setRot(rb::Vector3{tmpAY, tmpAX, tmpAZ });
}
/*
void Sensore::calcRotWithConstraint(){
};*/
void Sensore::setIntervall(int min, int max){
this->dataIntvl = {min, max};
}
void Sensore::setPos(int &pos){
this->dataPos = pos;
}
/////////////// cinematica inversa