Mesh class for fast draw in OpenGL. More...
#include <MC_mesh_fast_draw.hpp>

Public Member Functions | |
| MC_mesh_fast_draw () | |
| empty constructor | |
| MC_mesh_fast_draw (const MC_connectivity_index &connectivity, const MC_v3d_vector &point_set) | |
| direct constructor from a point set and a connectivity | |
| MC_mesh_fast_draw (const MC_mesh_index_vector &mesh) | |
| direct constructor from a MC_mesh_index_vector | |
| MC_mesh_fast_draw (const MC_mesh_index_vector_draw &mesh) | |
| direct constructor from a MC_mesh_index_vector_draw | |
| ~MC_mesh_fast_draw () | |
| classical destructor | |
| const MC_double_vector & | point_set () const |
| get the point set | |
| MC_double_vector & | point_set () |
| get the point set | |
| const MC_double_vector & | color () const |
| get the color vector | |
| const MC_double_vector & | texture () const |
| get the texture vector | |
| const MC_double_vector & | normal () const |
| get the normal | |
| MC_double_vector & | normal () |
| get the normal | |
| const std::map< int, MC_int_vector > & | connectivity () const |
| get the connectivity | |
| MC_mesh_fast_draw & | set_point_set (const MC_v3d_vector &point_set) |
| set directly the point set from a v3d_vector | |
| MC_mesh_fast_draw & | set_connectivity (const MC_connectivity_index &connectivity) |
| set directly the connectivity set from a MC_connectivity | |
| MC_mesh_fast_draw & | set_color (const MC_v3d_vector &color) |
| set directly the color set from a v3d_vector of size vertex_number (per vertex) | |
| MC_mesh_fast_draw & | set_normal (const MC_v3d_vector &normal) |
| set directly the normal set from a v3d_vector of size vertex_number (per vertex) | |
| MC_mesh_fast_draw & | set_texture (const MC_v3d_vector &texture) |
| set directly the texture from a v3d_vector of size vertex_number (per vertex) | |
Private Attributes | |
| MC_double_vector | point_set_mesh |
| position vector | |
| MC_double_vector | color_mesh |
| color vector | |
| MC_double_vector | texture_mesh |
| texture vector | |
| MC_double_vector | normal_mesh |
| normal vector | |
| std::map< int, MC_int_vector > | connectivity_mesh |
| connectivity for different kind of polygons (size,connectivity) | |
Mesh class for fast draw in OpenGL.
Definition at line 40 of file MC_mesh_fast_draw.hpp.
| mesh_conv::MC_mesh_fast_draw::MC_mesh_fast_draw | ( | ) |
empty constructor
Definition at line 13 of file MC_mesh_fast_draw.cpp.
Referenced by MC_mesh_fast_draw().

