本文整理汇总了C++中eigen::VectorXi::array方法的典型用法代码示例。如果您正苦于以下问题:C++ VectorXi::array方法的具体用法?C++ VectorXi::array怎么用?C++ VectorXi::array使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类eigen::VectorXi
的用法示例。
在下文中一共展示了VectorXi::array方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: P_out
TEST(PointInsideComponent, near_corner) {
Eigen::MatrixXd V1;
Eigen::MatrixXi F1;
test_common::load_mesh("cube.obj", V1, F1);
const double EPS = std::numeric_limits<double>::epsilon();
Eigen::MatrixXd P_out(8, 3);
P_out << 0.5 + EPS, 0.5 + EPS, 0.5 + EPS,
-0.5 - EPS, 0.5 + EPS, 0.5 + EPS,
0.5 + EPS,-0.5 - EPS, 0.5 + EPS,
-0.5 - EPS,-0.5 - EPS, 0.5 + EPS,
0.5 + EPS, 0.5 + EPS,-0.5 - EPS,
-0.5 - EPS, 0.5 + EPS,-0.5 - EPS,
0.5 + EPS,-0.5 - EPS,-0.5 - EPS,
-0.5 - EPS,-0.5 - EPS,-0.5 - EPS;
Eigen::VectorXi inside;
EXPECT_NO_THROW(igl::copyleft::cgal::points_inside_component(V1, F1, P_out, inside));
ASSERT_TRUE((inside.array()==0).all());
Eigen::MatrixXd P_in(8, 3);
P_in << 0.5 - EPS, 0.5 - EPS, 0.5 - EPS,
-0.5 + EPS, 0.5 - EPS, 0.5 - EPS,
0.5 - EPS,-0.5 + EPS, 0.5 - EPS,
-0.5 + EPS,-0.5 + EPS, 0.5 - EPS,
0.5 - EPS, 0.5 - EPS,-0.5 + EPS,
-0.5 + EPS, 0.5 - EPS,-0.5 + EPS,
0.5 - EPS,-0.5 + EPS,-0.5 + EPS,
-0.5 + EPS,-0.5 + EPS,-0.5 + EPS;
EXPECT_NO_THROW(igl::copyleft::cgal::points_inside_component(V1, F1, P_in, inside));
ASSERT_TRUE((inside.array()==1).all());
}
示例2: decimate
IGL_INLINE bool igl::decimate(
const Eigen::MatrixXd & V,
const Eigen::MatrixXi & F,
const size_t max_m,
Eigen::MatrixXd & U,
Eigen::MatrixXi & G,
Eigen::VectorXi & J,
Eigen::VectorXi & I)
{
// Original number of faces
const int orig_m = F.rows();
// Tracking number of faces
int m = F.rows();
typedef Eigen::MatrixXd DerivedV;
typedef Eigen::MatrixXi DerivedF;
DerivedV VO;
DerivedF FO;
igl::connect_boundary_to_infinity(V,F,VO,FO);
bool ret = decimate(
VO,
FO,
shortest_edge_and_midpoint,
max_faces_stopping_condition(m,orig_m,max_m),
U,
G,
J,
I);
const Eigen::Array<bool,Eigen::Dynamic,1> keep = (J.array()<orig_m);
igl::slice_mask(Eigen::MatrixXi(G),keep,1,G);
igl::slice_mask(Eigen::VectorXi(J),keep,1,J);
Eigen::VectorXi _1,I2;
igl::remove_unreferenced(Eigen::MatrixXd(U),Eigen::MatrixXi(G),U,G,_1,I2);
igl::slice(Eigen::VectorXi(I),I2,1,I);
return ret;
}