Objects have a border, which are the points which touch the complement in the sense of background adjacency. A border of an object is itself an object, with the same topology as the object.
#include <iostream>
#include "DGtal/base/Common.h"
#include <QtGui/qapplication.h>
#include "DGtal/base/Common.h"
#include "DGtal/io/readers/VolReader.h"
#include "DGtal/io/viewers/Viewer3D.h"
#include "DGtal/io/DrawWithDisplay3DModifier.h"
#include "DGtal/io/Color.h"
#include "DGtal/images/ImageSelector.h"
#include "DGtal/helpers/StdDefs.h"
#include "ConfigExamples.h"
using namespace std;
using namespace DGtal;
int main( int argc, char** argv )
{
Adj6 adj6;
Adj18 adj18;
typedef Domain::ConstIterator DomainConstIterator;
Point p1( -50, -50, -50 );
Point p2( 50, 50, 50 );
Domain domain( p1, p2 );
Point c( 0, 0 );
DigitalSet diamond_set( domain );
for ( DomainConstIterator it = domain.begin(); it != domain.end(); ++it )
{
if ( (*it - c ).norm1() <= 30 ) diamond_set.insertNew( *it );
}
ObjectType diamond( dt6_18, diamond_set );
ObjectType diamond_clone( diamond );
diamond_clone.pointSet().erase( c );
ObjectType bdiamond = diamond.border();
ObjectType bdiamond_clone = diamond_clone.border();
QApplication application(argc,argv);
viewer.show();
viewer << bdiamond_clone;
viewer << bdiamond ;
viewer <<
ClippingPlane(1,1,0,5,
false) << Display3D::updateDisplay;
return application.exec();
}