#define IGL_HEADER_ONLY #include #include #include #include #include #include void line_texture(Eigen::Matrix &texture_R, Eigen::Matrix &texture_G, Eigen::Matrix &texture_B) { unsigned size = 128; unsigned size2 = size/2; unsigned lineWidth = 3; texture_R.setConstant(size, size, 255); for (unsigned i=0; i &polyVF) { FILE *fp = fopen(fname,"r"); if (!fp) return false; int degree, numF; if (fscanf(fp,"%d %d", °ree, &numF) !=2) return false; polyVF.resize(degree, Eigen::MatrixXd::Zero(numF, 3)); isConstrained.setZero(numF,1); int vali; float u0,u1,u2; for (int i = 0; i &polyVF) { int numF = polyVF[0].rows(); int degree = polyVF.size(); FILE *fp = fopen(fname,"w"); fprintf(fp,"%d %d\n", degree,numF); for (int i = 0; i polyVF; readPolyVf("../shared/lilium.crossfield", isConstrained, polyVF); Eigen::MatrixXd UV; Eigen::MatrixXi FUV; double gradientSize = 50; double quadIter = 0; double stiffness = 5.0; bool directRound = 1; igl::mixed_integer_quadrangulate(V, F, polyVF[0], polyVF[1], UV, FUV, gradientSize, stiffness, directRound, quadIter); // Face barycenters Eigen::MatrixXd MF; igl::barycenter(V, F, MF); double scale = .5*igl::avg_edge_length(V, F); // Plot the mesh igl::Viewer viewer; viewer.set_mesh(V, F); // Plot the field viewer.add_edges (MF, MF+scale*polyVF[0],Eigen::RowVector3d(1,0,1)); viewer.add_edges (MF, MF+scale*polyVF[1],Eigen::RowVector3d(1,0,1)); viewer.set_uv(UV,FUV); viewer.options.show_texture = true; Eigen::Matrix texture_R, texture_G, texture_B; line_texture(texture_R, texture_G, texture_B); viewer.set_texture(texture_R, texture_B, texture_G); // Increase the thickness of the lines viewer.options.line_width = 2.0f; // Launch the viewer viewer.launch(); }