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 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)
{
if (trackable->getTrackableState() != TrackableState::TRACKING)
{
continue;
}
auto trackableCoordinates = trackable->getTrackablePosition();
auto trackableSize = trackable->getTrackableSize();
collectiveTrackingPoint += trackable->getTrackablePosition();
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)
{
minPoint.x = minPointX;
}
if (maxPointX > maxPoint.x)
{
maxPoint.x = maxPointX;
}
if (minPointY < minPoint.y)
{
minPoint.y = minPointY;
}
if (maxPointY > maxPoint.y)
{
maxPoint.y = maxPointY;
}
}
return collectiveTrackingPoint / (float) trackables.size();
return minPoint + (maxPoint - minPoint) / 2.f;
}
void TrackingView::processTrackableStates()