DGtal
2.2.0
Toggle main menu visibility
Loading...
Searching...
No Matches
DigitalMetricAdapter.h
1
16
17
#pragma once
18
30
31
#if defined(DigitalMetricAdapter_RECURSES)
32
#error Recursive header files inclusion detected in DigitalMetricAdapter.h
33
#else
// defined(DigitalMetricAdapter_RECURSES)
35
#define DigitalMetricAdapter_RECURSES
36
37
#if !defined DigitalMetricAdapter_h
39
#define DigitalMetricAdapter_h
40
42
// Inclusions
43
#include <iostream>
44
#include "DGtal/base/Common.h"
45
#include "DGtal/geometry/volumes/distance/CMetricSpace.h"
46
#include "DGtal/kernel/CInteger.h"
47
#include "DGtal/base/ConstAlias.h"
48
#include "DGtal/kernel/NumberTraits.h"
50
51
namespace
DGtal
52
{
53
55
// template class DigitalMetricAdapter
70
template
<
typename
TMetric,
typename
TInteger =
typename
TMetric::Space::Integer>
71
class
DigitalMetricAdapter
72
{
73
// ----------------------- Standard services ------------------------------
74
public
:
75
77
typedef
TMetric
Metric
;
78
BOOST_CONCEPT_ASSERT
((
concepts::CMetricSpace<Metric>
));
79
81
typedef
TInteger
Value
;
82
BOOST_CONCEPT_ASSERT
((
concepts::CInteger<Value>
));
83
84
// ----------------------- CDigitalMetric------------------------------------
86
typedef
typename
Metric::Point
Point
;
87
89
typedef
typename
Metric::Space
Space
;
90
92
typedef
Value
RawValue
;
93
94
100
DigitalMetricAdapter
(
ConstAlias<Metric>
aMetric):
101
myMetric
(&aMetric) {}
102
103
109
DigitalMetricAdapter
(
const
DigitalMetricAdapter
&anotherMetric)
110
{
111
if
(
this
!= &anotherMetric)
112
this->
myMetric
= anotherMetric.
myMetric
;
113
}
114
115
119
~DigitalMetricAdapter
() {}
120
121
// ----------------------- Interface --------------------------------------
122
public
:
123
124
// ----------------------- CDigitalMetricSpace --------------------------------------
125
131
DigitalMetricAdapter
&
operator=
(
const
DigitalMetricAdapter
& other )
132
{
133
myMetric
= other.
myMetric
;
134
return
*
this
;
135
}
136
144
Value
operator()
(
const
Point
&p,
const
Point
&q)
const
145
{
146
return
static_cast<
Value
>
( std::ceil (
NumberTraits<typename Metric::Value>::castToDouble
(
myMetric
->operator()(p,q))));
147
}
148
156
Value
rawDistance
(
const
Point
&p,
const
Point
&q)
const
157
{
158
return
this->
operator()
(p,q);
159
}
160
169
DGtal::Closest
closest
(
const
Point
&a,
170
const
Point
&p,
171
const
Point
&q)
const
172
{
173
if
(this->
operator
()(a,p) < this->
operator
()(a,q))
174
return
DGtal::ClosestFIRST
;
175
if
(this->
operator
()(a,p) > this->
operator
()(a,q))
176
return
DGtal::ClosestSECOND
;
177
return
DGtal::ClosestBOTH
;
178
}
179
180
181
186
void
selfDisplay
( std::ostream & out )
const
187
{
188
out <<
"[DigitalMetricAdapter] adapted from "
<< *
myMetric
;
189
}
190
195
bool
isValid
()
const
{
return
(
myMetric
!= NULL); }
196
197
// ------------------------- Protected Data ------------------------------
198
private
:
199
// ------------------------- Private Data --------------------------------
200
private
:
201
202
const
Metric
*
myMetric
;
203
204
// ------------------------- Hidden services ------------------------------
205
protected
:
206
211
DigitalMetricAdapter
();
212
213
// ------------------------- Internals ------------------------------------
214
private
:
215
216
};
// end of class DigitalMetricAdapter
217
218
225
template
<
typename
T>
226
std::ostream&
227
operator<<
( std::ostream & out,
const
DigitalMetricAdapter<T>
&
object
);
228
229
}
// namespace DGtal
230
231
// //
233
234
#endif
// !defined DigitalMetricAdapter_h
235
236
#undef DigitalMetricAdapter_RECURSES
237
#endif
// else defined(DigitalMetricAdapter_RECURSES)
DGtal::ConstAlias
Aim: This class encapsulates its parameter class so that to indicate to the user that the object/poin...
Definition
ConstAlias.h:187
DGtal::DigitalMetricAdapter
Aim: simple adapter class which adapts any models of concepts::CMetricSpace to a model of concepts::C...
Definition
DigitalMetricAdapter.h:72
DGtal::DigitalMetricAdapter::Metric
TMetric Metric
Input metric type.
Definition
DigitalMetricAdapter.h:77
DGtal::DigitalMetricAdapter::RawValue
Value RawValue
RawValue type.
Definition
DigitalMetricAdapter.h:92
DGtal::DigitalMetricAdapter::Value
TInteger Value
Values are integer numbers.
Definition
DigitalMetricAdapter.h:81
DGtal::DigitalMetricAdapter::closest
DGtal::Closest closest(const Point &a, const Point &p, const Point &q) const
Definition
DigitalMetricAdapter.h:169
DGtal::DigitalMetricAdapter::BOOST_CONCEPT_ASSERT
BOOST_CONCEPT_ASSERT((concepts::CMetricSpace< Metric >))
DGtal::DigitalMetricAdapter::BOOST_CONCEPT_ASSERT
BOOST_CONCEPT_ASSERT((concepts::CInteger< Value >))
DGtal::DigitalMetricAdapter::rawDistance
Value rawDistance(const Point &p, const Point &q) const
Definition
DigitalMetricAdapter.h:156
DGtal::DigitalMetricAdapter::Space
Metric::Space Space
Space type.
Definition
DigitalMetricAdapter.h:89
DGtal::DigitalMetricAdapter::myMetric
const Metric * myMetric
Definition
DigitalMetricAdapter.h:202
DGtal::DigitalMetricAdapter::DigitalMetricAdapter
DigitalMetricAdapter()
DGtal::DigitalMetricAdapter::selfDisplay
void selfDisplay(std::ostream &out) const
Definition
DigitalMetricAdapter.h:186
DGtal::DigitalMetricAdapter::Point
Metric::Point Point
Point type.
Definition
DigitalMetricAdapter.h:86
DGtal::DigitalMetricAdapter::operator=
DigitalMetricAdapter & operator=(const DigitalMetricAdapter &other)
Definition
DigitalMetricAdapter.h:131
DGtal::DigitalMetricAdapter::operator()
Value operator()(const Point &p, const Point &q) const
Definition
DigitalMetricAdapter.h:144
DGtal::DigitalMetricAdapter::DigitalMetricAdapter
DigitalMetricAdapter(const DigitalMetricAdapter &anotherMetric)
Definition
DigitalMetricAdapter.h:109
DGtal::DigitalMetricAdapter::DigitalMetricAdapter
DigitalMetricAdapter(ConstAlias< Metric > aMetric)
Definition
DigitalMetricAdapter.h:100
DGtal::DigitalMetricAdapter::isValid
bool isValid() const
Definition
DigitalMetricAdapter.h:195
DGtal::DigitalMetricAdapter::~DigitalMetricAdapter
~DigitalMetricAdapter()
Definition
DigitalMetricAdapter.h:119
DGtal
DGtal is the top-level namespace which contains all DGtal functions and types.
Definition
ClosedIntegerHalfPlane.h:49
DGtal::Closest
Closest
Definition
Common.h:129
DGtal::ClosestBOTH
@ ClosestBOTH
Definition
Common.h:129
DGtal::ClosestSECOND
@ ClosestSECOND
Definition
Common.h:129
DGtal::ClosestFIRST
@ ClosestFIRST
Definition
Common.h:129
DGtal::operator<<
std::ostream & operator<<(std::ostream &out, const ClosedIntegerHalfPlane< TSpace > &object)
DGtal::NumberTraitsImpl< std::decay< T >::type >::castToDouble
static double castToDouble(const T &aT)
Definition
NumberTraits.h:164
DGtal::concepts::CInteger
Aim: Concept checking for Integer Numbers. More precisely, this concept is a refinement of both CEucl...
Definition
CInteger.h:88
DGtal::concepts::CMetricSpace
Aim: defines the concept of metric spaces.
Definition
CMetricSpace.h:125
src
DGtal
geometry
volumes
distance
DigitalMetricAdapter.h
Generated on
for DGtal by
1.18.0