Add a structure representing an explicit mesh

This commit is contained in:
Théophile Bastian 2018-01-27 14:59:17 +01:00
parent 016b0e1b6d
commit 003c50443e
3 changed files with 45 additions and 0 deletions

3
Mesh.cpp Normal file
View file

@ -0,0 +1,3 @@
#include "Mesh.h"

28
Mesh.h Normal file
View file

@ -0,0 +1,28 @@
/**
* Defines a mesh, ready to be OpenGL-rendered
**/
#include <vector>
#include "common_structures.h"
class Mesh {
public:
Mesh();
/// Adds a fresh vertice at `pt`, and returns its ID for further use
size_t add_vertice(const Point& pt);
/// Creates a new face out of the three given point IDs
void add_face(const Face& face);
void add_face(size_t f1, size_t f2, size_t f3);
/// Gets the various vertices
const std::vector<Point>& get_vertices() const;
/// Gets the various faces
const std::vector<Face>& get_faces() const;
private:
std::vector<Point> vertices;
std::vector<Face> faces;
};

14
common_structures.h Normal file
View file

@ -0,0 +1,14 @@
/**
* Defines a few widely used, widely spread structures. Imported pervasively.
**/
struct Point {
double x, y, z;
};
struct Face {
int vert[3];
int operator[](unsigned i) {
return vert[i % 3]; // dodge errors
}
};