52 #include "DGtal/base/Common.h"
53 #include "DGtal/kernel/PointVector.h"
54 #include "DGtal/shapes/SurfaceMesh.h"
55 #include "DGtal/io/writers/SurfaceMeshWriter.h"
56 #include "DGtal/geometry/volumes/ConvexityHelper.h"
58 using namespace DGtal;
60 int main(
int argc,
char* argv[] )
62 int nb = argc > 1 ? atoi( argv[ 1 ] ) : 100;
63 double dR = argc > 2 ? atof( argv[ 2 ] ) : 10.;
64 double eps = argc > 3 ? atof( argv[ 3 ] ) : 0.1;
65 double precision = argc > 4 ? atof( argv[ 4 ] ) : 100.0;
69 std::vector< RealPoint > V;
70 const auto R2 = dR * dR;
71 for (
int i = 0; i < nb; ) {
72 RealPoint p( ( rand() / (
double) RAND_MAX * 2.0 - 1.0 ) * dR,
73 ( rand() / (
double) RAND_MAX * 2.0 - 1.0 ) * dR,
74 ( rand() / (
double) RAND_MAX * 2.0 - 1.0 ) * dR );
75 if ( p.squaredNorm() <= R2 ) { V.push_back( p ); i++; }
83 trace.
error() <<
"Input set of points is not full dimensional." << std::endl;
87 std::cout << dcomplex << std::endl;
89 std::vector< RealPoint > positions;
90 std::vector< std::vector< Index > > facets;
92 for (
auto c = 0; c < dcomplex.
nbCells(); ++c )
96 std::map< Index, Index > v2v;
97 for (
auto v : c_vtcs ) {
100 positions.push_back( b + ( x - b ) * ( 1.0 - eps ) );
102 for (
const auto& f : dcomplex.
cellFaces( c ) ) {
104 for (
auto& vertex : f_vtcs )
105 vertex = v2v[ vertex ];
106 facets.push_back( f_vtcs );
110 SMesh mesh( positions.cbegin(), positions.cend(),
111 facets.cbegin(), facets.cend() );
113 std::ofstream out(
"delaunay3d.obj" );
Aim: Implements basic operations that will be used in Point and Vector classes.
SurfaceMesh< RealPoint, RealVector > SMesh
Z3i this namespace gathers the standard of types for 3D imagery.
DGtal is the top-level namespace which contains all DGtal functions and types.
Aim: represents a d-dimensional complex in a d-dimensional space with the following properties and re...
const VertexRange & cellVertices(const Cell c) const
Point position(const Vertex v) const
VertexRange faceVertices(const Face f) const
RealPoint cellBarycenter(const Cell c) const
void requireFaceGeometry()
Forces the computation of face geometry.
const FaceRange & cellFaces(const Cell c) const
static bool computeDelaunayCellComplex(ConvexCellComplex< Point > &cell_complex, const PointRange &input_points, bool remove_duplicates=true)
static bool writeOBJ(std::ostream &output, const SurfaceMesh &smesh)
Aim: Represents an embedded mesh as faces and a list of vertices. Vertices may be shared among faces ...
int main(int argc, char **argv)