aboutsummaryrefslogtreecommitdiff
path: root/obj3d.h
diff options
context:
space:
mode:
authorvimene <vincent.menegaux@gmail.com>2023-11-17 13:05:22 +0100
committervimene <vincent.menegaux@gmail.com>2023-11-17 13:05:22 +0100
commit3dc7f970305480bf5c4f60c21416adfc0b8dc958 (patch)
treeb48b3d4cc153f5c88c43194eaf62475e5afe7d00 /obj3d.h
downloadengine-3dc7f970305480bf5c4f60c21416adfc0b8dc958.tar.gz
initial commit
Diffstat (limited to 'obj3d.h')
-rw-r--r--obj3d.h42
1 files changed, 42 insertions, 0 deletions
diff --git a/obj3d.h b/obj3d.h
new file mode 100644
index 0000000..b76f06d
--- /dev/null
+++ b/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