| mesh_conv::MC_mesh_fast_draw::MC_mesh_fast_draw | ( | const MC_connectivity_index & | connectivity, | |
| const MC_v3d_vector & | point_set | |||
| ) |
direct constructor from a point set and a connectivity
Definition at line 16 of file MC_mesh_fast_draw.cpp.
References normal(), mesh_conv::MC_mesh_index_vector::normal_vertex(), set_connectivity(), set_normal(), set_point_set(), and mesh_conv::MC_int_vector_vector::size().
00017 { 00018 int N_large=10000; 00019 00020 int N_polygon=input_connectivity.size(); 00021 if(N_polygon>N_large) 00022 {std::cout<<"MC_mesh_fast_draw build for large mesh ..."<<std::endl;} 00023 00024 set_connectivity(input_connectivity); 00025 set_point_set(input_point_set); 00026 00027 // normal per vertex 00028 MC_v3d_vector normal = MC_mesh_index_vector::normal_vertex(input_point_set,input_connectivity); 00029 set_normal(normal); 00030 00031 }

| mesh_conv::MC_mesh_fast_draw::MC_mesh_fast_draw | ( | const MC_mesh_index_vector & | mesh | ) |
direct constructor from a MC_mesh_index_vector
Definition at line 32 of file MC_mesh_fast_draw.cpp.
References mesh_conv::MC_mesh_index_vector::connectivity(), MC_mesh_fast_draw(), and mesh_conv::MC_mesh_index_vector::point_set().
00033 {*this=MC_mesh_fast_draw(mesh.connectivity(),mesh.point_set());}

| mesh_conv::MC_mesh_fast_draw::MC_mesh_fast_draw | ( | const MC_mesh_index_vector_draw & | mesh | ) |
direct constructor from a MC_mesh_index_vector_draw
Definition at line 34 of file MC_mesh_fast_draw.cpp.
References mesh_conv::MC_mesh_index_vector_draw::color(), mesh_conv::MC_mesh_index_vector::connectivity(), mesh_conv::MC_mesh_index_vector_draw::normal(), mesh_conv::MC_mesh_index_vector::point_set(), set_color(), set_connectivity(), set_normal(), set_point_set(), set_texture(), mesh_conv::MC_v3d_vector::size(), mesh_conv::MC_int_vector_vector::size(), mesh_conv::MC_mesh_index_vector_draw::texture(), and mesh_conv::MC_mesh_index_vector::vertex_number().
00035 { 00036 int N_large=10000; 00037 00038 int N_polygon=mesh.connectivity().size(); 00039 if(N_polygon>N_large) 00040 {std::cout<<"MC_mesh_fast_draw build for large mesh ..."<<std::endl;} 00041 00042 00043 00044 set_point_set(mesh.point_set()); 00045 set_connectivity(mesh.connectivity()); 00046 if(mesh.normal().size()==mesh.vertex_number()) 00047 set_normal(mesh.normal()); 00048 else 00049 { 00050 std::cout<<"Error: mesh.normal().size()="<<mesh.normal().size()<<std::endl; 00051 std::cout<<"Error: mesh.vertex_number()="<<mesh.vertex_number()<<std::endl; 00052 std::cout<<"Error in MC_mesh_fast_draw::MC_mesh_fast_draw(const MC_mesh_index_vector_draw& mesh), should implement normal not per vertex"<<std::endl; 00053 } 00054 00055 if(mesh.color().size()==mesh.vertex_number()) 00056 set_color(mesh.color()); 00057 else{} 00058 //{std::cout<<"Error in MC_mesh_fast_draw::MC_mesh_fast_draw(const MC_mesh_index_vector_draw& mesh), should implement color not per vertex"<<std::endl;} 00059 00060 if(mesh.texture().size()!=0) 00061 set_texture(mesh.texture()); 00062 //else 00063 //{std::cout<<"Error in MC_mesh_fast_draw::MC_mesh_fast_draw(const MC_mesh_index_vector_draw& mesh), should implement texture not per vertex"<<std::endl;exit(-1);} 00064 00065 00066 if(N_polygon>N_large) 00067 {std::cout<<"MC_mesh_fast_draw build for large mesh [ok normal]"<<std::endl;} 00068 00069 }
| mesh_conv::MC_mesh_fast_draw::~MC_mesh_fast_draw | ( | ) |
| const MC_double_vector & mesh_conv::MC_mesh_fast_draw::color | ( | ) | const |
get the color vector
Definition at line 75 of file MC_mesh_fast_draw.cpp.
References color_mesh.
Referenced by mesh_conv::MC_opengl_drawer::draw().
00075 {return color_mesh;}

| const std::map< int, MC_int_vector > & mesh_conv::MC_mesh_fast_draw::connectivity | ( | ) | const |
get the connectivity
Definition at line 71 of file MC_mesh_fast_draw.cpp.
References connectivity_mesh.
Referenced by mesh_conv::MC_opengl_drawer::draw(), and mesh_conv::MC_opengl_drawer::draw_grid().
00072 {return connectivity_mesh;}

| MC_double_vector & mesh_conv::MC_mesh_fast_draw::normal | ( | ) |
get the normal
Definition at line 78 of file MC_mesh_fast_draw.cpp.
References normal_mesh.
00078 {return normal_mesh;}
| const MC_double_vector & mesh_conv::MC_mesh_fast_draw::normal | ( | ) | const |
get the normal
Definition at line 77 of file MC_mesh_fast_draw.cpp.
References normal_mesh.
Referenced by mesh_conv::MC_opengl_drawer::draw(), and MC_mesh_fast_draw().
00077 {return normal_mesh;}

| MC_double_vector & mesh_conv::MC_mesh_fast_draw::point_set | ( | ) |
get the point set
Definition at line 74 of file MC_mesh_fast_draw.cpp.
References point_set_mesh.
00074 {return point_set_mesh;}
| const MC_double_vector & mesh_conv::MC_mesh_fast_draw::point_set | ( | ) | const |
get the point set
Definition at line 73 of file MC_mesh_fast_draw.cpp.
References point_set_mesh.
Referenced by mesh_conv::MC_opengl_drawer::draw(), and mesh_conv::MC_opengl_drawer::draw_grid().
00073 {return point_set_mesh;}

| MC_mesh_fast_draw & mesh_conv::MC_mesh_fast_draw::set_color | ( | const MC_v3d_vector & | color | ) |
set directly the color set from a v3d_vector of size vertex_number (per vertex)
Definition at line 133 of file MC_mesh_fast_draw.cpp.
References color_mesh, point_set_mesh, mesh_conv::MC_double_vector::resize(), mesh_conv::MC_double_vector::size(), and mesh_conv::MC_v3d_vector::size().
Referenced by MC_mesh_fast_draw().
00134 { 00135 00136 int N_vertex=color.size(); 00137 int N_large=10000; 00138 if(N_vertex>N_large) 00139 {std::cout<<"MC_mesh_fast_draw build color for large mesh"<<std::endl;} 00140 00141 00142 color_mesh.resize(3*N_vertex); 00143 for(int k_vertex=0;k_vertex<N_vertex;++k_vertex) 00144 for(int k_dim=0;k_dim<3;++k_dim) 00145 color_mesh[3*k_vertex+k_dim]=color[k_vertex][k_dim]; 00146 00147 if(N_vertex>N_large) 00148 {std::cout<<"MC_mesh_fast_draw build for large mesh [ok color]"<<std::endl;} 00149 00150 if(color_mesh.size()!=point_set_mesh.size()) 00151 {std::cout<<"Error in MC_mesh_fast_draw::set_color(const MC_v3d_vector& color), color has size("<<color.size()<<"), and point_set has size("<<point_set_mesh.size()/3<<")"<<std::endl;exit(-1);} 00152 return *this; 00153 }


| MC_mesh_fast_draw & mesh_conv::MC_mesh_fast_draw::set_connectivity | ( | const MC_connectivity_index & | connectivity | ) |
set directly the connectivity set from a MC_connectivity
Definition at line 101 of file MC_mesh_fast_draw.cpp.
References connectivity_mesh, and mesh_conv::MC_int_vector_vector::size().
Referenced by MC_mesh_fast_draw().
00102 { 00103 int N_large=10000; 00104 int N_polygon=input_connectivity.size(); 00105 00106 if(N_polygon>N_large) 00107 {std::cout<<"MC_mesh_fast_draw build connectivity for large mesh"<<std::endl;} 00108 00109 std::map <int,MC_int_vector> :: iterator it; 00110 // sort the connectivity depending on the size 00111 for(int k_polygon=0;k_polygon<N_polygon;++k_polygon) 00112 { 00113 int current_size=input_connectivity[k_polygon].size(); 00114 it=connectivity_mesh.find(current_size); 00115 00116 // must initialize this size 00117 if(it==connectivity_mesh.end()) 00118 { 00119 connectivity_mesh.insert(std::pair <int,MC_int_vector>(current_size,MC_int_vector())); 00120 it=connectivity_mesh.find(current_size); 00121 if(it==connectivity_mesh.end()) 00122 {std::cout<<"Error in MC_mesh_fast_draw::MC_mesh_fast_draw(connectivity,point_set), cannot create map"<<std::endl;exit(-1);} 00123 } 00124 // now add the polygon at the correct place 00125 it->second.add(input_connectivity[k_polygon]); 00126 } 00127 00128 if(N_polygon>N_large) 00129 {std::cout<<"MC_mesh_fast_draw build for large mesh [ok connectivity]"<<std::endl;} 00130 00131 return *this; 00132 }


| MC_mesh_fast_draw & mesh_conv::MC_mesh_fast_draw::set_normal | ( | const MC_v3d_vector & | normal | ) |
set directly the normal set from a v3d_vector of size vertex_number (per vertex)
Definition at line 154 of file MC_mesh_fast_draw.cpp.
References normal_mesh, point_set_mesh, mesh_conv::MC_double_vector::resize(), mesh_conv::MC_double_vector::size(), and mesh_conv::MC_v3d_vector::size().
Referenced by MC_mesh_fast_draw().
00155 { 00156 int N_vertex=normal.size(); 00157 int N_large=10000; 00158 if(N_vertex>N_large) 00159 {std::cout<<"MC_mesh_fast_draw build normal for large mesh"<<std::endl;} 00160 00161 00162 normal_mesh.resize(3*N_vertex); 00163 for(int k_vertex=0;k_vertex<N_vertex;++k_vertex) 00164 for(int k_dim=0;k_dim<3;++k_dim) 00165 normal_mesh[3*k_vertex+k_dim]=normal[k_vertex][k_dim]; 00166 00167 if(N_vertex>N_large) 00168 {std::cout<<"MC_mesh_fast_draw build for large mesh [ok normal]"<<std::endl;} 00169 00170 if(normal_mesh.size()!=point_set_mesh.size()) 00171 {std::cout<<"Error in MC_mesh_fast_draw::set_normal(const MC_v3d_vector& normal), normal has size("<<normal.size()<<"), and point_set has size("<<point_set_mesh.size()/3<<")"<<std::endl;exit(-1);} 00172 return *this; 00173 }


| MC_mesh_fast_draw & mesh_conv::MC_mesh_fast_draw::set_point_set | ( | const MC_v3d_vector & | point_set | ) |
set directly the point set from a v3d_vector
Definition at line 81 of file MC_mesh_fast_draw.cpp.
References point_set_mesh, mesh_conv::MC_double_vector::resize(), and mesh_conv::MC_v3d_vector::size().
Referenced by MC_mesh_fast_draw().
00082 { 00083 int N_large=10000; 00084 int N_vertex=point_set.size(); 00085 00086 if(N_vertex>N_large) 00087 {std::cout<<"MC_mesh_fast_draw build point_set for large mesh"<<std::endl;} 00088 00089 00090 // continuous point set 00091 point_set_mesh.resize(3*N_vertex); 00092 for(int k_vertex=0;k_vertex<N_vertex;++k_vertex) 00093 for(int k_dim=0;k_dim<3;++k_dim) 00094 point_set_mesh[3*k_vertex+k_dim]=point_set[k_vertex][k_dim]; 00095 00096 if(N_vertex>N_large) 00097 {std::cout<<"MC_mesh_fast_draw build for large mesh [ok point_set]"<<std::endl;} 00098 00099 return *this; 00100 }


| MC_mesh_fast_draw & mesh_conv::MC_mesh_fast_draw::set_texture | ( | const MC_v3d_vector & | texture | ) |
set directly the texture from a v3d_vector of size vertex_number (per vertex)
Definition at line 175 of file MC_mesh_fast_draw.cpp.
References mesh_conv::MC_double_vector::resize(), mesh_conv::MC_v3d_vector::size(), and texture_mesh.
Referenced by MC_mesh_fast_draw().
00176 { 00177 00178 int N_vertex=texture.size(); 00179 int N_large=10000; 00180 if(N_vertex>N_large) 00181 {std::cout<<"MC_mesh_fast_draw build texture for large mesh"<<std::endl;} 00182 00183 00184 texture_mesh.resize(2*N_vertex); 00185 for(int k_vertex=0;k_vertex<N_vertex;++k_vertex) 00186 for(int k_dim=0;k_dim<2;++k_dim) 00187 texture_mesh[2*k_vertex+k_dim]=texture[k_vertex][k_dim]; 00188 00189 if(N_vertex>N_large) 00190 {std::cout<<"MC_mesh_fast_draw build for large mesh [ok texture]"<<std::endl;} 00191 00192 // if(texture_mesh.size()*3!=point_set_mesh.size()*2) 00193 // {std::cout<<"Error in MC_mesh_fast_draw::set_texture(const MC_v3d_vector& color), texture has size("<<texture.size()<<"), and point_set has size("<<point_set_mesh.size()/3<<")"<<std::endl;exit(-1);} 00194 return *this; 00195 }


| const MC_double_vector & mesh_conv::MC_mesh_fast_draw::texture | ( | ) | const |
get the texture vector
Definition at line 76 of file MC_mesh_fast_draw.cpp.
References texture_mesh.
Referenced by mesh_conv::MC_opengl_drawer::draw().
00076 {return texture_mesh;}

color vector
Definition at line 110 of file MC_mesh_fast_draw.hpp.
Referenced by color(), and set_color().
std::map<int,MC_int_vector> mesh_conv::MC_mesh_fast_draw::connectivity_mesh [private] |
connectivity for different kind of polygons (size,connectivity)
Definition at line 119 of file MC_mesh_fast_draw.hpp.
Referenced by connectivity(), and set_connectivity().
normal vector
Definition at line 114 of file MC_mesh_fast_draw.hpp.
Referenced by normal(), and set_normal().
position vector
Definition at line 108 of file MC_mesh_fast_draw.hpp.
Referenced by point_set(), set_color(), set_normal(), and set_point_set().
texture vector
Definition at line 112 of file MC_mesh_fast_draw.hpp.
Referenced by set_texture(), and texture().
1.6.1