#ifndef BOX_HPP #define BOX_HPP #include #include "Body.hpp" namespace nbody { using namespace std; class Box { friend class Node; friend class MpiSimulation; private: double min[3]; double max[3]; public: Box(); virtual ~Box(); virtual void extendToCube(); virtual void extendForBodies(vector bodies); virtual double getMin(int index); virtual double getMax(int index); virtual void setMin(int index, double value); virtual void setMax(int index, double value); virtual vector extractBodies(vector& bodies); virtual vector copyBodies(vector bodies); virtual bool isContained(Body body); virtual bool isContained(Box box); virtual double volume(); virtual double maxSidelength(); virtual bool isCorrect(); virtual void print(); virtual bool overlapsSphere(double* sphereCenter, double sphereRadius); virtual double distanceToPosition(double* position); virtual double distanceToBox(Box box); virtual vector octreeSplit(); virtual vector splitLongestSide(); }; } #endif