34#if defined(ChordNaivePlaneComputer_RECURSES)
35#error Recursive header files inclusion detected in ChordNaivePlaneComputer.h
38#define ChordNaivePlaneComputer_RECURSES
40#if !defined ChordNaivePlaneComputer_h
42#define ChordNaivePlaneComputer_h
48#include "DGtal/base/Common.h"
49#include "DGtal/kernel/CSignedNumber.h"
50#include "DGtal/kernel/CSpace.h"
51#include "DGtal/geometry/surfaces/ParallelStrip.h"
154 template <
typename TSpace,
155 typename TInputPoint,
156 typename TInternalScalar >
176 typedef typename InputPointSet::size_type
Size;
272 template <
typename TInputIterator>
274 std::pair<InternalScalar, InternalScalar>
383 template <
typename TInputIterator>
384 bool extend( TInputIterator itB, TInputIterator itE );
400 template <
typename TInputIterator>
412 template <
typename TInputIterator>
414 satisfies( TInputIterator itB, TInputIterator itE )
const;
425 template <
typename TInputIterator>
426 std::pair<InternalScalar, InternalScalar>
427 axisWidth( TInputIterator itB, TInputIterator itE )
const;
453 template <
typename Vector3D>
467 template <
typename Vector3D>
503 template <
typename TVector1,
typename TVector2>
512 template <
typename TVector1,
typename TVector2>
560 template <
typename TInputIterator>
580 template <
typename TInputIterator>
699 template <
typename TInputIterator>
702 template <
typename TInputIterator>
704 template <
typename TInputIterator>
706 template <
typename TInputIterator1,
typename TInputIterator2>
708 TInputIterator1 itB1, TInputIterator1 itE1,
709 TInputIterator2 itB2, TInputIterator2 itE2 )
const;
744 template <
typename TInputIterator>
759 template <
typename TInputIterator>
760 std::pair<InternalScalar, InternalScalar>
794 template <
typename TSpace,
typename TInputPo
int,
typename TInternalScalar>
804#include "DGtal/geometry/surfaces/ChordNaivePlaneComputer.ih"
811#undef ChordNaivePlaneComputer_RECURSES
Aim: A class that contains the chord-based algorithm for recognizing pieces of digital planes of give...
bool extend(TInputIterator itB, TInputIterator itE)
BOOST_CONCEPT_ASSERT((concepts::CSpace< TSpace >))
bool extend(const InputPoint &p)
void selfDisplay(std::ostream &out) const
bool checkPlaneWidth(const State &state) const
void getBounds(double &min, double &max) const
~ChordNaivePlaneComputer()
void setUpNormal2(State &state) const
ChordNaivePlaneComputer & operator=(const ChordNaivePlaneComputer &other)
void getUnitNormal(Vector3D &normal) const
static void internalCross(InternalVector &n, const TVector1 &u, const TVector2 &v)
const InputPoint & minimalPoint() const
InputPointSet::const_iterator ConstIterator
void computeMinMax(State &state, TInputIterator itB, TInputIterator itE) const
unsigned int findTriangle1(State &state, TInputIterator itB, TInputIterator itE) const
static std::pair< InternalScalar, InternalScalar > computeAxisWidth(Dimension axis, TInputIterator itB, TInputIterator itE)
InputPoint::Coordinate Coordinate
int signDelta(const InputPoint &A, const InputPoint &C) const
std::pair< InternalScalar, InternalScalar > axisWidth(TInputIterator itB, TInputIterator itE) const
BOOST_STATIC_ASSERT((TInputPoint::dimension==3))
InputPointSet::difference_type difference_type
bool checkWidth(const State &state) const
bool newCurrentTriangle(State &state, const InputPoint &M) const
const InternalVector & exactNormal() const
Primitive primitive() const
void setUpNormal3(State &state) const
bool satisfies(TInputIterator itB, TInputIterator itE) const
ConstIterator begin() const
InputPointSet::const_pointer const_pointer
void selfDisplay(std::ostream &out, const State &state) const
InputPointSet::const_reference const_reference
void setUpNormal(State &state) const
bool satisfies(State &state, TInputIterator itB, TInputIterator itE) const
bool extendAsIs(const InputPoint &p)
bool operator()(const Point &p) const
TInternalScalar InternalScalar
ParallelStrip< Space, true, true > Primitive
unsigned int findTriangle(State &state, TInputIterator itB, TInputIterator itE) const
InputPointSet::size_type Size
void init(Dimension axis, InternalScalar widthNumerator=NumberTraits< InternalScalar >::ONE, InternalScalar widthDenominator=NumberTraits< InternalScalar >::ONE)
InputPointSet::iterator Iterator
BOOST_STATIC_ASSERT((TSpace::dimension==3))
unsigned int findMixedTriangle(State &state, TInputIterator1 itB1, TInputIterator1 itE1, TInputIterator2 itB2, TInputIterator2 itE2) const
bool updateMinMax(State &state, TInputIterator itB, TInputIterator itE) const
void computeNormal(State &state) const
ChordNaivePlaneComputer(const ChordNaivePlaneComputer &other)
bool setUp1(const InputPoint &p1)
InputPointSet::const_iterator const_iterator
InputPointSet::value_type value_type
void computeHeight(State &state) const
ConstIterator end() const
bool isExtendable(const InputPoint &p) const
std::pair< InternalScalar, InternalScalar > axisWidth(State &state, TInputIterator itB, TInputIterator itE) const
void setUpNormal1(State &state) const
bool alignedAlongAxis(const InputPoint &p1, const InputPoint &p2) const
static InternalScalar internalDot(const TVector1 &u, const TVector2 &v)
InputVector::Component Component
InputPointSet::size_type size_type
std::set< InputPoint > InputPointSet
PointVector< 3, InternalScalar > InternalVector
int signDelta(const InputPoint &A, const InputPoint &B, const InputPoint &C) const
void getNormal(Vector3D &normal) const
BOOST_CONCEPT_ASSERT((concepts::CSignedNumber< TInternalScalar >))
bool isExtendable(TInputIterator itB, TInputIterator itE) const
const InputPoint & maximalPoint() const
ChordNaivePlaneComputer()
unsigned int findTriangle2(State &state, TInputIterator itB, TInputIterator itE) const
Aim: A parallel strip in the space is the intersection of two parallel half-planes such that each hal...
Aim: Implements basic operations that will be used in Point and Vector classes.
DGtal is the top-level namespace which contains all DGtal functions and types.
std::ostream & operator<<(std::ostream &out, const ClosedIntegerHalfPlane< TSpace > &object)
DGtal::uint32_t Dimension
Aim: The traits class for all models of Cinteger.
Aim: Concept checking for Signed Numbers. Models of this concept should be listed in NumberTraits cla...
Aim: Defines the concept describing a digital space, ie a cartesian product of integer lines.