RayMarching  0.0.1
Simple 3D engine based on a ray marching rendering
scene.h
1 #ifndef RAYMARCHING_SCENE_H
2 #define RAYMARCHING_SCENE_H
3 #include <vector>
4 #include <string>
5 #include <fstream>
6 #include <cfloat>
7 #include <utility>
8 #include <Eigen/Dense>
9 #include "models3.h"
10 
11 namespace RayMarching {
12  using shapeDist = std::pair<double, SDFObject *>;
13 
18  class Scene {
19  private:
20  std::vector<SDFObject *> _content;
21  public:
25  Scene() = default;
26 
32  Scene(SDFObject **const &items, size_t size) : _content(items, items + size) {};
33 
37  ~Scene();
38 
44  [[deprecated]] static Scene getFromFile(const std::string &filename);
45 
51  [[nodiscard]] shapeDist signedPairFunction(Eigen::Vector3d const &p) const;
52 
58  [[nodiscard]] SDFObject *signedShapeFunction(Eigen::Vector3d const &p) const;
59 
65  [[nodiscard]] double signedDistFunction(Eigen::Vector3d const &p) const;
66 
71  [[nodiscard]] size_t getShapesSize() const { return _content.size(); }
72 
79  [[nodiscard]] SDFObject *getShape(size_t index) const { return _content[index]; };
80 
85  void pushShape(SDFObject *sh) { _content.push_back(sh); };
86 
91  void destroyShape(size_t index);
92  };
93 }
94 
95 #endif //RAYMARCHING_SCENE_H
Virtual class describing abstract shapes.
Definition: models3.h:20
Scene containing all objects.
Definition: scene.h:18
double signedDistFunction(Eigen::Vector3d const &p) const
Definition: scene.cpp:53
Scene(SDFObject **const &items, size_t size)
Definition: scene.h:32
static Scene getFromFile(const std::string &filename)
Definition: scene.cpp:16
void pushShape(SDFObject *sh)
Definition: scene.h:85
~Scene()
Definition: scene.cpp:10
void destroyShape(size_t index)
Definition: scene.cpp:57
SDFObject * getShape(size_t index) const
Definition: scene.h:79
SDFObject * signedShapeFunction(Eigen::Vector3d const &p) const
Definition: scene.cpp:49
shapeDist signedPairFunction(Eigen::Vector3d const &p) const
Definition: scene.cpp:37
size_t getShapesSize() const
Definition: scene.h:71
Namespace containing all tools implemented within RayMarching package.
Definition: algebra.h:9