浏览代码

small improvement in the rendering of tutorial miq

Former-commit-id: b303b6b42ac438d43e5d65c6dbf59e20ac7eefec
Daniele Panozzo 10 年之前
父节点
当前提交
03bd18cc32
共有 1 个文件被更改,包括 15 次插入9 次删除
  1. 15 9
      tutorial/505_MIQ/main.cpp

+ 15 - 9
tutorial/505_MIQ/main.cpp

@@ -16,6 +16,7 @@ Eigen::MatrixXd B;
 
 // Scale for visualizing the fields
 double global_scale;
+bool extend_arrows = false;
 
 // Cross field
 Eigen::MatrixXd X1,X2;
@@ -70,6 +71,11 @@ void line_texture(Eigen::Matrix<unsigned char,Eigen::Dynamic,Eigen::Dynamic> &te
 
 bool key_down(igl::Viewer& viewer, unsigned char key, int modifier)
 {
+  if (key == 'E')
+  {
+    extend_arrows = !extend_arrows;
+  }
+  
   if (key <'1' || key >'8')
     return false;
 
@@ -81,24 +87,24 @@ bool key_down(igl::Viewer& viewer, unsigned char key, int modifier)
   {
     // Cross field
     viewer.data.set_mesh(V, F);
-    viewer.data.add_edges(B, B + global_scale*X1 ,Eigen::RowVector3d(1,0,0));
-    viewer.data.add_edges(B, B + global_scale*X2 ,Eigen::RowVector3d(0,0,1));
+    viewer.data.add_edges(extend_arrows ? B - global_scale*X1 : B, B + global_scale*X1 ,Eigen::RowVector3d(1,0,0));
+    viewer.data.add_edges(extend_arrows ? B - global_scale*X2 : B, B + global_scale*X2 ,Eigen::RowVector3d(0,0,1));
   }
 
   if (key == '2')
   {
     // Bisector field
     viewer.data.set_mesh(V, F);
-    viewer.data.add_edges(B, B + global_scale*BIS1 ,Eigen::RowVector3d(1,0,0));
-    viewer.data.add_edges(B, B + global_scale*BIS2 ,Eigen::RowVector3d(0,0,1));
+    viewer.data.add_edges(extend_arrows ? B - global_scale*BIS1 : B, B + global_scale*BIS1 ,Eigen::RowVector3d(1,0,0));
+    viewer.data.add_edges(extend_arrows ? B - global_scale*BIS2 : B, B + global_scale*BIS2 ,Eigen::RowVector3d(0,0,1));
   }
 
   if (key == '3')
   {
     // Bisector field combed
     viewer.data.set_mesh(V, F);
-    viewer.data.add_edges(B, B + global_scale*BIS1_combed ,Eigen::RowVector3d(1,0,0));
-    viewer.data.add_edges(B, B + global_scale*BIS2_combed ,Eigen::RowVector3d(0,0,1));
+    viewer.data.add_edges(extend_arrows ? B - global_scale*BIS1_combed : B, B + global_scale*BIS1_combed ,Eigen::RowVector3d(1,0,0));
+    viewer.data.add_edges(extend_arrows ? B - global_scale*BIS2_combed : B, B + global_scale*BIS2_combed ,Eigen::RowVector3d(0,0,1));
   }
 
   if (key == '4')
@@ -142,8 +148,8 @@ bool key_down(igl::Viewer& viewer, unsigned char key, int modifier)
     // Singularities and cuts, original field
     // Singularities and cuts
     viewer.data.set_mesh(V, F);
-    viewer.data.add_edges(B, B + global_scale*X1_combed ,Eigen::RowVector3d(1,0,0));
-    viewer.data.add_edges(B, B + global_scale*X2_combed ,Eigen::RowVector3d(0,0,1));
+    viewer.data.add_edges(extend_arrows ? B - global_scale*X1_combed : B, B + global_scale*X1_combed ,Eigen::RowVector3d(1,0,0));
+    viewer.data.add_edges(extend_arrows ? B - global_scale*X2_combed : B, B + global_scale*X2_combed ,Eigen::RowVector3d(0,0,1));
 
     // Plot cuts
     int l_count = Seams.sum();
@@ -198,7 +204,7 @@ bool key_down(igl::Viewer& viewer, unsigned char key, int modifier)
     viewer.data.set_uv(UV_seams,FUV_seams);
     viewer.core.show_texture = true;
   }
-
+  
   viewer.data.set_colors(Eigen::RowVector3d(1,1,1));
 
   // Replace the standard texture with an integer shift invariant texture