// This file is part of libigl, a simple c++ geometry processing library. // // Copyright (C) 2016 Alec Jacobson // // This Source Code Form is subject to the terms of the Mozilla Public License // v. 2.0. If a copy of the MPL was not distributed with this file, You can // obtain one at http://mozilla.org/MPL/2.0/. #include "bbw.h" #include "mosek_quadprog.h" #include "../harmonic.h" #include "../slice_into.h" #include #include #include template < typename DerivedV, typename DerivedEle, typename Derivedb, typename Derivedbc, typename DerivedW> IGL_INLINE bool igl::mosek::bbw( const Eigen::PlainObjectBase & V, const Eigen::PlainObjectBase & Ele, const Eigen::PlainObjectBase & b, const Eigen::PlainObjectBase & bc, igl::BBWData & data, igl::mosek::MosekData & mosek_data, Eigen::PlainObjectBase & W ) { using namespace std; using namespace Eigen; assert(!data.partition_unity && "partition_unity not implemented yet"); // number of domain vertices int n = V.rows(); // number of handles int m = bc.cols(); // Build biharmonic operator Eigen::SparseMatrix Q; harmonic(V,Ele,2,Q); W.derived().resize(n,m); // No linear terms VectorXd c = VectorXd::Zero(n); // No linear constraints SparseMatrix A(0,n); VectorXd uc(0,1),lc(0,1); // Upper and lower box constraints (Constant bounds) VectorXd ux = VectorXd::Ones(n); VectorXd lx = VectorXd::Zero(n); // Loop over handles for(int i = 0;i= 1) { cout<<"BBW: Computing weight for handle "<, Eigen::Matrix, Eigen::Matrix, Eigen::Matrix, Eigen::Matrix >(Eigen::PlainObjectBase > const&, Eigen::PlainObjectBase > const&, Eigen::PlainObjectBase > const&, Eigen::PlainObjectBase > const&, igl::BBWData&, igl::mosek::MosekData&, Eigen::PlainObjectBase >&); #endif