DGtal  0.6.devel
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Public Types | Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes
DGtal::deprecated::DomainMetricAdjacency< Domain, maxNorm1, dimension > Class Template Reference

#include <DomainMetricAdjacency.h>

Public Types

typedef Domain::Space Space
typedef Space::Point Point
typedef Space::Vector Vector

Public Member Functions

 DomainMetricAdjacency (const Domain &aDomain)
 DomainMetricAdjacency (const DomainMetricAdjacency &other)
 ~DomainMetricAdjacency ()
bool isAdjacentTo (const Point &p1, const Point &p2) const
bool isProperlyAdjacentTo (const Point &p1, const Point &p2) const
template<typename OutputIterator >
void writeNeighborhood (const Point &p, OutputIterator &out_it) const
template<typename OutputIterator >
void writeProperNeighborhood (const Point &p, OutputIterator &out_it) const
void selfDisplay (std::ostream &out) const
bool isValid () const

Protected Member Functions

 DomainMetricAdjacency ()

Private Member Functions

 BOOST_CONCEPT_ASSERT ((CDomain< Domain >))
DomainMetricAdjacencyoperator= (const DomainMetricAdjacency &other)

Private Attributes

const Domain & myDomain

Detailed Description

template<typename Domain, Dimension maxNorm1, Dimension dimension = Domain::Space::dimension>
class DGtal::deprecated::DomainMetricAdjacency< Domain, maxNorm1, dimension >

Aim: Describes digital adjacencies in a digital domain that are defined with the 1-norm and the infinity-norm.

Description of template class 'DomainMetricAdjacency'

It induces the classical 4 and 8 adjacencies in 2D, the 6, 18 and 26 adjacencies in 3D, and the \( \omega \) and \( \alpha \) adjacencies in nD.

Model of a CAdjacency.

Template Parameters:
Domainany domain of a digital space (see concept CDomain).
maxNorm1defines which points are adjacent. More precisely, two points are adjacent iff their norm-infinity is less or equal than 1 and if their norm-1 is less or equal than maxNorm1.

Definition at line 75 of file DomainMetricAdjacency.h.


Member Typedef Documentation

template<typename Domain , Dimension maxNorm1, Dimension dimension = Domain::Space::dimension>
typedef Space::Point DGtal::deprecated::DomainMetricAdjacency< Domain, maxNorm1, dimension >::Point

Definition at line 81 of file DomainMetricAdjacency.h.

template<typename Domain , Dimension maxNorm1, Dimension dimension = Domain::Space::dimension>
typedef Domain::Space DGtal::deprecated::DomainMetricAdjacency< Domain, maxNorm1, dimension >::Space

Definition at line 80 of file DomainMetricAdjacency.h.

template<typename Domain , Dimension maxNorm1, Dimension dimension = Domain::Space::dimension>
typedef Space::Vector DGtal::deprecated::DomainMetricAdjacency< Domain, maxNorm1, dimension >::Vector

Definition at line 82 of file DomainMetricAdjacency.h.


Constructor & Destructor Documentation

template<typename Domain , Dimension maxNorm1, Dimension dimension>
DGtal::deprecated::DomainMetricAdjacency< Domain, maxNorm1, dimension >::DomainMetricAdjacency ( const Domain &  aDomain)
inline

Constructor from domain.

Parameters:
aDomainany domain.

Constructor from a domain.

Parameters:
aDomainany domain.

Definition at line 48 of file DomainMetricAdjacency.ih.

: myDomain( aDomain )
{
}
template<typename Domain , Dimension maxNorm1, Dimension dimension>
DGtal::deprecated::DomainMetricAdjacency< Domain, maxNorm1, dimension >::DomainMetricAdjacency ( const DomainMetricAdjacency< Domain, maxNorm1, dimension > &  other)
inline

Copy constructor.

Parameters:
otherthe object to clone.

Copy Constructor.

Parameters:
otherthe object to clone.

Definition at line 60 of file DomainMetricAdjacency.ih.

: myDomain( other.myDomain )
{
}
template<typename Domain , Dimension maxNorm1, Dimension dimension>
DGtal::deprecated::DomainMetricAdjacency< Domain, maxNorm1, dimension >::~DomainMetricAdjacency ( )
inline

Destructor.

Definition at line 71 of file DomainMetricAdjacency.ih.

{
}
template<typename Domain , Dimension maxNorm1, Dimension dimension = Domain::Space::dimension>
DGtal::deprecated::DomainMetricAdjacency< Domain, maxNorm1, dimension >::DomainMetricAdjacency ( )
protected

Constructor. Forbidden by default (protected to avoid g++ warnings).


Member Function Documentation

template<typename Domain , Dimension maxNorm1, Dimension dimension = Domain::Space::dimension>
DGtal::deprecated::DomainMetricAdjacency< Domain, maxNorm1, dimension >::BOOST_CONCEPT_ASSERT ( (CDomain< Domain >)  )
private
template<typename Domain , Dimension maxNorm1, Dimension dimension>
bool DGtal::deprecated::DomainMetricAdjacency< Domain, maxNorm1, dimension >::isAdjacentTo ( const Point p1,
const Point p2 
) const
inline
Parameters:
p1any point in this space.
p2any point in this space.
Returns:
'true' iff p1 is adjacent to p2 according to this adjacency relation.

Definition at line 90 of file DomainMetricAdjacency.ih.

