CGAL 6.1 - 3D Skin Surface Meshing

Loading...
Searching...
No Matches
Modules | Classes | Functions
Reference Manual

##

Nico Kruithof
This package allows to build a triangular mesh of a skin surface. Skin surfaces are used for modeling large molecules in biological computing. The surface is defined by a set of balls, representing the atoms of the molecule, and a shrink factor that determines the size of the smooth patches gluing the balls together. The construction of a triangular mesh of a smooth skin surface is often necessary for further analysis and for fast visualization. This package provides functions to construct a triangular mesh approximating the skin surface from a set of balls and a shrink factor. It also contains code to subdivide the mesh efficiently.
Introduced in: CGAL 3.3
Depends on: 3D Triangulations and 3D Polyhedral Surface
BibTeX: cgal:k-ssm3-25b
License: GPL

## Classified Reference Pages

## Concepts

- `SkinSurface_3`
- `SkinSurfaceTraits_3`

## Classes

- `CGAL::Skin_surface_3<SkinSurfaceTraits_3>`
- `CGAL::Union_of_balls_3<SkinSurfaceTraits_3>`
- `CGAL::Skin_surface_traits_3<K>`

## Functions

- `CGAL::make_skin_surface_mesh_3<Polyhedron_3>()`
- `CGAL::mesh_skin_surface_3<SkinSurface_3, Polyhedron_3>()`
- `CGAL::subdivide_skin_surface_mesh_3<SkinSurface_3, Polyhedron_3>()`

## Modules
| Concepts

## Classes
class | CGAL::Skin_surface_3< SkinSurfaceTraits_3 >
| The `Skin_surface_3` is the main class in this package. More...
struct | CGAL::Skin_surface_polyhedral_items_3< SkinSurface3 >
| An items class for the `Polyhedron_3` that stores information in faces instead of an auxiliary data structure. More...
class | CGAL::Skin_surface_traits_3< K >
| The class `Skin_surface_traits_3` is designed as a default traits class for the class `Skin_surface_3<SkinSurfaceTraits_3>`. More...
class | CGAL::Union_of_balls_3< SkinSurfaceTraits_3 >
| The `Union_of_balls_3` is used to represent a skin surface with shrink factor equal to one, which is the boundary of the union of the input balls. More...

## Functions
template<class WP_iterator , class Polyhedron >
void | CGAL::make_skin_surface_mesh_3 (Polyhedron &p, WP_iterator begin, WP_iterator end, double shrink_factor=.5, int nSubdivisions=0, bool grow_balls=true)
| constructs a mesh of the skin surface defined by the weighted points and the shrink factor.
template<typename SkinSurface_3 , typename Polyhedron >
void | CGAL::mesh_skin_surface_3 (const SkinSurface_3 &skin_surface, Polyhedron &p)
| constructs a mesh of the `skin_surface` in `p`.
template<class SkinSurface_3 , class Polyhedron >
void | CGAL::subdivide_skin_surface_mesh_3 (const SkinSurface_3 &skin_surface, Polyhedron &p, int nSubdiv=1)
| subdivides a skin surface mesh constructed by the function `mesh_skin_surface_3()` using `nSubdiv` 1-4 split operations (each triangle is split into four sub-triangles) and the new vertices are moved towards the skin surface.

## Function Documentation

## ◆ make_skin_surface_mesh_3()

template<class WP_iterator , class Polyhedron >

void CGAL::make_skin_surface_mesh_3 | ( | Polyhedron & | p,
|  | WP_iterator | begin,
|  | WP_iterator | end,
|  | double | shrink_factor = `.5`,
|  | int | nSubdivisions = `0`,
|  | bool | grow_balls = `true`
| ) |  |

`#include <CGAL/make_skin_surface_mesh_3.h>`

constructs a mesh of the skin surface defined by the weighted points and the shrink factor.

The function `make_skin_surface_mesh_3()` constructs a mesh isotopic to the skin surface based on the algorithm in [2]. It takes as input a range of weighted points and a shrink factor and outputs the mesh in a `Polyhedron_3` object. A number of subdivision steps might be applied to refine the mesh.

Template Parameters

  WP_iterator | must be an input iterator with weighted points as value type.
  Polyhedron | must be an instance of `Polyhedron_3`.

Precondition
  `Polyhedron::HDS` can be used as the template argument of the `Polyhedron_incremental_builder_3<HDS>`.

Examples
  Skin_surface_3/skin_surface_simple.cpp.

## ◆ mesh_skin_surface_3()

template<typename SkinSurface_3 , typename Polyhedron >

void CGAL::mesh_skin_surface_3 | ( | const SkinSurface_3 & | skin_surface,
|  | Polyhedron & | p
| ) |  |

`#include <CGAL/mesh_skin_surface_3.h>`

constructs a mesh of the `skin_surface` in `p`.

The function `mesh_skin_surface_3()` constructs a mesh isotopic to the skin surface based on the algorithm in [2]. It takes as input a `SkinSurface_3` object, which is a model of the `SkinSurface_3` concept and outputs the mesh in a `Polyhedron_3` object.

Template Parameters

  SkinSurface_3 | must be a model of the concept `SkinSurface_3`.
  Polyhedron | must be an instance of `Polyhedron_3`.

Precondition
  `Polyhedron::HDS` can be used as the template argument of the `Polyhedron_incremental_builder_3<HDS>`.

Examples
  Skin_surface_3/skin_surface_pdb_reader.cpp, Skin_surface_3/skin_surface_retrieve_defining_weighted_points.cpp, Skin_surface_3/skin_surface_subdiv.cpp, and Skin_surface_3/skin_surface_subdiv_with_normals.cpp.

## ◆ subdivide_skin_surface_mesh_3()

template<class SkinSurface_3 , class Polyhedron >

void CGAL::subdivide_skin_surface_mesh_3 | ( | const SkinSurface_3 & | skin_surface,
|  | Polyhedron & | p,
|  | int | nSubdiv = `1`
| ) |  |

`#include <CGAL/subdivide_skin_surface_mesh_3.h>`

subdivides a skin surface mesh constructed by the function `mesh_skin_surface_3()` using `nSubdiv` 1-4 split operations (each triangle is split into four sub-triangles) and the new vertices are moved towards the skin surface.

Template Parameters

  SkinSurface_3 | must be a model of the concept `SkinSurface_3`.
  Polyhedron | must be an instance of `Polyhedron_3`.

Examples
  Skin_surface_3/skin_surface_subdiv.cpp, and Skin_surface_3/skin_surface_subdiv_with_normals.cpp.