Commit 0b5fdc0de4b7625a66ae6d21cac2f0675e2abcb1

Authored by pranathivemuri
1 parent aa57fa97

uncommented edge class that accepts stim vec of positions and std vec of radii,&…

… corrected addEdge function(push_back) for the same
Showing 1 changed file with 44 additions and 55 deletions   Show diff stats
stim/visualization/network.h
... ... @@ -5,7 +5,7 @@
5 5 #include <stim/visualization/obj.h>
6 6 #include <list>
7 7 #include <ANN/ANN.h>
8   -#include <stim/visualization/fiber.h>
  8 +#include "fiber.h"
9 9 #include <sstream>
10 10  
11 11  
... ... @@ -25,22 +25,22 @@ class network{
25 25 class edge : public fiber<T>
26 26 {
27 27 public:
28   - int n[2]; //unique id's designating the starting and ending
  28 + int Node1, Node2; //unique id's designating the starting and ending
29 29  
30 30 ///default constructor
31 31 edge() : fiber<T>()
32 32 {
33   - n[0] = -1; n[1] = -1;
  33 + Node1 = -1; Node2 = -1;
34 34 }
35 35  
36 36 ///sized costructor with two known nodes.
37   - ///@param startId: int storing idx assigned to n[0].
38   - ///@param endId: int storing idx assigned to n[1].
  37 + ///@param startId: int storing idx assigned to Node1.
  38 + ///@param endId: int storing idx assigned to Node2.
39 39 ///@param n: int for the number of points in the fiber.
40 40 edge(int startId, int endId, int n)
41 41 :fiber<T>(n)
42 42 {
43   - n[0] = startId; n[1] = endId;
  43 + Node1 = startId; Node2 = endId;
44 44 }
45 45  
46 46 ///constructor from a std::vector of stim::vecs of positions and radii.
... ... @@ -49,34 +49,34 @@ class network{
49 49 edge(std::vector< stim::vec<T> > pos, std::vector< stim::vec<T> > radii)
50 50 : fiber<T>(pos, radii)
51 51 {
52   - n[0] = -1; n[1] = -1;
  52 + Node1 = -1; Node2 = -1;
53 53 }
54 54  
55 55 ///constructor from an std::vector of stim::vecs of positions and radii as well as a known starting and ending node.
56 56 ///@param pos: Vector of stim vecs storing the positions of the fiber.
57 57 ///@param mag: Vector of stim vecs storing the radii of the fiber.
58   - ///@param id1: int storing idx assigned to n[0].
59   - ///@param id2: int storing idx assigned to n[1].
  58 + ///@param id1: int storing idx assigned to Node1.
  59 + ///@param id2: int storing idx assigned to Node2.
60 60 edge(std::vector< stim::vec<T> > pos, std::vector< stim::vec<T> > radii, int id1, int id2)
61 61 : fiber<T>(pos, radii)
62 62 {
63   - n[0] = id1; n[1] = id2;
  63 + Node1 = id1; Node2 = id2;
64 64 }
65 65  
66 66  
67   -/* edge(std::vector< stim::vec<T> > pos, std::vector<T> radii,unsigned int idx)
  67 + edge(std::vector< stim::vec<T> > pos, std::vector<T> radii)
68 68 : fiber<T>(pos, radii)
69 69 {
70   - start = -1; end = -1; id = idx;
  70 + Node1 = -1; Node2 = -1;
71 71 }
72   -*/
  72 +
73 73 ///sets the endpoints to the two int values.
74 74 ///@param int id1: index of node1.
75   - ///@param int id2: index of n[1].
  75 + ///@param int id2: index of node2.
76 76 void
77 77 setEndpoints(int id1, int id2)
78 78 {
79   - n[0] = id1; n[1] = id2;
  79 + Node1 = id1; Node2 = id2;
80 80 }
81 81  
82 82  
... ... @@ -217,7 +217,7 @@ class network{
217 217 if(startId == -1 && endId == -1)
218 218 {
219 219 //case where the edge is neither starting nor ending in a fiber.
220   - //e.i first fiber.
  220 + //i. first fiber.
221 221  
222 222 //Add two nodes to the nodes vector
223 223 V.push_back(node(pos[pos.size()-1]));
... ... @@ -258,8 +258,8 @@ class network{
258 258 //remake the edge, such that the starting point of this edge
259 259 //is the same the split point, but the end edge is the old end.
260 260 V.push_back(node(ce[ce.size()-1]));
261   - int tempNodeId = E[startId]->n[0];
262   - E[startId] = new edge(ce, cm, (V.size()-1), E[startId]->n[1]);
  261 + int tempNodeId = E[startId]->Node1;
  262 + E[startId] = new edge(ce, cm, (V.size()-1), E[startId]->Node2);
263 263 V[V.size()-1].addEdge(startId);
264 264  
265 265  
... ... @@ -281,19 +281,19 @@ class network{
281 281 V[V.size()-2].addEdge(E.size()-1);
282 282 } else {
283 283 stim::vec<T> pz = E[startId]->nearest(pos[0]);
284   - if((V[ E[startId]->n[0]].getPosition() - pz).len() <
285   - (V[E[startId]->n[1]].getPosition() - pz).len())
  284 + if((V[ E[startId]->Node1].getPosition() - pz).len() <
  285 + (V[E[startId]->Node2].getPosition() - pz).len())
286 286 {
287 287 unsigned int point = E[startId]->nearest_idx(pos[0]);
288 288 pos.insert(pos.begin(), E[startId]->nearest(pos[0]));
289 289 stim::vec<T> v(E[startId]->radius(point), E[startId]->radius(point));
290 290 radii.insert(radii.begin(), v);
291 291 V.push_back(node(pos[pos.size()-1]));
292   - edge *a = new edge(pos, radii, E[startId]->n[0], (V.size()-1));
  292 + edge *a = new edge(pos, radii, E[startId]->Node1, (V.size()-1));
293 293 E.push_back(a);
294 294  
295 295 V[V.size()-1].addEdge(E.size()-1);
296   - V[ E[startId]->n[0]].addEdge(E.size()-1);
  296 + V[ E[startId]->Node1].addEdge(E.size()-1);
297 297  
298 298 }
299 299 else
... ... @@ -303,11 +303,11 @@ class network{
303 303 stim::vec<T> v(E[startId]->radius(point), E[startId]->radius(point));
304 304 radii.insert(radii.begin(), v);
305 305 V.push_back(node(pos[pos.size()-1]));
306   - edge *a = new edge(pos, radii, E[startId]->n[1], (V.size()-1));
  306 + edge *a = new edge(pos, radii, E[startId]->Node2, (V.size()-1));
307 307 E.push_back(a);
308 308  
309 309 V[V.size()-1].addEdge(E.size()-1);
310   - V[ E[startId]->n[1]].addEdge(E.size()-1);
  310 + V[ E[startId]->Node2].addEdge(E.size()-1);
311 311 }
312 312 }
313 313 }
... ... @@ -340,8 +340,8 @@ class network{
340 340 //remake the edge, such that the ending point of this edge
341 341 //is the same as before, but the starting edge is new.
342 342 V.push_back(node(ce[ce.size()-1])); //split point.
343   - int tempNodeId = E[endId]->n[1];
344   - E[endId] = new edge(ce, cm, E[endId]->n[0], (V.size()-1));
  343 + int tempNodeId = E[endId]->Node2;
  344 + E[endId] = new edge(ce, cm, E[endId]->Node1, (V.size()-1));
345 345 V[V.size()-1].addEdge(endId);
346 346  
347 347 //add that other part of the fiber (temp[1])
... ... @@ -366,19 +366,19 @@ class network{
366 366 }
367 367 else {
368 368 stim::vec<T> pz = E[endId]->nearest(pos[0]);
369   - if((V[ E[endId]->n[0]].getPosition() - pz).len() <
370   - (V[E[endId]->n[1]].getPosition() - pz).len())
  369 + if((V[ E[endId]->Node1].getPosition() - pz).len() <
  370 + (V[E[endId]->Node2].getPosition() - pz).len())
371 371 {
372 372 unsigned int point = E[endId]->nearest_idx(pos[0]);
373 373 pos.insert(pos.begin(), E[endId]->nearest(pos[0]));
374 374 stim::vec<T> v(E[endId]->radius(point), E[endId]->radius(point));
375 375 radii.insert(radii.begin(), v);
376 376 V.push_back(node(pos[pos.size()-1]));
377   - edge *a = new edge(pos, radii, E[endId]->n[0], (V.size()-1));
  377 + edge *a = new edge(pos, radii, E[endId]->Node1, (V.size()-1));
378 378 E.push_back(a);
379 379  
380 380 V[V.size()-1].addEdge(E.size()-1);
381   - V[ E[endId]->n[0]].addEdge(E.size()-1);
  381 + V[ E[endId]->Node1].addEdge(E.size()-1);
382 382  
383 383 }
384 384 else
... ... @@ -388,11 +388,11 @@ class network{
388 388 stim::vec<T> v(E[endId]->radius(point), E[endId]->radius(point));
389 389 radii.insert(radii.begin(), v);
390 390 V.push_back(node(pos[pos.size()-1]));
391   - edge *a = new edge(pos, radii, E[endId]->n[1], (V.size()-1));
  391 + edge *a = new edge(pos, radii, E[endId]->Node2, (V.size()-1));
392 392 E.push_back(a);
393 393  
394 394 V[V.size()-1].addEdge(E.size()-1);
395   - V[ E[endId]->n[1]].addEdge(E.size()-1);
  395 + V[ E[endId]->Node2].addEdge(E.size()-1);
396 396 }
397 397 }
398 398 }
... ... @@ -431,8 +431,8 @@ class network{
431 431 // std::cout << ce.size() << std::endl;
432 432 //remake the edge, such that the starting point of this edge
433 433 //is the same as before, but the end edge is new.
434   - int tempNodeId = E[startId]->n[0];
435   - E[startId] = new edge(ce, cm, (V.size()-1), E[startId]->n[1]);
  434 + int tempNodeId = E[startId]->Node1;
  435 + E[startId] = new edge(ce, cm, (V.size()-1), E[startId]->Node2);
436 436 V[V.size()-1].addEdge(startId);
437 437  
438 438 //add the other part of the fiber (temp[1])
... ... @@ -446,19 +446,19 @@ class network{
446 446 }
447 447 else {
448 448 stim::vec<T> pz = E[endId]->nearest(pos[0]);
449   - if((V[ E[endId]->n[0]].getPosition() - pz).len() <
450   - (V[E[endId]->n[1]].getPosition() - pz).len())
  449 + if((V[ E[endId]->Node1].getPosition() - pz).len() <
  450 + (V[E[endId]->Node2].getPosition() - pz).len())
451 451 {
452 452 unsigned int point = E[endId]->nearest_idx(pos[0]);
453 453 pos.insert(pos.begin(), E[endId]->nearest(pos[0]));
454 454 stim::vec<T> v(E[endId]->radius(point), E[endId]->radius(point));
455 455 radii.insert(radii.begin(), v);
456 456 V.push_back(node(pos[pos.size()-1]));
457   - edge *a = new edge(pos, radii, E[endId]->n[0], (V.size()-1));
  457 + edge *a = new edge(pos, radii, E[endId]->Node1, (V.size()-1));
458 458 E.push_back(a);
459 459  
460 460 V[V.size()-1].addEdge(E.size()-1);
461   - V[ E[endId]->n[0]].addEdge(E.size()-1);
  461 + V[ E[endId]->Node1].addEdge(E.size()-1);
462 462  
463 463 }
464 464 else
... ... @@ -468,11 +468,11 @@ class network{
468 468 stim::vec<T> v(E[endId]->radius(point), E[endId]->radius(point));
469 469 radii.insert(radii.begin(), v);
470 470 V.push_back(node(pos[pos.size()-1]));
471   - edge *a = new edge(pos, radii, E[endId]->n[1], (V.size()-1));
  471 + edge *a = new edge(pos, radii, E[endId]->Node2, (V.size()-1));
472 472 E.push_back(a);
473 473  
474 474 V[V.size()-1].addEdge(E.size()-1);
475   - V[ E[endId]->n[1]].addEdge(E.size()-1);
  475 + V[ E[endId]->Node2].addEdge(E.size()-1);
476 476 }
477 477 }
478 478 }
... ... @@ -485,7 +485,7 @@ class network{
485 485 void
486 486 addEdge(std::vector< stim::vec<T> > pos, std::vector<T> radii)
487 487 {
488   - edge a = edge(pos,radii);
  488 + edge *a = new edge(pos,radii);
489 489 E.push_back(a);
490 490 }
491 491  
... ... @@ -534,7 +534,7 @@ class network{
534 534 nodes_to_str(int i)
535 535 {
536 536 std::stringstream ss;
537   - ss << "[from Node " << E[i].n[0] << " to " << E[i].n[1] << "]";
  537 + ss << "[from Node " << E[i].Node1 << " to " << E[i].Node2 << "]";
538 538 return ss.str();
539 539 }
540 540  
... ... @@ -552,17 +552,6 @@ class network{
552 552 ofs.close();
553 553 }
554 554  
555   - //void
556   - //to_obj()
557   - //{
558   - // std::ofstream ofs;
559   - // ofs.open("Graph.obj", std::ofstream::out | std::ofstream::app);
560   - // for(int i = 0; i < V.size(); i++)
561   - // {
562   - // ofs << V[i].edges_to_str() << "\n";
563   - // }
564   - // ofs.close();
565   - //}
566 555 ///exports the graph.
567 556 void
568 557 to_gdf()
... ... @@ -574,11 +563,11 @@ class network{
574 563 {
575 564 ofs << i << "\n";
576 565 }
577   - ofs << "edgedef>node1 VARCHAR, n[1] VARCHAR, weight INT, length FLOAT, av_radius FLOAT \n";
  566 + ofs << "edgedef>node1 VARCHAR, node2 VARCHAR, weight INT, length FLOAT, av_radius FLOAT \n";
578 567 for(int i = 0; i < E.size(); i++)
579 568 {
580 569 float len;
581   - ofs << E[i]->n[0] << "," << E[i]->n[1] << "," <<E[i]->n_pts()
  570 + ofs << E[i]->Node1 << "," << E[i]->Node2 << "," <<E[i]->n_pts()
582 571 << ","<< E[i]->length() << "," << E[i]->radius(len) << "\n";
583 572 }
584 573 ofs.close();
... ...