{
ASSERT( myDomain.isInside( p1 ) && myDomain.isInside( p2 ) );
Vector v( p2 - p1 );
return ( v.normInfinity() <= 1 ) && ( v.norm1() <= maxNorm1 );
}
template<typename Domain , Dimension maxNorm1, Dimension dimension>
bool DGtal::deprecated::DomainMetricAdjacency< Domain, maxNorm1, dimension >::isProperlyAdjacentTo ( const Point p1,
const Point p2 
) const
inline
Parameters:
p1any point in this space.
p2any point in this space.
Returns:
'true' iff p1 is adjacent to p2 according to this adjacency relation and p1 != p2.

Definition at line 108 of file DomainMetricAdjacency.ih.

{
ASSERT( myDomain.isInside( p1 ) && myDomain.isInside( p2 ) );
Vector v( p2 - p1 );
if ( v.normInfinity() <= 1 )
{
typename Vector::UnsignedComponent n1 = v.norm1();
return ( n1 <= maxNorm1 ) && ( n1 != 0 );
}
return false;
}
template<typename Domain , Dimension maxNorm1, Dimension dimension>
bool DGtal::deprecated::DomainMetricAdjacency< Domain, maxNorm1, dimension >::isValid ( ) const
inline

Checks the validity/consistency of the object.

Returns:
'true' if the object is valid, 'false' otherwise.

Definition at line 221 of file DomainMetricAdjacency.ih.

{
return true;
}
template<typename Domain , Dimension maxNorm1, Dimension dimension = Domain::Space::dimension>
DomainMetricAdjacency& DGtal::deprecated::DomainMetricAdjacency< Domain, maxNorm1, dimension >::operator= ( const DomainMetricAdjacency< Domain, maxNorm1, dimension > &  other)
private

Assignment.

Parameters:
otherthe object to copy.
Returns:
a reference on 'this'. Forbidden by default.
template<typename Domain , Dimension maxNorm1, Dimension dimension>
void DGtal::deprecated::DomainMetricAdjacency< Domain, maxNorm1, dimension >::selfDisplay ( std::ostream &  out) const
inline

Writes/Displays the object on an output stream.

Parameters:
outthe output stream where the object is written.

Definition at line 208 of file DomainMetricAdjacency.ih.

{
out << "[DomainMetricAdjacency domain="
<< myDomain << "]";
}
template<typename Domain , Dimension maxNorm1, Dimension dimension>
template<typename OutputIterator >
void DGtal::deprecated::DomainMetricAdjacency< Domain, maxNorm1, dimension >::writeNeighborhood ( const Point p,
OutputIterator &  out_it 
) const

Outputs the whole neighborhood of point [p] as a sequence of *out_it++ = ...

Template Parameters:
OutputIteratorany output iterator (like std::back_insert_iterator< std::vector<int> >).
Parameters:
pany point of this space.
out_itany output iterator.

Definition at line 134 of file DomainMetricAdjacency.ih.

{
Point p1( p );
for ( typename Point::Iterator it = p1.begin(); it != p1.end(); ++it )
--(*it);
Point p2( p );
for ( typename Point::Iterator it = p2.begin(); it != p2.end(); ++it )
++(*it);
typedef HyperRectDomain<Space> LocalDomain;
LocalDomain domain( p1, p2 );
for ( typename LocalDomain::ConstIterator it = domain.begin();
it != domain.end();
++it )
{
if ( myDomain.isInside( *it ) )
{
Vector v( p - *it );
typename Vector::UnsignedComponent n1 = v.norm1();
if ( n1 <= maxNorm1 )
*out_it++ = *it;
}
}
}
template<typename Domain , Dimension maxNorm1, Dimension dimension>
template<typename OutputIterator >
void DGtal::deprecated::DomainMetricAdjacency< Domain, maxNorm1, dimension >::writeProperNeighborhood ( const Point p,
OutputIterator &  out_it 
) const

Outputs the whole proper neighborhood of point [p] (thus without [p] itself) as a sequence of *out_it++ = ...

Template Parameters:
OutputIteratorany output iterator (like std::back_insert_iterator< std::vector<int> >).
Parameters:
pany point of this space.
out_itany output iterator.

Definition at line 172 of file DomainMetricAdjacency.ih.

{
Point p1( p );
for ( typename Point::Iterator it = p1.begin(); it != p1.end(); ++it )
--(*it);
Point p2( p );
for ( typename Point::Iterator it = p2.begin(); it != p2.end(); ++it )
++(*it);
typedef HyperRectDomain<Space> LocalDomain;
LocalDomain domain( p1, p2 );
for ( typename LocalDomain::ConstIterator it = domain.begin();
it != domain.end();
++it )
{
if ( myDomain.isInside( *it ) )
{
Vector v( p - *it );
typename Vector::UnsignedComponent n1 = v.norm1();
if ( ( n1 <= maxNorm1 ) && ( n1 != 0 ) )
*out_it++ = *it;
}
}
}

Field Documentation

template<typename Domain , Dimension maxNorm1, Dimension dimension = Domain::Space::dimension>
const Domain& DGtal::deprecated::DomainMetricAdjacency< Domain, maxNorm1, dimension >::myDomain
private

The associated domain.

Definition at line 175 of file DomainMetricAdjacency.h.


The documentation for this class was generated from the following files: