Commit 4d23da9ca2b95fdebeabba2152faccd0025b6d78

Authored by Jiaming Guo
1 parent 5c83f00e

add 00_GT.swc,now everything is good

Showing 2 changed files with 86 additions and 42 deletions   Show diff stats
  1 +# converted from 00_GT.obj
  2 +1 1 99 677 0 0.5 -1
  3 +2 1 88 563 0 0.5 1
  4 +3 1 229 510 0 0.5 2
  5 +4 1 181 372 0 0.5 3
  6 +5 1 57 347 0 0.5 4
  7 +6 1 316 596 0 0.5 3
  8 +7 1 344 724 0 0.5 6
  9 +8 1 385 425 0 0.5 3
  10 +9 1 581 361 0 0.5 8
  11 +10 1 574 223 0 0.5 9
  12 +11 1 481 165 0 0.5 10
  13 +12 1 341 199 0 0.5 11
  14 +13 1 757 377 0 0.5 9
  15 +14 1 818 229 0 0.5 13
  16 +15 1 981 152 0 0.5 14
  17 +16 1 793 508 0 0.5 13
  18 +17 1 941 600 0 0.5 16
  19 +18 1 679 601 0 0.5 16
  20 +19 1 647 738 0 0.5 18
@@ -47,7 +47,8 @@ std::vector<unsigned> _t_gt; // store indices of nearest edge points in _ @@ -47,7 +47,8 @@ std::vector<unsigned> _t_gt; // store indices of nearest edge points in _
47 float resample_rate = 0.5f; //sample rate for the network (fraction of sigma used as the maximum sample rate) 47 float resample_rate = 0.5f; //sample rate for the network (fraction of sigma used as the maximum sample rate)
48 float camera_factor = 1.2f; //start point of the camera as a function of X and Y size 48 float camera_factor = 1.2f; //start point of the camera as a function of X and Y size
49 float orbit_factor = 0.01f; //degrees per pixel used to orbit the camera 49 float orbit_factor = 0.01f; //degrees per pixel used to orbit the camera
50 -float zoom_factor = 10.0; 50 +float zoom_factor = 10.0f;
  51 +float radius_factor = 0.5f;
51 52
52 //mouse click 53 //mouse click
53 bool LButtonDown = false; // true when left button down 54 bool LButtonDown = false; // true when left button down
@@ -74,7 +75,9 @@ GLuint dlist2; @@ -74,7 +75,9 @@ GLuint dlist2;
74 //OpenGL objects 75 //OpenGL objects
75 GLuint cmap_tex = 0; //texture name for the color map 76 GLuint cmap_tex = 0; //texture name for the color map
76 77
  78 +float delta;
77 float sigma = 3; //default sigma 79 float sigma = 3; //default sigma
  80 +float radius = 3; //equals to radius
78 81
79 //sets an OpenGL viewport taking up the entire window 82 //sets an OpenGL viewport taking up the entire window
80 void glut_render_single_projection(){ 83 void glut_render_single_projection(){
@@ -146,11 +149,12 @@ void glut_render(void) { @@ -146,11 +149,12 @@ void glut_render(void) {
146 glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); //texture map will be used as the network color 149 glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); //texture map will be used as the network color
147 glBindTexture(GL_TEXTURE_1D, cmap_tex); //bind the Brewer texture map 150 glBindTexture(GL_TEXTURE_1D, cmap_tex); //bind the Brewer texture map
148 151
149 - GT.glCylinder(sigma); //render the GT network 152 + GT.glCylinder(sigma, radius); //render the GT network
150 153
151 glut_render_right_projection(); //set up a projection for the right half of the window 154 glut_render_right_projection(); //set up a projection for the right half of the window
152 glut_render_modelview(); //set up the modelview matrix using camera details 155 glut_render_modelview(); //set up the modelview matrix using camera details
153 - T.glCylinder(sigma); //render the T network 156 + T.glCylinder(sigma, radius); //render the T network
  157 + sigma = radius; // set sigma equal to radius
154 } 158 }
155 } 159 }
156 160
@@ -171,12 +175,12 @@ void glut_render(void) { @@ -171,12 +175,12 @@ void glut_render(void) {
171 glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); //texture map will be used as the network color 175 glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); //texture map will be used as the network color
172 glBindTexture(GL_TEXTURE_1D, cmap_tex); //bind the Brewer texture map 176 glBindTexture(GL_TEXTURE_1D, cmap_tex); //bind the Brewer texture map
173 177
174 - _GT.glCylinder(sigma); //render the GT network 178 + _GT.glCylinder(sigma, radius); //render the GT network
175 179
176 glut_render_right_projection(); //set up a projection for the right half of the window 180 glut_render_right_projection(); //set up a projection for the right half of the window
177 glut_render_modelview(); //set up the modelview matrix using camera details 181 glut_render_modelview(); //set up the modelview matrix using camera details
178 - _T.glCylinder(sigma); //render the T network  
179 - 182 + _T.glCylinder(sigma, radius); //render the T network
  183 + sigma = radius; //set sigma equal to radius
180 } 184 }
181 else { 185 else {
182 glEnable(GL_DEPTH_TEST); //enable depth 186 glEnable(GL_DEPTH_TEST); //enable depth
@@ -185,12 +189,13 @@ void glut_render(void) { @@ -185,12 +189,13 @@ void glut_render(void) {
185 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //clear the screen 189 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //clear the screen
186 190
187 //_GT.glRandColorCenterlineGT(dlist1, _gt_t, colormap); 191 //_GT.glRandColorCenterlineGT(dlist1, _gt_t, colormap);
188 - _GT.glRandColorCylinder1(dlist1, _gt_t, colormap, sigma); 192 + _GT.glRandColorCylinder1(dlist1, _gt_t, colormap, sigma, radius);
189 193
190 glut_render_right_projection(); //set up a projection for the right half of the window 194 glut_render_right_projection(); //set up a projection for the right half of the window
191 glut_render_modelview(); //set up the modelview matrix using camera details 195 glut_render_modelview(); //set up the modelview matrix using camera details
192 //_T.glRandColorCenterlineT(dlist2, _t_gt, colormap); 196 //_T.glRandColorCenterlineT(dlist2, _t_gt, colormap);
193 - _T.glRandColorCylinder2(dlist2, _t_gt, colormap, sigma); 197 + _T.glRandColorCylinder2(dlist2, _t_gt, colormap, sigma, radius);
  198 + sigma = radius; //set sigma equal to radius
194 } 199 }
195 } 200 }
196 } 201 }
@@ -310,20 +315,10 @@ void glut_mouse(int button, int state, int x, int y){ @@ -310,20 +315,10 @@ void glut_mouse(int button, int state, int x, int y){
310 315
311 // define camera move based on mouse wheel move(actually we can combine this with glut_mouse) 316 // define camera move based on mouse wheel move(actually we can combine this with glut_mouse)
312 void glut_wheel(int wheel, int direction, int x, int y) { 317 void glut_wheel(int wheel, int direction, int x, int y) {
313 - /*float cam_move_fac; // camera move unit length  
314 - stim::vec3<float> eye = cam.getPosition(); // get the camera position (eye point)  
315 - stim::vec3<float> focus = cam.getLookAt(); // get the camera focal point  
316 - cam_move_fac = fabs(focus[2] - eye[2]) / 50; // divided by 50  
317 -  
318 - if (direction > 0) // if it is button 3(up)  
319 - des -= cam_move_fac;  
320 - else // if it is button 4(down)  
321 - des += cam_move_fac;*/  
322 - float delta;  
323 318
324 - if (direction > 0) // if it is button 3(up) 319 + if (direction > 0) // if it is button 3(up), move closer
325 delta = zoom_factor; 320 delta = zoom_factor;
326 - else // if it is button 4(down) 321 + else // if it is button 4(down), leave farther
327 delta = -zoom_factor; 322 delta = -zoom_factor;
328 323
329 cam.Push(delta); 324 cam.Push(delta);
@@ -332,19 +327,46 @@ void glut_wheel(int wheel, int direction, int x, int y) { @@ -332,19 +327,46 @@ void glut_wheel(int wheel, int direction, int x, int y) {
332 327
333 // define keyboard inputs 328 // define keyboard inputs
334 void glut_keyboard(unsigned char key, int x, int y){ 329 void glut_keyboard(unsigned char key, int x, int y){
335 - if(key == 'm') // if keyboard 'm' is pressed  
336 - {  
337 - if(compareMode && !mappingMode){ // if it is in compare mode  
338 - compareMode = false;  
339 - mappingMode = true;  
340 - }  
341 - else{ // if it is in mapping mode  
342 - compareMode = true;  
343 - mappingMode = false;  
344 - }  
345 - }  
346 - if (key == 27) { // if keyboard "ESC" is pressed  
347 - exit(0); // exit 330 +
  331 + // register different keyboard operation
  332 + switch (key) {
  333 +
  334 + // change render mode
  335 + case 'm': // if keyboard 'm' is pressed, then change render mode
  336 + if (compareMode && !mappingMode && ind) { // if current mode is comparing mode
  337 + compareMode = false;
  338 + mappingMode = true;
  339 + }
  340 + else if (!compareMode && mappingMode && ind) { // if current mode is mapping mode
  341 + compareMode = true;
  342 + mappingMode = false;
  343 + }
  344 + break;
  345 +
  346 + // zooming
  347 + case 'w': // if keyboard 'w' is pressed, then move closer
  348 + delta = zoom_factor;
  349 + cam.Push(delta);
  350 + break;
  351 + case 's': // if keyboard 's' is pressed, then leave farther
  352 + delta = -zoom_factor;
  353 + cam.Push(delta);
  354 + break;
  355 +
  356 + // resample and re-render the cylinder in different radius
  357 + case 'd': // if keyboard 'd' is pressed, then increase radius by radius_factor
  358 + radius += radius_factor;
  359 + break;
  360 + case 'a': // if keyboard 'a' is pressed, then decrease radius by radius_factor
  361 + radius -= radius_factor;
  362 + // get rid of the degenerated case when radius decrease below 0
  363 + if (radius < 0.001f)
  364 + radius = 0.2;
  365 + break;
  366 +
  367 + // close window and exit application
  368 + case 27: // if keyboard 'ESC' is pressed, then exit
  369 + exit(0);
348 } 370 }
349 glutPostRedisplay(); 371 glutPostRedisplay();
350 } 372 }
@@ -396,13 +418,13 @@ void glut_initialize(){ @@ -396,13 +418,13 @@ void glut_initialize(){
396 glutMouseFunc(glut_mouse); //executed on a mouse click - sets starting mouse positions for rotations 418 glutMouseFunc(glut_mouse); //executed on a mouse click - sets starting mouse positions for rotations
397 glutMotionFunc(glut_motion); //executed when the mouse is moved while a button is pressed 419 glutMotionFunc(glut_motion); //executed when the mouse is moved while a button is pressed
398 if (ind == 1) { //only in mapping mode, keyboard will be used 420 if (ind == 1) { //only in mapping mode, keyboard will be used
399 - glutKeyboardFunc(glut_keyboard); //register keyboard callback  
400 glutCreateMenu(glut_menu); //register menu option callback 421 glutCreateMenu(glut_menu); //register menu option callback
401 - glutAddMenuEntry("Comparing Mode", 1);//register menu 1 as comparing mode  
402 - glutAddMenuEntry("Mapping Mode", 2); //register menu 2 as mapping mode  
403 - glutAddMenuEntry("Exit", 3); //register menu 3 as exiting  
404 - glutAttachMenu(GLUT_RIGHT_BUTTON); //register right mouse to open menu option  
405 - } 422 + glutAddMenuEntry("Comparing Mode", 1); //register menu 1 as comparing mode
  423 + glutAddMenuEntry("Mapping Mode", 2); //register menu 2 as mapping mode
  424 + glutAddMenuEntry("Exit", 3); //register menu 3 as exiting
  425 + glutAttachMenu(GLUT_RIGHT_BUTTON); //register right mouse to open menu option
  426 + }
  427 + glutKeyboardFunc(glut_keyboard); //register keyboard callback
406 glutMouseWheelFunc(glut_wheel); 428 glutMouseWheelFunc(glut_wheel);
407 429
408 texture_initialize(); //set up texture mapping (create texture maps, enable features) 430 texture_initialize(); //set up texture mapping (create texture maps, enable features)
@@ -579,13 +601,14 @@ int main(int argc, char* argv[]) @@ -579,13 +601,14 @@ int main(int argc, char* argv[])
579 if (1 == swc_ind) { //loading swc files 601 if (1 == swc_ind) { //loading swc files
580 int device = args["device"].as_int(); //get the device value from the user 602 int device = args["device"].as_int(); //get the device value from the user
581 num_nets = 2; //set the number of networks to two 603 num_nets = 2; //set the number of networks to two
582 - //does it need to be resampled??  
583 sigma = args["sigma"].as_float(); //get the sigma value from the user 604 sigma = args["sigma"].as_float(); //get the sigma value from the user
  605 + radius = sigma;
584 T.load_swc(args.arg(1)); //load the second (test) network 606 T.load_swc(args.arg(1)); //load the second (test) network
585 if (args["features"].is_set()) //if the user wants to save features 607 if (args["features"].is_set()) //if the user wants to save features
586 features(args["features"].as_string()); 608 features(args["features"].as_string());
587 - GT = GT.resample(resample_rate * sigma); //resample both networks based on the sigma value  
588 - T = T.resample(resample_rate * sigma); 609 + //does it need to be resampled??
  610 + //GT = GT.resample(resample_rate * sigma); //resample both networks based on the sigma value
  611 + //T = T.resample(resample_rate * sigma);
589 if (args["mapping"].is_set()) { 612 if (args["mapping"].is_set()) {
590 float threshold = args["mapping"].as_float(); 613 float threshold = args["mapping"].as_float();
591 map_swc(sigma, device, threshold); 614 map_swc(sigma, device, threshold);
@@ -599,6 +622,7 @@ int main(int argc, char* argv[]) @@ -599,6 +622,7 @@ int main(int argc, char* argv[])
599 int device = args["device"].as_int(); //get the device value from the user 622 int device = args["device"].as_int(); //get the device value from the user
600 num_nets = 2; //set the number of networks to two 623 num_nets = 2; //set the number of networks to two
601 sigma = args["sigma"].as_float(); //get the sigma value from the user 624 sigma = args["sigma"].as_float(); //get the sigma value from the user
  625 + radius = sigma;
602 T.load_obj(args.arg(1)); //load the second (test) network 626 T.load_obj(args.arg(1)); //load the second (test) network
603 if (args["features"].is_set()) //if the user wants to save features 627 if (args["features"].is_set()) //if the user wants to save features
604 features(args["features"].as_string()); 628 features(args["features"].as_string());