Subversion Repositories gelsvn

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
39 bj 1
#include "TriMesh.h"
2
 
3
using namespace CGLA;
4
using namespace std;
5
 
6
namespace IMesh
7
{
8
	TriMeshData::TriMeshData():
9
		FA_NORM(-1),
10
		FA_COL(-1),
11
		VA_POS(-1),
12
		VA_NORM(-1),
13
		VA_COL(-1),
14
		VA_TEX(-1),
15
		faces_size(0),
16
		face_sets(0),
17
		face_attr(0),
18
		face_set_mapping(0),
19
		vert_attr(0) {}
20
 
21
	/** Copy constructor. This is called from the TriMesh constructor when
22
			the TriMeshBuilder creates a new TriMesh. */
23
	TriMeshData::TriMeshData(const TriMeshData& tmd):
24
		FA_NORM(tmd.FA_NORM),
25
		FA_COL(tmd.FA_COL),
26
		VA_POS(tmd.VA_POS),
27
		VA_NORM(tmd.VA_NORM),
28
		VA_COL(tmd.VA_COL),
29
		VA_TEX(tmd.VA_TEX),
30
		faces_size(tmd.faces_size),
31
		face_sets(tmd.face_sets),
32
		face_attr(tmd.face_attr),
33
		face_set_mapping(tmd.face_set_mapping),
34
		vert_attr(tmd.vert_attr) {}
35
 
36
	void TriMeshData::clear()
37
		{
38
			FA_NORM.idx = -1;
39
			FA_COL.idx = -1;
40
 
41
			VA_POS.idx = -1;
42
			VA_NORM.idx = -1;
43
			VA_COL.idx = -1;
44
			VA_TEX.idx = -1;
45
 
46
			faces_size = 0;
47
 
48
			face_sets.clear();
49
			face_attr.clear();
50
			face_set_mapping.clear();
51
			vert_attr.clear();
52
		}
53
 
54
	void TriMeshData::clean_up()
55
		{
56
			// Delete all attribute vectors.
57
			int i; // Declared here to placate a specific brain dead compiler
58
			for(i=0;i<face_sets.size(); ++i)
59
				delete face_sets[i];
60
			for(i=0;i<face_attr.size(); ++i)
61
				delete face_attr[i];
62
			for(i=0;i<vert_attr.size(); ++i)
63
				delete vert_attr[i];
64
		}
65
 
66
	void TriMesh::get_bbox(CGLA::Vec3f& p0, CGLA::Vec3f& p7) const
67
  {
68
    int i;
69
    p0 = vpos(0);
70
		p7 = vpos(0);
71
    for(i=1;i<no_vertices();i++) 
72
      {
73
				p0 = v_min(vpos(i), p0);
74
				p7 = v_max(vpos(i), p7);
75
      }
76
  }
77
 
78
  void TriMesh::get_bsphere(CGLA::Vec3f& c, float& r) const
79
  {
80
    Vec3f p0,p7;
81
    get_bbox(p0, p7);
82
    Vec3f rad = (p7 - p0)/2.0;
83
    c = p0 + rad;
84
    r = rad.length();
85
  }
86
 
87
 
88
}