1 #ifndef AIMS_CONNECT_PATH_H 2 #define AIMS_CONNECT_PATH_H 24 _mesh(mesh), _tex(tex), _l1(label1), _l2(label2) {}
38 std::set<uint>::iterator neighIt;
40 std::set<uint> set1, set2;
41 std::set<uint> end1, end2;
42 std::set<uint>::iterator setIt, setIt2;
47 int ns=_tex[0].nItem(), i;
50 std::vector<Point3df> vert=_mesh.vertex();
53 std::cout <<
"Connecting Paths" << std::endl;
54 std::cout <<
"\tBuilding the two sets" << std::endl;
58 if (fabs((
double)(_tex[0].item(i) - _l1)) < 0.001)
60 else if (fabs((
double)(_tex[0].item(i) - _l2)) < 0.001)
64 std::cout <<
"\tFinding their extremities" << std::endl;
66 for (setIt=set1.begin(); setIt!=set1.end(); ++setIt)
68 std::set<uint> voisin=neigh[*setIt];
69 std::set<uint>::iterator vIt;
71 for (vIt=voisin.begin(); vIt!=voisin.end(); ++vIt)
72 if (set1.find(*vIt) != set1.end())
77 for (setIt=set2.begin(); setIt!=set2.end(); ++setIt)
79 std::set<uint> voisin=neigh[*setIt];
80 std::set<uint>::iterator vIt;
82 for (vIt=voisin.begin(); vIt!=voisin.end(); ++vIt)
83 if (set2.find(*vIt) != set2.end())
92 float dist, distMin=10000.0;
93 for (setIt=end1.begin(); setIt!=end1.end(); ++setIt)
94 for (setIt2=end2.begin(); setIt2!=end2.end(); ++setIt2)
96 pt1=vert[*setIt]; pt2=vert[*setIt2];
97 dist=sqrt( (pt1[0]-pt2[0])*(pt1[0]-pt2[0])
98 + (pt1[1]-pt2[1])*(pt1[1]-pt2[1])
99 + (pt1[2]-pt2[2])*(pt1[2]-pt2[2]) );
110 std::cout <<
"\tJoining them" << std::endl;
111 std::cout <<
"\t ns=" << ns << std::endl;
114 if ( (set1.find(i) != set1.end()) || (set2.find(i) != set2.end()) )
119 std::cout <<
"\tFinding actual shortest path" << std::endl;
121 std::cout <<
"\t" << ext1 <<
" -> " << ext2 << std::endl;
126 std::cout <<
"\t\t" << i << std::endl;
127 std::set<uint> voisin=neigh[i];
128 std::set<uint>::iterator vIt;
130 std::cout <<
"\t\tj=" << j << std::endl;
131 std::cout <<
"\t\tChecking out neighbours" << std::endl;
132 for (vIt=voisin.begin(); vIt!=voisin.end(); ++vIt)
134 std::cout <<
"\t\tDistance de " << *vIt <<
" à " << ext2 << std::endl;
135 dist=distance.
compute(ext2, *vIt);
136 std::cout <<
"\t\t\t" << dist << std::endl;
143 std::cout <<
"\t\tj=" << j << std::endl;
148 std::cout <<
"\tReturning texOut" << std::endl;
AIMSDATA_API AimsTimeSurface< 3, Void > AimsSurfaceTriangle
const T & item(int n) const
static std::vector< std::set< uint > > surfaceNeighbours(const AimsSurface< D, T > &surf)
float compute(uint p1, uint p2)
ConnectMeshPath(AimsSurfaceTriangle mesh, TimeTexture< T > tex, T label1, T label2)