/usr/include/CGAL/make_surface_mesh.h is in libcgal-dev 4.5-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 | // Copyright (c) 2006-2007 INRIA Sophia-Antipolis (France).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).
// You can redistribute it and/or modify it under the terms of the GNU
// General Public License as published by the Free Software Foundation,
// either version 3 of the License, or (at your option) any later version.
//
// Licensees holding a valid commercial license may use this file in
// accordance with the commercial license agreement provided with the software.
//
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
//
// $URL$
// $Id$
//
// Author(s) : Laurent Rineau
#ifndef CGAL_MAKE_SURFACE_MESH_H
#define CGAL_MAKE_SURFACE_MESH_H
#include <CGAL/Surface_mesher_generator.h>
#include <CGAL/Surface_mesh_complex_2_in_triangulation_3.h>
#include <CGAL/Surface_mesh_cell_base_3.h>
#include <CGAL/Surface_mesh_vertex_base_3.h>
#include <CGAL/Surface_mesh_default_criteria_3.h>
#include <CGAL/iterator.h> // CGAL::inserter()
#include <CGAL/Surface_mesher/Verbose_flag.h>
#ifdef CGAL_SURFACE_MESHER_VERBOSE
# define CGAL_SURFACE_MESHER_VERBOSITY ::CGAL::Surface_mesher::VERBOSE
#else
# define CGAL_SURFACE_MESHER_VERBOSITY ::CGAL::Surface_mesher::NOT_VERBOSE
#endif
namespace CGAL {
template <typename C2T3,
typename Surface,
typename Criteria,
typename Tag>
void make_surface_mesh(C2T3& c2t3,
const Surface& surface,
const Criteria& criteria,
Tag tag,
int initial_number_of_points = 20) // TODO: document
// this parameter
{
typedef typename Surface_mesh_traits_generator_3<Surface>::type Traits;
make_surface_mesh(c2t3, surface, Traits(), criteria, tag,
initial_number_of_points);
}
template <typename C2T3,
typename SurfaceMeshTraits_3,
typename Criteria,
typename Tag>
void make_surface_mesh(C2T3& c2t3,
const typename SurfaceMeshTraits_3::Surface_3& surface,
const SurfaceMeshTraits_3& surface_mesh_traits,
const Criteria& criteria,
Tag,
int initial_number_of_points = 20)
{
// typedef typename Make_surface_mesh_helper<
// C2T3,
// SurfaceMeshTraits_3,
// Criteria,
// Tag>::Mesher_base Mesher_base;
// #ifdef CGAL_SURFACE_MESHER_VERBOSE
// typedef Surface_mesher::Surface_mesher<
// Mesher_base,
// typename Surface_mesher::details::Facet_generator<Mesher_base>::type,
// Null_mesher_level,
// Surface_mesher::VERBOSE> Mesher;
// #else
// typedef Surface_mesher::Surface_mesher<Mesher_base> Mesher;
// #endif
typedef typename Surface_mesher_generator<
C2T3,
SurfaceMeshTraits_3,
Criteria,
Tag,
CGAL_SURFACE_MESHER_VERBOSITY >::type Mesher;
typename SurfaceMeshTraits_3::Construct_initial_points get_initial_points =
surface_mesh_traits.construct_initial_points_object();
get_initial_points(surface,
CGAL::inserter(c2t3.triangulation()),
initial_number_of_points);
Mesher mesher(c2t3, surface, surface_mesh_traits, criteria);
mesher.refine_mesh();
// TODO initial, then refine()
}
/** For surfaces with curve edges. Implicit SurfaceMeshTraits_3. */
template <typename C2T3,
typename Surface,
typename FacetsCriteria,
typename EdgesCriteria,
typename Tag>
void make_piecewise_smooth_surface_mesh(C2T3& c2t3,
const Surface& surface,
const FacetsCriteria& facets_criteria,
const EdgesCriteria& edges_criteria,
Tag tag,
int initial_number_of_points = 20)
{
typedef typename Surface_mesh_traits_generator_3<Surface>::type Traits;
make_piecewise_smooth_surface_mesh(c2t3, surface, Traits(),
facets_criteria, edges_criteria,
tag,
initial_number_of_points);
}
/** For surfaces with curve edges. Explicit SurfaceMeshTraits_3. */
template <typename C2T3,
typename SurfaceMeshTraits_3,
typename FacetsCriteria,
typename EdgesCriteria,
typename Tag>
void
make_piecewise_smooth_surface_mesh(C2T3& c2t3,
const typename SurfaceMeshTraits_3::Surface_3& surface,
const SurfaceMeshTraits_3& surface_mesh_traits,
const FacetsCriteria& facets_criteria,
const EdgesCriteria& edges_criteria,
Tag,
int initial_number_of_points = 20)
{
typedef typename Make_surface_mesh_helper<
C2T3,
SurfaceMeshTraits_3,
FacetsCriteria,
Tag>::Mesher_base Facets_mesher_base;
typedef Surface_mesher::Surface_mesher_edges_level_base<
C2T3,
typename SurfaceMeshTraits_3::Surface_3,
SurfaceMeshTraits_3,
EdgesCriteria> Edges_mesher_base;
#ifdef CGAL_SURFACE_MESHER_VERBOSE
typedef Surface_mesher::Surface_mesher<
Edges_mesher_base,
typename Surface_mesher::details::Edge_generator<Edges_mesher_base>::type,
Null_mesher_level,
Surface_mesher::VERBOSE> Edges_level;
#else
typedef Surface_mesher::Surface_mesher<
Edges_mesher_base,
typename Surface_mesher::details::Edge_generator<Edges_mesher_base>::type
> Edges_level;
#endif
#ifdef CGAL_SURFACE_MESHER_VERBOSE
typedef Surface_mesher::Surface_mesher<
Facets_mesher_base,
typename Surface_mesher::details::Facet_generator<Facets_mesher_base>::type,
Edges_level,
Surface_mesher::VERBOSE> Facets_level;
#else
typedef Surface_mesher::Surface_mesher<
Facets_mesher_base,
typename Surface_mesher::details::Facet_generator<Facets_mesher_base>::type,
Edges_level> Facets_level;
#endif
typename SurfaceMeshTraits_3::Construct_initial_points get_initial_points =
surface_mesh_traits.construct_initial_points_object();
typedef Surface_mesher::Visitor<typename C2T3::Triangulation,
Facets_level, Null_mesh_visitor> Edges_level_visitor;
typedef Surface_mesher::Edges_level_visitor<typename C2T3::Triangulation,
Edges_level, Edges_level_visitor> Facets_and_edges_visitor;
get_initial_points(surface,
CGAL::inserter(c2t3.triangulation()),
initial_number_of_points);
Edges_level edges_level(c2t3, surface, surface_mesh_traits, edges_criteria);
Facets_level facets_level(c2t3, surface, surface_mesh_traits, facets_criteria,
edges_level);
Null_mesh_visitor null_mesh_visitor;
Edges_level_visitor edges_level_visitor(&facets_level, &null_mesh_visitor);
Facets_and_edges_visitor facets_and_edges_visitor(&edges_level, &edges_level_visitor);
edges_level.init();
edges_level.refine_mesh();
facets_level.scan_triangulation();
facets_level.refine_mesh(facets_and_edges_visitor);
}
} // end namespace CGAL
#endif // CGAL_MAKE_SURFACE_MESH_H
|