Removed weighted tracking, now just min/max
This commit is contained in:
parent
b3c129e356
commit
d085e9f54c
1 changed files with 27 additions and 7 deletions
|
@ -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()
|
||||
|
|
Loading…
Reference in a new issue