Program Listing for File BoundaryStrategy.h#
↰ Return to documentation for file (includes\BoundaryStrategy.h
)
#ifndef GENERALMETAPOP_BOUNDARYSTRATEGY_H
#define GENERALMETAPOP_BOUNDARYSTRATEGY_H
#include "Point.h"
class BoundaryStrategy {
public:
BoundaryStrategy(double side_x, double side_y): side_x(side_x), side_y(side_y) {};
~BoundaryStrategy() {};
virtual double distance(const Point& p1, const Point& p2) = 0;
virtual Point relative_pos(const Point &p1, const Point &p2) = 0;
protected:
double side_x;
double side_y;
};
class ToroidalBoundaryStrategy: public BoundaryStrategy {
public:
ToroidalBoundaryStrategy(double side_x, double side_y): BoundaryStrategy(side_x, side_y) {};
double distance(const Point &p1, const Point &p2) override;
Point relative_pos(const Point &p1, const Point &p2) override;
};
class EdgeBoundaryStrategy: public BoundaryStrategy {
public:
EdgeBoundaryStrategy(double side_x, double side_y): BoundaryStrategy(side_x, side_y) {};
double distance(const Point& p1, const Point& p2) override;
Point relative_pos(const Point &p1, const Point &p2) override;
};
#endif //GENERALMETAPOP_BOUNDARYSTRATEGY_H