#include #include #include #include #include #include #include #include #include #include #include #include #include #include std::vector Handles; std::vector HandlePoses; int CurrentHandle; Eigen::MatrixXd VOrig, V; 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; typedef hedra::optimization::EigenSolverWrapper > > LinearSolver; hedra::optimization::DiscreteShellsTraits dst; LinearSolver esw; hedra::optimization::LMSolver lmSolver; bool UpdateCurrentView(igl::viewer::Viewer & viewer) { using namespace Eigen; using namespace std; 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 :"<