Skip to content
Snippets Groups Projects
Commit 8bff4cb6 authored by Timo Weberruß's avatar Timo Weberruß
Browse files

Simplify design

parent 85571bbd
No related branches found
No related tags found
2 merge requests!109Social layers,!55Draft: Implement human grouping
Showing
with 51 additions and 79 deletions
......@@ -11,18 +11,16 @@ armarx_add_component(dynamic_scene_provider
ArVizDrawer.cpp
HumanTracker.cpp
HumanGrouper.cpp
DistanceFunctionDecorator.cpp
OrientationDecorator.cpp
EuclideanDistance.cpp
OrientationDistance.cpp
HEADERS
Component.h
ArVizDrawer.h
HumanTracker.h
HumanGrouper.h
DistanceFunction.h
DistanceFunctionDecorator.h
OrientationDecorator.h
EuclideanDistance.h
OrientationDistance.h
DEPENDENCIES
# ArmarXCore
ArmarXCore
......
#pragma once
template <typename T>
class DistanceFunction
#include <armarx/navigation/human/types.h>
namespace armarx::navigation::components::dynamic_scene_provider
{
public:
DistanceFunction();
virtual double computeDistance(T& t1, T& t2) = 0;
};
using Human = armarx::navigation::human::Human;
class DistanceFunction
{
public:
DistanceFunction();
virtual ~DistanceFunction();
virtual double computeDistance(Human &h1, Human &h2) = 0;
};
}
#include "DistanceFunctionDecorator.h"
namespace armarx::navigation::components::dynamic_scene_provider
{
template<typename T>
DistanceFunctionDecorator<T>::DistanceFunctionDecorator(DistanceFunction<T> &subject)
{
this->subject = subject;
}
template<typename T>
double DistanceFunctionDecorator<T>::computeDistance(T &t1, T &t2)
{
return subject.computeDistance(t1, t2);
}
}
#include "DistanceFunction.h"
#include "EuclideanDistance.h"
#include <armarx/navigation/human/types.h>
namespace armarx::navigation::components::dynamic_scene_provider
{
using Human = armarx::navigation::human::Human;
double EuclideanDistance::computeDistance(Human &h1, Human &h2)
{
return (h1.pose.translation() - h2.pose.translation()).norm();
......
#pragma once
#include "DistanceFunction.h"
#include "armarx/navigation/human/types.h"
#pragma once
namespace armarx::navigation::components::dynamic_scene_provider
{
using Human = armarx::navigation::human::Human;
class EuclideanDistance : DistanceFunction<Human>
class EuclideanDistance : DistanceFunction
{
public:
EuclideanDistance();
EuclideanDistance(double min = 0);
double computeDistance(Human &h1, Human &h2);
};
}
#include "OrientationDecorator.h"
namespace armarx::navigation::components::dynamic_scene_provider
{
OrientationDecorator::OrientationDecorator(DistanceFunction<Human> &subject, double influenceFactor)
: DistanceFunctionDecorator<Human>(subject)
{
this->influenceFactor = influenceFactor;
}
double OrientationDecorator::computeDistance(Human &t1, Human &t2)
{
double orientationFactor = 1; // TODO: implement
return 0;
}
}
#pragma once
#include "DistanceFunctionDecorator.h"
#include <armarx/navigation/human/types.h>
namespace armarx::navigation::components::dynamic_scene_provider
{
using Human = armarx::navigation::human::Human;
class OrientationDecorator : DistanceFunctionDecorator<Human>
{
public:
OrientationDecorator(DistanceFunction<Human> &subject, double influenceFactor);
virtual double computeDistance(Human &t1, Human &t2);
private:
double influenceFactor;
};
}
#include "OrientationDistance.h"
namespace armarx::navigation::components::dynamic_scene_provider
{
OrientationDistance::OrientationDistance(double max, double min)
{
}
double OrientationDistance::computeDistance(Human &h1, Human &h2)
{
}
}
#pragma once
#include "DistanceFunction.h"
#pragma once
namespace armarx::navigation::components::dynamic_scene_provider
{
template <typename T>
class DistanceFunctionDecorator : DistanceFunction<T>
class OrientationDistance : DistanceFunction
{
public:
DistanceFunctionDecorator(DistanceFunction<T>& subject);
virtual double computeDistance(T& t1, T& t2);
private:
DistanceFunction<T> subject;
OrientationDistance(double max = 1, double min = 0);
virtual double computeDistance(Human &h1, Human &h2);
};
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment