1 #include "BGMesh.h"
2 #include "BGVertex.h"
3 #ifdef WIN32
4 #include <direct.h>
5 #else
6 #include <unistd.h>
7 #endif
8 #include <stdio.h>
9 
10 void BGTriangleMesh::
initialize(std::vector<GeometryNode * > & nds,std::vector<GeometryEdge * > & eds)11 initialize(std::vector< GeometryNode* >& nds, std::vector< GeometryEdge* >& eds)
12 {
13 	initialized = true;
14 
15 	nodes = nds;
16 
17 	int i;
18 	int len = nodes.size();
19 
20 	for( i = 0; i < len; ++i )
21 	{
22 		border.push_back( nodes[i] );
23 	}
24 
25 	makeWorld();
26 
27 	len = border.size();
28 	int *indirect = new int[len];
29 	for( i = 0; i < len; ++i)
30 	{
31 		indirect[i] = i;
32 	}
33 	std::random_shuffle(indirect, indirect + len);
34 
35 	for( i = 0; i < len; ++i)
36 	{
37 		int ind = indirect[i];
38 		Vertex *vtx = root->firstAcceptableFound( border[ind]->x, border[ind]->y);
39 		addSite( vtx, border[ind], true );
40 		GeometryNode *nd = static_cast<GeometryNode *>( border[ind] );
41 		recycle();
42 	}
43 
44 	delete [] indirect;
45 
46 	// We have to set deltas for the BGVertices and compute the interpolation parameters
47 	std::list< Vertex* >::iterator vxIt;
48 	for( vxIt = allVertices.begin(); vxIt != allVertices.end(); ++vxIt )
49 	{
50 		BGVertex *vtx = static_cast< BGVertex * >(*vxIt);
51 		if( !(vtx->isDeleted()) )
52 		{
53 			vtx->initInterpolation( );
54 		}
55 	}
56 	dump();
57 }
58 
59 void BGTriangleMesh::
getVertices(std::vector<Vertex * > & v,const int count)60 getVertices( std::vector< Vertex * >& v, const int count )
61 {
62 	int i;
63 	for( i = 0; i < count; ++i )
64 	{
65 		if( vertexStore.empty() ) break;
66 		v.push_back( vertexStore.back() );
67 		vertexStore.pop_back();
68 	}
69 	for( ; i < count; ++i )
70 	{
71 		BGVertex *vtx = new BGVertex;
72 		v.push_back( vtx );
73 		allVertices.push_back( vtx );
74 	}
75 }
76 
77 double BGTriangleMesh::
interpolate(const double ix,const double iy)78 interpolate( const double ix, const double iy )
79 {
80 	BGVertex *vtx = static_cast< BGVertex * >( root );
81 	return vtx->interpolate( ix, iy );
82 }
83 
84 void blm_error(const char* msg, const char *opt = "");
85 
86 void BGTriangleMesh::
dump()87 dump()
88 {
89 }
90