Subversion Repositories gelsvn

Rev

Rev 362 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 362 Rev 448
1
#ifndef __HMESHUTIL_BUILD_MANIFOLD_H__
1
#ifndef __HMESH_BUILD_MANIFOLD_H__
2
#define __HMESHUTIL_BUILD_MANIFOLD_H__
2
#define __HMESH_BUILD_MANIFOLD_H__
3
 
3
 
4
#include <vector>
4
#include <vector>
5
#include "HMesh/Manifold.h"
5
#include "HMesh/Manifold.h"
6
#include "Geometry/TriMesh.h"
6
#include "Geometry/TriMesh.h"
7
 
7
 
8
namespace HMesh
8
namespace HMesh
9
{
9
{
10
 
10
 
11
  /** Build a manifold from an indexed face set. The arguments are 
11
  /** Build a manifold from an indexed face set. The arguments are 
12
      the manifold m, the number of vertices, no_vertices, the vector 
12
      the manifold m, the number of vertices, no_vertices, the vector 
13
      of vertices, vertvec, the number of faces, no_faces. facevec 
13
      of vertices, vertvec, the number of faces, no_faces. facevec 
14
      is an array where each entry indicates the number of vertices
14
      is an array where each entry indicates the number of vertices
15
      in that face. The array indices contains all the corresponding 
15
      in that face. The array indices contains all the corresponding 
16
      vertex indices in one concatenated list. touch is an optional array 
16
      vertex indices in one concatenated list. touch is an optional array 
17
      of touch values for the vertices. */
17
      of touch values for the vertices. */
18
	void build_manifold(HMesh::Manifold& m,
18
	void build_manifold(HMesh::Manifold& m,
19
			    int no_vertices,
19
			    int no_vertices,
20
			    const CGLA::Vec3f* vertvec,
20
			    const CGLA::Vec3f* vertvec,
21
			    int no_faces,
21
			    int no_faces,
22
			    const int *facevec,
22
			    const int *facevec,
23
			    const int * indices,
23
			    const int * indices,
24
			    const int * touch=0);
24
			    const int * touch=0);
25
				
25
				
26
	/// Build a manifold directly from a TriMesh.
26
	/// Build a manifold directly from a TriMesh.
27
	inline void build_manifold(HMesh::Manifold& m, const Geometry::TriMesh& mesh)
27
	inline void build_manifold(HMesh::Manifold& m, const Geometry::TriMesh& mesh)
28
	{
28
	{
29
		std::vector<int> faces(mesh.geometry.no_faces(), 3);
29
		std::vector<int> faces(mesh.geometry.no_faces(), 3);
30
		build_manifold(m, mesh.geometry.no_vertices(), 
30
		build_manifold(m, mesh.geometry.no_vertices(), 
31
						  &mesh.geometry.vertex(0), 
31
						  &mesh.geometry.vertex(0), 
32
						  faces.size(), &faces[0], 
32
						  faces.size(), &faces[0], 
33
						  reinterpret_cast<const int*>(&mesh.geometry.face(0)));
33
						  reinterpret_cast<const int*>(&mesh.geometry.face(0)));
34
	}
34
	}
35
	
35
	
36
}
36
}
37
 
37
 
38
#endif
38
#endif
39
 
39