CGAL 6.1.1 - 3D Isosurfacing

Loading...
Searching...
No Matches
List of all members | Public Member Functions | Public Attributes
CGAL::Isosurfacing::Dichotomy_edge_intersection Struct Reference
Reference Manual » Isosurfacing Domains » Isosurfacing Domain Helpers

`#include <CGAL/Isosurfacing_3/edge_intersection_oracles_3.h>`

## Definition

The class `Dichotomy_edge_intersection` uses a dichotomy to find the intersection point between an edge and the isosurface.

Is model of
  `IsosurfacingEdgeIntersectionOracle_3`

This class is for example suitable to be used as the `EdgeIntersectionOracle` template parameter of isosurfacing domain classes when values are computed using an implicit function.

Warning
  It is not optimal to use this class when values are interpolated from discrete values since the intersection can be computed analytically in this case.

See also
  `CGAL::Isosurfacing::Linear_interpolation_edge_intersection`
  `CGAL::Isosurfacing::Marching_cubes_domain_3`
  `CGAL::Isosurfacing::Dual_contouring_domain_3`

## Public Member Functions
| Dichotomy_edge_intersection (unsigned int max_iterations=10, double relative_eps=1e-7)
| Constructor, enabling setting up the two criteria which can stop the dichotomy: either a threshold on the value (i.e., the difference between the isovalue and the value at the current point is smaller than `relative_eps * isovalue`), or a maximum number of iterations.
template<typename Domain >
bool | operator() (const typename Domain::Geom_traits::Point_3 &p_0, const typename Domain::Geom_traits::Point_3 &p_1, const typename Domain::Geom_traits::FT val_0, const typename Domain::Geom_traits::FT val_1, const Domain &domain, const typename Domain::Geom_traits::FT isovalue, typename Domain::Geom_traits::Point_3 &p) const
| computes the intersection point between an edge and the isosurface.

## Public Attributes
unsigned int | m_max_iterations
double | m_relative_eps

## Member Function Documentation

## ◆ operator()()

template<typename Domain >

bool CGAL::Isosurfacing::Dichotomy_edge_intersection::operator() | ( | const typename Domain::Geom_traits::Point_3 & | p_0,
|  | const typename Domain::Geom_traits::Point_3 & | p_1,
|  | const typename Domain::Geom_traits::FT | val_0,
|  | const typename Domain::Geom_traits::FT | val_1,
|  | const Domain & | domain,
|  | const typename Domain::Geom_traits::FT | isovalue,
|  | typename Domain::Geom_traits::Point_3 & | p
| ) |  | const

computes the intersection point between an edge and the isosurface.

The result (if it exists) is stored in `p`.

Template Parameters

  Domain | must be a model of `IsosurfacingDomain_3`

Parameters

  p_0 | the location of the first vertex of the edge
  p_1 | the location of the second vertex of the edge
  val_0 | the value at the first vertex of the edge
  val_1 | the value at the second vertex of the edge
  domain | the isosurfacing domain
  isovalue | the isovalue defining the isosurface with which we seek an intersection
  p | the intersection point, if it exists

Returns
  `true` if the intersection point exists, `false` otherwise