Removed weighted tracking, now just min/max

This commit is contained in:
Maximilian Giller 2023-05-24 14:29:08 +02:00
parent b3c129e356
commit d085e9f54c

View file

@ -118,19 +118,39 @@ void TrackingView::addTrackable(ITrackable *trackable)
sf::Vector2f TrackingView::getCollectiveTrackingPoint() const sf::Vector2f TrackingView::getCollectiveTrackingPoint() const
{ {
sf::Vector2f collectiveTrackingPoint = {0, 0}; sf::Vector2f minPoint = trackables[0]->getTrackablePosition();
sf::Vector2f maxPoint = minPoint;
// Find min and max point coordinates for x and y axis over all trackables
for (auto trackable : trackables) for (auto trackable : trackables)
{ {
if (trackable->getTrackableState() != TrackableState::TRACKING) auto trackableCoordinates = trackable->getTrackablePosition();
auto trackableSize = trackable->getTrackableSize();
auto minPointX = trackableCoordinates.x - trackableSize.x / 2.f;
auto maxPointX = trackableCoordinates.x + trackableSize.x / 2.f;
auto minPointY = trackableCoordinates.y - trackableSize.y / 2.f;
auto maxPointY = trackableCoordinates.y + trackableSize.y / 2.f;
if (minPointX < minPoint.x)
{ {
continue; minPoint.x = minPointX;
}
if (maxPointX > maxPoint.x)
{
maxPoint.x = maxPointX;
}
if (minPointY < minPoint.y)
{
minPoint.y = minPointY;
}
if (maxPointY > maxPoint.y)
{
maxPoint.y = maxPointY;
}
} }
collectiveTrackingPoint += trackable->getTrackablePosition(); return minPoint + (maxPoint - minPoint) / 2.f;
}
return collectiveTrackingPoint / (float) trackables.size();
} }
void TrackingView::processTrackableStates() void TrackingView::processTrackableStates()