Skip to content

Instantly share code, notes, and snippets.

@Hodapp87
Created August 16, 2018 17:51
Show Gist options
  • Save Hodapp87/c114cfa385c2797dd70f39a1b816c83c to your computer and use it in GitHub Desktop.
Save Hodapp87/c114cfa385c2797dd70f39a1b816c83c to your computer and use it in GitHub Desktop.

CGAL dabbling

(setq org-confirm-babel-evaluate nil)
(setq org-src-fontify-natively t)
(setq org-src-tab-acts-natively t)
(org-version)
gcc --version
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>

#include <CGAL/Mesh_triangulation_3.h>
#include <CGAL/Mesh_complex_3_in_triangulation_3.h>
#include <CGAL/Mesh_criteria_3.h>

#include <CGAL/Implicit_mesh_domain_3.h>
#include <CGAL/make_mesh_3.h>
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
typedef K::FT FT;
typedef K::Point_3 Point;
typedef FT (Function)(const Point&);
typedef CGAL::Implicit_mesh_domain_3<Function,K> Mesh_domain;

#ifdef CGAL_CONCURRENT_MESH_3
typedef CGAL::Parallel_tag Concurrency_tag;
#else
typedef CGAL::Sequential_tag Concurrency_tag;
#endif
typedef CGAL::Mesh_triangulation_3<Mesh_domain,CGAL::Default,Concurrency_tag>::type Tr;
typedef CGAL::Mesh_complex_3_in_triangulation_3<Tr> C3t3;
typedef CGAL::Mesh_criteria_3<Tr> Mesh_criteria;
FT sphere_function (const Point& p) {
    return CGAL::squared_distance(p, Point(CGAL::ORIGIN))-1;
}
<<includes>>

using namespace CGAL::parameters;

<<typesDomain>>
<<typesTriangulation>>
<<typesCriteria>>
<<sphereFunction>>

int main()
{
    // Domain (Warning: Sphere_3 constructor uses squared radius !)
    Mesh_domain domain(sphere_function,
                       K::Sphere_3(CGAL::ORIGIN, 2.));
    // Mesh criteria
    Mesh_criteria criteria(facet_angle=30, facet_size=0.1, facet_distance=0.025,
                           cell_radius_edge_ratio=2, cell_size=0.1);

    std::cout << "Generating..." << std::endl;
    // Mesh generation
    C3t3 c3t3 = CGAL::make_mesh_3<C3t3>(domain, criteria);

    // Output
    std::ofstream medit_file("out.mesh");
    c3t3.output_to_medit(medit_file);

    std::cout << "Done" << std::endl;

    return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment