• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Mesh.h
3  *
4  *  Created on: Apr 9, 2014
5  *      Author: edgar
6  */
7 
8 #ifndef MESH_H_
9 #define MESH_H_
10 
11 #include <iostream>
12 #include <opencv2/core/core.hpp>
13 
14 
15 // --------------------------------------------------- //
16 //                 TRIANGLE CLASS                      //
17 // --------------------------------------------------- //
18 
19 class Triangle {
20 public:
21 
22   explicit Triangle(int id, cv::Point3f V0, cv::Point3f V1, cv::Point3f V2);
23   virtual ~Triangle();
24 
getV0()25   cv::Point3f getV0() const { return v0_; }
getV1()26   cv::Point3f getV1() const { return v1_; }
getV2()27   cv::Point3f getV2() const { return v2_; }
28 
29 private:
30   /** The identifier number of the triangle */
31   int id_;
32   /** The three vertices that defines the triangle */
33   cv::Point3f v0_, v1_, v2_;
34 };
35 
36 
37 // --------------------------------------------------- //
38 //                     RAY CLASS                       //
39 // --------------------------------------------------- //
40 
41 class Ray {
42 public:
43 
44   explicit Ray(cv::Point3f P0, cv::Point3f P1);
45   virtual ~Ray();
46 
getP0()47   cv::Point3f getP0() { return p0_; }
getP1()48   cv::Point3f getP1() { return p1_; }
49 
50 private:
51   /** The two points that defines the ray */
52   cv::Point3f p0_, p1_;
53 };
54 
55 
56 // --------------------------------------------------- //
57 //                OBJECT MESH CLASS                    //
58 // --------------------------------------------------- //
59 
60 class Mesh
61 {
62 public:
63 
64   Mesh();
65   virtual ~Mesh();
66 
getTrianglesList()67   std::vector<std::vector<int> > getTrianglesList() const { return list_triangles_; }
getVertex(int pos)68   cv::Point3f getVertex(int pos) const { return list_vertex_[pos]; }
getNumVertices()69   int getNumVertices() const { return num_vertexs_; }
70 
71   void load(const std::string path_file);
72 
73 private:
74   /** The identification number of the mesh */
75   int id_;
76   /** The current number of vertices in the mesh */
77   int num_vertexs_;
78   /** The current number of triangles in the mesh */
79   int num_triangles_;
80   /* The list of triangles of the mesh */
81   std::vector<cv::Point3f> list_vertex_;
82   /* The list of triangles of the mesh */
83   std::vector<std::vector<int> > list_triangles_;
84 };
85 
86 #endif /* OBJECTMESH_H_ */
87