#include "obj3d.h" #include #include #include "vertex.h" #include "tri_vertex.h" Object3D::TriangleVertex3Iterator::TriangleVertex3Iterator(const Object3D* obj, int face_ind) : obj{obj}, face_ind{face_ind} { } Object3D::TriangleVertex3Iterator& Object3D::TriangleVertex3Iterator::operator++() { face_ind++; return *this; } Object3D::TriangleVertex3Iterator Object3D::TriangleVertex3Iterator::operator++(int) { TriangleVertex3Iterator retval = *this; ++(*this); return retval; } bool Object3D::TriangleVertex3Iterator::operator==(TriangleVertex3Iterator other) const { return obj == other.obj && face_ind == other.face_ind; } bool Object3D::TriangleVertex3Iterator::operator!=(TriangleVertex3Iterator other) const { return !(*this == other); } Object3D::TriangleVertex3Iterator::reference Object3D::TriangleVertex3Iterator::operator*() const { return { obj->pts[obj->faces[face_ind][0]], obj->pts[obj->faces[face_ind][1]], obj->pts[obj->faces[face_ind][2]] }; } Object3D::Object3D(std::vector pts, std::vector> faces) : pts{pts}, faces{faces} { } Object3D::TriangleVertex3Iterator Object3D::begin() { return Object3D::TriangleVertex3Iterator{this}; } Object3D::TriangleVertex3Iterator Object3D::end() { return Object3D::TriangleVertex3Iterator{this, static_cast(faces.size())}; }