DGtal  0.9.3beta
topology/generateSimplicityTables3D.cpp

Creates precomputed tables for determining whether some point is simple within an 3D object.

#include <DGtal/topology/tables/NeighborhoodTablesGenerators.h>
using namespace std;
using namespace DGtal;
int main( int argc, char** argv )
{
using namespace Z3i;
string error_message(
"Select ForegroundAdjacency for object topology:\n"
"- 26_6 \n"
"- 18_6 \n"
"- 6_18 \n"
"- 6_26 \n");
if (argc != 2 ){
cout << error_message << std::endl;
return 1;
}
std::string input_str = std::string(argv[1]);
using ConfigMap = std::bitset<67108864> ; // 2^26
// Too big for stack. Use heap instead.
unique_ptr<ConfigMap> table(new ConfigMap);
trace.beginBlock ( "Generate 3d table for " + input_str + " topology" );
if (input_str == "26_6")
functions::generateSimplicityTable< Object26_6, ConfigMap >( dt26_6, *table );
else if (input_str == "18_6")
functions::generateSimplicityTable< Object18_6, ConfigMap >( dt18_6, *table );
else if (input_str == "6_18")
functions::generateSimplicityTable< Object6_18, ConfigMap >( dt6_18, *table );
else if (input_str == "6_26")
functions::generateSimplicityTable< Object6_26, ConfigMap >( dt6_26, *table );
else {
cout << error_message << endl;
return 1;
}
string filename = "simplicity_table" + input_str + ".txt";
ofstream file( filename );
file << *table;
file.close();
return 0;
}
// //