53TEST_CASE(
"Testing IntegralInvariant Shortcuts API" )
55 auto params = SH3::defaultParameters() | SHG3::defaultParameters() | SHG3::parametersGeometryEstimation();
56 params(
"polynomial",
"goursat" )(
"gridstep", 1. );
57 auto implicit_shape = SH3::makeImplicitShape3D ( params );
58 auto digitized_shape = SH3::makeDigitizedImplicitShape3D( implicit_shape, params );
59 auto binary_image = SH3::makeBinaryImage( digitized_shape, params );
60 auto K = SH3::getKSpace( params );
61 auto embedder = SH3::getCellEmbedder(
K );
63 auto surfels = SH3::getSurfelRange(
surface, params );
65 trace.
info() <<
"Nb surfels= " << surfels.size() << std::endl;
68 params(
"r-radius", 3.0);
71 auto Tcurv = SHG3::getIIPrincipalCurvaturesAndDirections(
binary_image, surfels, params);
72 auto Kcurv = SHG3::getIIGaussianCurvatures(
binary_image, surfels, params);
74 std::vector<double> k1,k2,G;
75 for(
auto &result: Tcurv)
77 k1.push_back( std::get<0>(result) );
78 k2.push_back( std::get<1>(result) );
79 G.push_back( ( std::get<0>(result) * std::get<1>(result)) );
82 SECTION(
"Testing that mean/Gaussian/tensor curvature shortucut values match")
84 for(std::size_t i = 0; i < G.size(); ++i)
85 REQUIRE( Kcurv[i] == Approx( G[i] ) );