#include #include #include #include #include #include #include #include #include #include #include #include #include #include int main(int argc, char * argv[]) { IGL_TICTOC_LAMBDA; Eigen::MatrixXi F; Eigen::MatrixXd V; // Read in inputs as double precision floating point meshes igl::read_triangle_mesh( argc>1?argv[1]: TUTORIAL_SHARED_PATH "/hand.mesh",V,F); V.array() += 1; tictoc(); { Eigen::RowVector3d min_corner = V.colwise().minCoeff(); Eigen::RowVector3d max_corner = V.colwise().maxCoeff(); }; double t_aabb = tictoc(); // PCA tictoc(); Eigen::RowVector3d mean = V.colwise().mean(); Eigen::MatrixXd V_centered = V.rowwise() - mean; Eigen::Matrix3d cov = (V_centered.transpose() * V_centered) / (V.rows() - 1); Eigen::SelfAdjointEigenSolver eig(cov); Eigen::Matrix3d PR = eig.eigenvectors(); double t_pca = tictoc(); Eigen::Matrix3d R; tictoc(); igl::copyleft::cgal::oriented_bounding_box(V, R); double t_cgal = tictoc(); tictoc(); Eigen::MatrixXd W; Eigen::MatrixXi G; igl::copyleft::cgal::convex_hull(V,W,G); Eigen::Matrix3d BR; igl::oriented_bounding_box(W, 50000, igl::ORIENTED_BOUNDING_BOX_MINIMIZE_SURFACE_AREA, BR); std::cout<