50 typedef SH3::ExplicitSurfaceContainer Container;
53 auto params = SH3::defaultParameters();
54 params(
"polynomial",
"goursat" )(
"gridstep", 1)(
"verbose", 0);
55 auto implicit_shape = SH3::makeImplicitShape3D ( params );
56 auto digitized_shape = SH3::makeDigitizedImplicitShape3D( implicit_shape, params );
57 auto K = SH3::getKSpace( params );
58 auto surface = SH3::makeDigitalSurface( digitized_shape,
K, params );
62 auto idxsurface = SH3::makeIdxDigitalSurface(
surface, params );
64 auto originalPos = shrouds_reg.
positions();
67 auto polySurf = SH3::makeDualPolygonalSurface( idxsurface );
68 SH3::saveOBJ( polySurf,
"goursat-shrouds-init.obj" );
74 double energyInitK2 = shrouds_reg.
energy ( RegType::SQUARED_CURVATURE );
75 std::tie( loo, l2 ) = shrouds_reg.
regularize( RegType::SQUARED_CURVATURE,
77 double energyRegK2 = shrouds_reg.
energy ( RegType::SQUARED_CURVATURE );
82 REQUIRE( energyRegK2 < energyInitK2 );
86 auto regularizedPos = shrouds_reg.
positions();
87 auto polySurf = SH3::makeDualPolygonalSurface( idxsurface );
88 auto polySurfPos = polySurf->positions();
89 for (
size_t i = 0; i < regularizedPos.size(); i++ )
90 polySurfPos[ i ] = regularizedPos[ i ];
91 SH3::saveOBJ( polySurf,
"goursat-shrouds-reg-k2.obj" );
97 double energyInitArea= shrouds_reg.
energy ( RegType::AREA );
98 std::tie( loo, l2 ) = shrouds_reg.
regularize( RegType::AREA,
100 double energyRegArea = shrouds_reg.
energy ( RegType::AREA );
103 REQUIRE( energyRegArea < energyInitArea );
107 double energyInitSnk= shrouds_reg.
energy ( RegType::SNAKE );
108 std::tie( loo, l2 ) = shrouds_reg.
regularize( RegType::SNAKE,
110 double energyRegSnk = shrouds_reg.
energy ( RegType::SNAKE );
113 REQUIRE( energyRegSnk < energyInitSnk );