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
This commit is part of merge request !55. Comments created here will be created in the context of that merge request.
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