\( \newcommand{\E}{\mathrm{E}} \) \( \newcommand{\A}{\mathrm{A}} \) \( \newcommand{\R}{\mathrm{R}} \) \( \newcommand{\N}{\mathrm{N}} \) \( \newcommand{\Q}{\mathrm{Q}} \) \( \newcommand{\Z}{\mathrm{Z}} \) \( \def\ccSum #1#2#3{ \sum_{#1}^{#2}{#3} } \def\ccProd #1#2#3{ \sum_{#1}^{#2}{#3} }\)

CGAL 4.8 - Point Set Shape Detection

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
List of all members | Public Types | Public Member Functions | Protected Member Functions
CGAL::Shape_detection_3::Shape_base< Traits > Class Template Referenceabstract
Shapes

`#include <CGAL/Shape_detection_3/Shape_base.h>`

Inherited by CGAL::Shape_detection_3::Cone< Traits >, CGAL::Shape_detection_3::Cylinder< Traits >, CGAL::Shape_detection_3::Plane< Traits >, CGAL::Shape_detection_3::Sphere< Traits >, and CGAL::Shape_detection_3::Torus< Traits >.

## Definition

Base class for shape types defining an interface to construct a shape from a set of points and to compute the point distance and normal deviation from the surface normal.

It is used during detection to identify the inliers from the input data and to extract the largest connected component in inlier points.

Examples:
  Point_set_shape_detection_3/efficient_RANSAC_custom_shape.h.

## Public Types
typedef Traits::FT | FT
| number type.
typedef Traits::Point_3 | Point_3
| point type.
typedef Traits::Vector_3 | Vector_3
| vector type.

## Public Member Functions
const std::vector< std::size_t > & | indices_of_assigned_points () const
| returns the indices of the points in the input range assigned to this shape.
virtual std::string | info () const
| returns a string containing the shape type and the numerical parameters.
virtual FT | squared_distance (const Point_3 &p) const =0
| Computes the squared Euclidean distance from the query point `p` to the shape.

## Protected Member Functions
virtual void | create_shape (const std::vector< std::size_t > &indices)=0
| Constructs the shape based on a minimal set of samples from the input data.
virtual std::size_t | connected_component (std::vector< std::size_t > &indices, FT cluster_epsilon)
| Determines the largest cluster of inlier points. More...
std::size_t | connected_component_kdTree (std::vector< std::size_t > &indices, FT cluster_epsilon)
| Determines the largest cluster with a point-to-point distance not larger than `cluster_epsilon`. More...
virtual void | squared_distance (const std::vector< std::size_t > &indices, std::vector< FT > &distances) const =0
| Computes the squared Euclidean distance from a set of points to the shape. More...
virtual void | cos_to_normal (const std::vector< std::size_t > &indices, std::vector< FT > &angles) const =0
| Computes the deviation of the point normal from the surface normal at the projected point in form of the dot product and writes the result into the provided `angles` vector.
virtual std::size_t | minimum_sample_size () const =0
| Returns minimal number of sample points required for construction.
boost::property_traits < typename Traits::Point_map > ::reference | point (std::size_t i) const
| Retrieves the point location from its index.
boost::property_traits < typename Traits::Normal_map > ::reference | normal (std::size_t i) const
| Retrieves the normal vector from its index.
const Traits & | traits () const
| Retrieves the traits class.

## Member Function Documentation

template<class Traits >

virtual std::size_t CGAL::Shape_detection_3::Shape_base< Traits >::connected_component | ( | std::vector< std::size_t > & | indices,
|  | FT | cluster_epsilon
| ) |  |
| protected virtual

Determines the largest cluster of inlier points.

A point belongs to a cluster if there is a point in the cluster closer than `cluster_epsilon` distance.

template<class Traits >

std::size_t CGAL::Shape_detection_3::Shape_base< Traits >::connected_component_kdTree | ( | std::vector< std::size_t > & | indices,
|  | FT | cluster_epsilon
| ) |  |
| protected

Determines the largest cluster with a point-to-point distance not larger than `cluster_epsilon`.

This general version performs a region growing within the inliers using a kd-tree.

template<class Traits >

virtual void CGAL::Shape_detection_3::Shape_base< Traits >::squared_distance | ( | const std::vector< std::size_t > & | indices,
|  | std::vector< FT > & | distances
| ) |  | const
| protected pure virtual

Computes the squared Euclidean distance from a set of points to the shape.

The distances will be stored in the so called parameter.