RoboidControl-cpp/TrackedObject.cpp
Pascal Serrarens 28bf3b4682 Fixed issues
2024-04-08 17:26:24 +02:00

62 lines
1.7 KiB
C++

#include "TrackedObject.h"
#include <math.h>
InterestingThing::InterestingThing(Sensor *sensor, Polar position) {
this->id = 0;
this->confidence = maxConfidence;
this->sensor = sensor;
this->position = Spherical(position);
}
InterestingThing::InterestingThing(Sensor *sensor, Spherical position,
Quaternion orientation) {
this->id = 0;
this->confidence = maxConfidence;
this->sensor = sensor;
this->position = position;
this->orientation = orientation;
}
bool InterestingThing::IsTheSameAs(InterestingThing *otherObj) {
if (id != 0 && id == otherObj->id)
return true;
if (fabsf(position.distance - otherObj->position.distance) > equalityDistance)
return false;
if (fabsf(position.horizontalAngle - otherObj->position.horizontalAngle) >
equalityAngle)
return false;
if (fabsf(position.verticalAngle - otherObj->position.verticalAngle) >
equalityAngle)
return false;
return true;
}
bool InterestingThing::DegradeConfidence(float deltaTime) {
unsigned char confidenceDrop =
(unsigned char)((float)confidenceDropSpeed * deltaTime);
// Make sure the confidence always drops
if (confidenceDrop == 0)
confidenceDrop = 1;
if (confidence <= confidenceDrop) {
// object is dead
confidence = 0;
return false;
} else {
confidence -= confidenceDrop;
return true;
}
}
void InterestingThing::Refresh(Polar position) {
this->position = Spherical(position);
this->confidence = maxConfidence;
}
void InterestingThing::Refresh(Spherical position, Quaternion orientation) {
this->position = position;
this->orientation = orientation;
this->confidence = maxConfidence;
}