@@ -23,6 +23,7 @@ C #C by dim list of handle positions
2323P #P by 1 list of point handle indices into C
2424BE #BE by 2 list of bone edge indices into C
2525CE #CE by 2 list of cage edge indices into *P*
26+ CF #CF by 3 list of cage edge indices into *P*
2627
2728Returns
2829-------
@@ -59,6 +60,7 @@ npe_arg(c, npe_matches(v))
5960npe_arg(p, npe_matches(ele))
6061npe_arg(be, npe_matches(ele))
6162npe_arg(ce, npe_matches(ele))
63+ npe_arg(cf, npe_matches(ele))
6264
6365npe_begin_code()
6466 assert_valid_tet_or_tri_mesh(v, ele);
@@ -74,6 +76,10 @@ npe_begin_code()
7476 {
7577 assert_cols_equals (ce, 2 , " ce" );
7678 }
79+ if (cf.size() > 0 )
80+ {
81+ assert_cols_equals (cf, 3 , " cf" );
82+ }
7783
7884 // TODO: remove __copy
7985 Eigen::MatrixXd v_copy = v.template cast<double >();
@@ -86,9 +92,12 @@ npe_begin_code()
8692 Eigen::MatrixXi ce_copy;
8793 if (ce.size() > 0 )
8894 ce_copy = ce.template cast<int >();
95+ Eigen::MatrixXi cf_copy;
96+ if (cf.size() > 0 )
97+ cf_copy = cf.template cast<int >();
8998 Eigen::VectorXi b_copy;
9099 Eigen::MatrixXd bc_copy;
91- bool success = igl::boundary_conditions(v_copy, ele_copy, c_copy, p_copy, be_copy, ce_copy, b_copy, bc_copy);
100+ bool success = igl::boundary_conditions(v_copy, ele_copy, c_copy, p_copy, be_copy, ce_copy, cf_copy, b_copy, bc_copy);
92101 EigenDenseLike<npe_Matrix_ele> b = b_copy.template cast<npe_Scalar_ele>();
93102 EigenDenseLike<npe_Matrix_v> bc = bc_copy.template cast<npe_Scalar_v>();
94103 return std::make_tuple(success, npe::move(b), npe::move(bc));
0 commit comments