mesh_conv::MC_mesh_fast_draw Class Reference

Mesh class for fast draw in OpenGL. More...

#include <MC_mesh_fast_draw.hpp>

Collaboration diagram for mesh_conv::MC_mesh_fast_draw:
Collaboration graph
[legend]

List of all members.

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_vectorpoint_set () const
 get the point set
MC_double_vectorpoint_set ()
 get the point set
const MC_double_vectorcolor () const
 get the color vector
const MC_double_vectortexture () const
 get the texture vector
const MC_double_vectornormal () const
 get the normal
MC_double_vectornormal ()
 get the normal
const std::map< int,
MC_int_vector > & 
connectivity () const
 get the connectivity
MC_mesh_fast_drawset_point_set (const MC_v3d_vector &point_set)
 set directly the point set from a v3d_vector
MC_mesh_fast_drawset_connectivity (const MC_connectivity_index &connectivity)
 set directly the connectivity set from a MC_connectivity
MC_mesh_fast_drawset_color (const MC_v3d_vector &color)
 set directly the color set from a v3d_vector of size vertex_number (per vertex)
MC_mesh_fast_drawset_normal (const MC_v3d_vector &normal)
 set directly the normal set from a v3d_vector of size vertex_number (per vertex)
MC_mesh_fast_drawset_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_vectorconnectivity_mesh
 connectivity for different kind of polygons (size,connectivity)

Detailed Description

Mesh class for fast draw in OpenGL.

Definition at line 40 of file MC_mesh_fast_draw.hpp.


Constructor & Destructor Documentation

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().

00013 {}

Here is the caller graph for this function:

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     }

Here is the call graph for this function:

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());}

Here is the call graph for this function:

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 (  ) 

classical destructor

Definition at line 14 of file MC_mesh_fast_draw.cpp.

00014 {}


Member Function Documentation

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;}

Here is the caller graph for this function:

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;}

Here is the caller graph for this function:

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;}

Here is the caller graph for this function:

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;}

Here is the caller graph for this function:

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     }

Here is the call graph for this function:

Here is the caller graph for this function:

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     }

Here is the call graph for this function:

Here is the caller graph for this function:

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     }

Here is the call graph for this function:

Here is the caller graph for this function:

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     }

Here is the call graph for this function:

Here is the caller graph for this function:

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     }

Here is the call graph for this function:

Here is the caller graph for this function:

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;}

Here is the caller graph for this function:


Member Data Documentation

color vector

Definition at line 110 of file MC_mesh_fast_draw.hpp.

Referenced by color(), and set_color().

connectivity for different kind of polygons (size,connectivity)

Warning:
the connectivity has to be shared between position+color+texture

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().


The documentation for this class was generated from the following files:

Generated on Sun Apr 18 20:24:48 2010 by  doxygen 1.6.1