Commit 7c43b7f918f65bc3f53c22ef8972e553a51b3a63

Authored by pranathivemuri
1 parent df480014

return resampled edge as fiber

Showing 2 changed files with 12 additions and 38 deletions   Show diff stats
stim/biomodels/fiber.h
@@ -168,33 +168,6 @@ public: @@ -168,33 +168,6 @@ public:
168 gen_kdtree(); 168 gen_kdtree();
169 } 169 }
170 170
171 - ///// This constructor takes a list of points and radii  
172 - //fiber(std::list< stim::vec< T > > pos, std::list< T > radii){  
173 -  
174 - // init(pos.size()); //initialize the array size  
175 -  
176 - // //create an iterator for each list  
177 - // typename std::list< stim::vec< T > >::iterator pi = pos.begin();  
178 - // typename std::list< T >::iterator ri = radii.begin();  
179 -  
180 - // //create a counter for indexing into the fiber array  
181 - // unsigned int i = 0;  
182 -  
183 - // //for each point, set the position and radius  
184 - // for(pi = pos.begin(), ri = radii.begin(); pi != pos.end(); pi++, ri++){  
185 -  
186 - // //set the centerline position  
187 - // for(unsigned int d = 0; d < 3; d++)  
188 - // c[i][d] = (double) (*pi)[d];  
189 - //  
190 - // r[i] = *ri; //set the radius  
191 - // i++; //increment the array index  
192 - // }  
193 -  
194 - // gen_kdtree(); //generate a kd tree  
195 -  
196 - //}  
197 -  
198 /// constructor takes an array of points and radii 171 /// constructor takes an array of points and radii
199 // this function is used when the radii are represented as a stim::vec, 172 // this function is used when the radii are represented as a stim::vec,
200 // since this may be easier when importing OBJs 173 // since this may be easier when importing OBJs
@@ -488,15 +461,16 @@ public: @@ -488,15 +461,16 @@ public:
488 return get_vec(N-1); 461 return get_vec(N-1);
489 } 462 }
490 ////resample a fiber in the network 463 ////resample a fiber in the network
491 - std::vector<stim::vec<T> > Resample(std::vector< stim::vec<T> > fiberPositions, float spacing=25.0) 464 + stim::fiber<T> Resample(T spacing=25.0)
492 { 465 {
493 466
  467 +
494 std::vector<T> v(3); //v-direction vector of the segment 468 std::vector<T> v(3); //v-direction vector of the segment
495 stim::vec<T> p(3); //- intermediate point to be added 469 stim::vec<T> p(3); //- intermediate point to be added
496 std::vector<T> p1(3); // p1 - starting point of an segment on the fiber, 470 std::vector<T> p1(3); // p1 - starting point of an segment on the fiber,
497 std::vector<T> p2(3); // p2 - ending point, 471 std::vector<T> p2(3); // p2 - ending point,
498 double sum=0; //distance summation 472 double sum=0; //distance summation
499 - 473 + std::vector<stim::vec<T> > fiberPositions = centerline();
500 std::vector<stim::vec<T> > newPointList; // initialize list of new resampled points on the fiber 474 std::vector<stim::vec<T> > newPointList; // initialize list of new resampled points on the fiber
501 // for each point on the centerline (skip if it is the last point on centerline) 475 // for each point on the centerline (skip if it is the last point on centerline)
502 unsigned int N = fiberPositions.size(); // number of points on the fiber 476 unsigned int N = fiberPositions.size(); // number of points on the fiber
@@ -531,7 +505,8 @@ public: @@ -531,7 +505,8 @@ public:
531 newPointList.push_back(fiberPositions[f+1]); 505 newPointList.push_back(fiberPositions[f+1]);
532 } 506 }
533 newPointList.push_back(fiberPositions[N-1]); //add the last point on the fiber to the new fiber list 507 newPointList.push_back(fiberPositions[N-1]); //add the last point on the fiber to the new fiber list
534 - return newPointList; 508 + fiber newFiber(newPointList);
  509 + return newFiber;
535 } 510 }
536 511
537 }; 512 };
stim/biomodels/network.h
@@ -32,6 +32,8 @@ class network{ @@ -32,6 +32,8 @@ class network{
32 { 32 {
33 public: 33 public:
34 unsigned v[2]; //unique id's designating the starting and ending 34 unsigned v[2]; //unique id's designating the starting and ending
  35 + // default constructor
  36 + edge() : fiber<T>(){v[1] = -1; v[0] = -1;}
35 37
36 /// Constructor - creates an edge from a list of points by calling the stim::fiber constructor 38 /// Constructor - creates an edge from a list of points by calling the stim::fiber constructor
37 39
@@ -154,14 +156,11 @@ class network{ @@ -154,14 +156,11 @@ class network{
154 V[it_idx].e[1].push_back(E.size()); //add the current edge as incoming 156 V[it_idx].e[1].push_back(E.size()); //add the current edge as incoming
155 e.v[1] = it_idx; 157 e.v[1] = it_idx;
156 } 158 }
157 - /*lines to be added for resampling each fiber in the network class  
158 - //std::vector< stim::vec<T> > newFiberPos, fiberPos;  
159 - //fiberPos = e.centerline();  
160 - //newFiberPos = e.Resample(fiberPos);  
161 - //edge newEdge = newFiberPos;  
162 - //E.push_back(newEdge);  
163 - */  
164 - 159 + stim::fiber<T> f = e.Resample(25.0);
  160 + std::cout<<"resampled fiber length"<<std::endl;
  161 + std::cout<<f.length()<<std::endl;
  162 + std::cout<<"resampled fiber--"<<std::endl;
  163 + std::cout<<f.str()<<std::endl;
165 E.push_back(e); //push the edge to the list 164 E.push_back(e); //push the edge to the list
166 165
167 } 166 }