Commit 14b500f9c8e06a32af40f9093d94be370d3837b4

Authored by Pavel Govyadinov
1 parent 79a9bf3f

minor bug fixes

stim/gl/gl_spider.h
@@ -245,6 +245,7 @@ class gl_spider @@ -245,6 +245,7 @@ class gl_spider
245 ///uses the default m <1,1,0> 245 ///uses the default m <1,1,0>
246 void 246 void
247 genMagnitudeVectors(float delta = 0.70) 247 genMagnitudeVectors(float delta = 0.70)
  248 +// genMagnitudeVectors(float delta = 0.50)
248 { 249 {
249 250
250 //Set up the vectors necessary for Rectangle creation. 251 //Set up the vectors necessary for Rectangle creation.
@@ -725,12 +726,12 @@ class gl_spider @@ -725,12 +726,12 @@ class gl_spider
725 int 726 int
726 Step() 727 Step()
727 { 728 {
728 - // Bind(); 729 + Bind();
729 findOptimalDirection(); 730 findOptimalDirection();
730 findOptimalPosition(); 731 findOptimalPosition();
731 findOptimalScale(); 732 findOptimalScale();
732 // branchDetection(); 733 // branchDetection();
733 - // Unbind(); 734 + Unbind();
734 return current_cost; 735 return current_cost;
735 } 736 }
736 737
stim/visualization/glObj.h
1 #ifndef STIM_GLOBJ_H 1 #ifndef STIM_GLOBJ_H
2 #define STIM_GLOBJ_H 2 #define STIM_GLOBJ_H
3 3
4 -#include <stim/visualization/obj.h>  
5 #include <GL/glew.h> 4 #include <GL/glew.h>
6 #include <GL/glut.h> 5 #include <GL/glut.h>
7 #include <stim/math/vector.h> 6 #include <stim/math/vector.h>
  7 +#include <stim/visualization/obj.h>
8 8
9 9
10 namespace stim 10 namespace stim
@@ -13,23 +13,25 @@ namespace stim @@ -13,23 +13,25 @@ namespace stim
13 * Assist with the visualization the segmented vessels. 13 * Assist with the visualization the segmented vessels.
14 * Uses 14 * Uses
15 */ 15 */
16 -  
17 -class objGl : public virtual stim::obj<T> 16 +template <typename T>
  17 +class glObj : public virtual stim::obj<T>
18 { 18 {
19 private: 19 private:
20 using stim::obj<T>::L; 20 using stim::obj<T>::L;
21 using stim::obj<T>::P; 21 using stim::obj<T>::P;
22 using stim::obj<T>::F; 22 using stim::obj<T>::F;
23 - using vec<T>::size;  
24 - using vec<T>::at; 23 +// using stim::obj<T>::numL();
  24 +// using std::vector<T>::size;
  25 +// using std::vector<T>::at;
25 GLuint dList; 26 GLuint dList;
26 27
27 28
28 void 29 void
29 - init 30 + init()
30 { 31 {
31 - dList = glGenList(1); 32 + dList = glGenLists(1);
32 glListBase(dList); 33 glListBase(dList);
  34 +
33 glMatrixMode(GL_PROJECTION); 35 glMatrixMode(GL_PROJECTION);
34 glLoadIdentity; 36 glLoadIdentity;
35 glMatrixMode(GL_MODELVIEW); 37 glMatrixMode(GL_MODELVIEW);
@@ -40,15 +42,17 @@ private: @@ -40,15 +42,17 @@ private:
40 void 42 void
41 Create() 43 Create()
42 { 44 {
43 - int len = (int) numL(); 45 + int len = (int) stim::obj<T>::numL();
44 std::vector< stim::vec<float> > line; 46 std::vector< stim::vec<float> > line;
45 glNewList(dList, GL_COMPILE); 47 glNewList(dList, GL_COMPILE);
46 - glColor3f(0.5, 1.0, 0.5); 48 + // glColor3f(0.0, 1.0, 0.0);
  49 + glLineWidth(2.5);
47 for(int i = 0; i < len; i++){ 50 for(int i = 0; i < len; i++){
48 - line = getL_V(i);  
49 - glBegin(GL_LINES); 51 + line = stim::obj<T>::getL_V(i);
  52 + glColor3ub(rand()%255, rand()%255, rand()%255);
  53 + glBegin(GL_LINE_STRIP);
50 for(int j = 0; j < line.size(); j++){ 54 for(int j = 0; j < line.size(); j++){
51 - glVectex3f( 55 + glVertex3f(
52 line[j][0], 56 line[j][0],
53 line[j][1], 57 line[j][1],
54 line[j][2] 58 line[j][2]
@@ -57,16 +61,33 @@ private: @@ -57,16 +61,33 @@ private:
57 glEnd(); 61 glEnd();
58 } 62 }
59 glEndList(); 63 glEndList();
  64 + CHECK_OPENGL_ERROR
60 } 65 }
61 66
62 public: 67 public:
63 - objGl(std::string filename) 68 + glObj()
64 { 69 {
65 - stim::obj::load(filename);  
66 - glPopMatrix(); //Safety Operation to avoid changing the current matrix. 70 +
  71 + }
  72 +
  73 + void
  74 + createFromSelf()
  75 + {
  76 + // glPopMatrix();
67 init(); 77 init();
68 Create(); 78 Create();
69 - glPushMatrix(); 79 + // glPushMatrix();
  80 + }
  81 +
  82 + void
  83 + createFromFile(std::string filename)
  84 + {
  85 + stim::obj<T>::load(filename);
  86 + glPushMatrix(); //Safety Operation to avoid changing the current matrix.
  87 + init();
  88 + Create();
  89 + glPopMatrix();
  90 + CHECK_OPENGL_ERROR
70 } 91 }
71 92
72 93
@@ -74,7 +95,44 @@ public: @@ -74,7 +95,44 @@ public:
74 Render() 95 Render()
75 { 96 {
76 glCallList(dList); 97 glCallList(dList);
  98 + CHECK_OPENGL_ERROR
77 } 99 }
78 100
  101 + void
  102 + RenderLine(int i)
  103 + {
  104 + std::vector < stim::vec<T> > line;
  105 + int len = (int) stim::obj<T>::numL();
  106 + line = stim::obj<T>::getL_V(i);
  107 + glColor3f(0.5, 1.0, 0.5);
  108 + glLineWidth(3.0);
  109 + glBegin(GL_LINE_STRIP);
  110 + for(int j = 0; j < line.size(); j++){
  111 + glVertex3f(
  112 + line[j][0],
  113 + line[j][1],
  114 + line[j][2]
  115 + );
  116 + }
  117 + glEnd();
  118 + }
  119 +
  120 + void
  121 + RenderLine(std::vector< stim::vec<T> > l)
  122 + {
  123 + glColor3f(0.5, 1.0, 0.5);
  124 + glLineWidth(3.0);
  125 + glBegin(GL_LINE_STRIP);
  126 + for(int j = 0; j < l.size(); j++){
  127 + glVertex3f(
  128 + l[j][0],
  129 + l[j][1],
  130 + l[j][2]
  131 + );
  132 + }
  133 + glEnd();
  134 + }
  135 +
  136 +};
79 } 137 }
80 -} 138 +#endif
stim/visualization/obj.h
@@ -324,26 +324,27 @@ public: @@ -324,26 +324,27 @@ public:
324 324
325 /// This function terminates drawing of a primitive object, such as a line, face, or point set 325 /// This function terminates drawing of a primitive object, such as a line, face, or point set
326 void End(){ 326 void End(){
327 -  
328 //copy the current object to the appropriate list 327 //copy the current object to the appropriate list
329 - switch(current_type){ 328 + if(current_geo.size() != 0)
  329 + {
  330 + switch(current_type){
330 331
331 - case OBJ_NONE:  
332 - std::cout<<"STIM::OBJ error, objEnd() called before objBegin()."<<std::endl;  
333 - break; 332 + case OBJ_NONE:
  333 + std::cout<<"STIM::OBJ error, objEnd() called before objBegin()."<<std::endl;
  334 + break;
334 335
335 - case OBJ_POINTS:  
336 - P.push_back(current_geo);  
337 - break; 336 + case OBJ_POINTS:
  337 + P.push_back(current_geo);
  338 + break;
338 339
339 - case OBJ_LINE:  
340 - L.push_back(current_geo);  
341 - break; 340 + case OBJ_LINE:
  341 + L.push_back(current_geo);
  342 + break;
342 343
343 - case OBJ_FACE:  
344 - F.push_back(current_geo); 344 + case OBJ_FACE:
  345 + F.push_back(current_geo);
  346 + }
345 } 347 }
346 -  
347 //clear everything 348 //clear everything
348 current_type = OBJ_NONE; 349 current_type = OBJ_NONE;
349 current_geo.clear(); 350 current_geo.clear();
@@ -352,6 +353,12 @@ public: @@ -352,6 +353,12 @@ public:
352 geo_flag_vt = false; 353 geo_flag_vt = false;
353 geo_flag_vn = false; 354 geo_flag_vn = false;
354 } 355 }
  356 +//temporary convenience method
  357 + void rev(){
  358 + if(current_geo.size() != 0)
  359 + // current_geo.reverse(current_geo.begin(), current_geo.end());
  360 + std::reverse(current_geo.begin(), current_geo.end());
  361 + }
355 362
356 //output the OBJ structure as a string 363 //output the OBJ structure as a string
357 std::string str(){ 364 std::string str(){
@@ -556,7 +563,6 @@ public: @@ -556,7 +563,6 @@ public:
556 563
557 //get the number of points in the specified line 564 //get the number of points in the specified line
558 unsigned int nP = L[i].size(); 565 unsigned int nP = L[i].size();
559 -  
560 //create a vector of points 566 //create a vector of points
561 std::vector< stim::vec<T> > l; 567 std::vector< stim::vec<T> > l;
562 568
@@ -602,6 +608,7 @@ public: @@ -602,6 +608,7 @@ public:
602 return l; 608 return l;
603 } 609 }
604 610
  611 +
605 /// Returns a vector containing the list of texture coordinates associated with each point of a line. 612 /// Returns a vector containing the list of texture coordinates associated with each point of a line.
606 613
607 /// @param i is the index of the desired line 614 /// @param i is the index of the desired line