#include #include #include #include #include #include #include #include #include #include #include enum ViewingMode{PLANARITY, CONCYCLITY, REGULARITY} ViewingMode; std::vector Handles; std::vector HandlePoses; int CurrentHandle; Eigen::MatrixXd VOrig, V, C; Eigen::MatrixXi F, T; Eigen::VectorXi D, TF; Eigen::MatrixXi EV, EF, FE, EFi; Eigen::MatrixXd FEs; Eigen::VectorXi innerEdges; Eigen::Vector3d spans; bool Editing=false; bool ChoosingHandleMode=false; double CurrWinZ; Eigen::VectorXd planarity, concyclity, regularity; hedra::ShapeupData sudata; Eigen::MatrixXi SFaceRegular; Eigen::VectorXi SDFaceRegular; bool UpdateCurrentView(igl::viewer::Viewer & viewer) { using namespace Eigen; using namespace std; hedra::planarity(V,D,F,planarity); hedra::concyclity(V,D,F,concyclity); hedra::regularity(V,D,F,regularity); MatrixXd sphereV; MatrixXi sphereT; MatrixXd sphereTC; Eigen::MatrixXd bc(Handles.size(),V.cols()); for (int i=0;i(Eigen::Vector3f(x,y,CurrWinZ), viewer.core.view * viewer.core.model, viewer.core.proj, viewer.core.viewport); HandlePoses[HandlePoses.size()-1]=NewPos.cast(); Eigen::RowVector3d Diff=HandlePoses[HandlePoses.size()-1]-VOrig.row(Handles[HandlePoses.size()-1]); Eigen::MatrixXd bc(Handles.size(),V.cols()); for (int i=0;i(V.row(CurrVertex).cast(), viewer.core.view * viewer.core.model, viewer.core.proj, viewer.core.viewport); CurrWinZ=WinCoords(2); std::cout<<"Choosing Vertex :"<