aboutsummaryrefslogtreecommitdiff
path: root/src/obj3d.h
diff options
context:
space:
mode:
authorvimene <vincent.menegaux@gmail.com>2023-11-19 23:25:06 +0100
committervimene <vincent.menegaux@gmail.com>2023-11-19 23:25:06 +0100
commitc5697e42a76142c339806e1c0bc7ed15e3ace548 (patch)
treea8201bde9a3a1c4e6cf956348e5d3f7fc873221f /src/obj3d.h
parent5b8a65b15a37d9c1c97fb39db93f1b40db628d70 (diff)
downloadengine-c5697e42a76142c339806e1c0bc7ed15e3ace548.tar.gz
started switching to autotools
Diffstat (limited to 'src/obj3d.h')
-rw-r--r--src/obj3d.h42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/obj3d.h b/src/obj3d.h
new file mode 100644
index 0000000..b76f06d
--- /dev/null
+++ b/src/obj3d.h
@@ -0,0 +1,42 @@
+#ifndef OBJ3D_H
+#define OBJ3D_H
+
+#include <vector>
+#include <array>
+#include <iterator>
+#include "vertex.h"
+#include "tri_vertex.h"
+
+class Object3D {
+ public:
+ class TriangleVertex3Iterator {
+ public:
+ using iterator_category = std::input_iterator_tag;
+ using value_type = TriangleVertex3;
+ using difference_type = TriangleVertex3;
+ using pointer = const TriangleVertex3*;
+ using reference = TriangleVertex3;
+
+ explicit TriangleVertex3Iterator(const Object3D* obj, int face_ind = 0);
+ TriangleVertex3Iterator& operator++();
+ TriangleVertex3Iterator operator++(int);
+ bool operator==(TriangleVertex3Iterator other) const;
+ bool operator!=(TriangleVertex3Iterator other) const;
+ reference operator*() const;
+
+ private:
+ const Object3D* obj;
+ int face_ind;
+
+ };
+
+ Object3D(std::vector<Vertex3> pts, std::vector<std::array<int, 3>> faces);
+ TriangleVertex3Iterator begin();
+ TriangleVertex3Iterator end();
+
+ private:
+ std::vector<Vertex3> pts;
+ std::vector<std::array<int, 3>> faces;
+};
+
+#endif // OBJ3D_H