Point Cloud Library (PCL)
1.12.1
Toggle main menu visibility
Loading...
Searching...
No Matches
pcl
geometry
organized_index_iterator.h
1
/*
2
* Software License Agreement (BSD License)
3
*
4
* Copyright (c) 2010, Willow Garage, Inc.
5
* All rights reserved.
6
*
7
* Redistribution and use in source and binary forms, with or without
8
* modification, are permitted provided that the following conditions
9
* are met:
10
*
11
* * Redistributions of source code must retain the above copyright
12
* notice, this list of conditions and the following disclaimer.
13
* * Redistributions in binary form must reproduce the above
14
* copyright notice, this list of conditions and the following
15
* disclaimer in the documentation and/or other materials provided
16
* with the distribution.
17
* * Neither the name of Willow Garage, Inc. nor the names of its
18
* contributors may be used to endorse or promote products derived
19
* from this software without specific prior written permission.
20
*
21
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
24
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
25
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
26
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
27
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
28
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
29
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
31
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32
* POSSIBILITY OF SUCH DAMAGE.
33
*
34
*/
35
36
#pragma once
37
38
namespace
pcl
{
39
/** \brief base class for iterators on 2-dimensional maps like images/organized clouds
40
* etc.
41
* \author Suat Gedikli <gedikli@willowgarage.com>
42
* \ingroup geometry
43
*/
44
class
OrganizedIndexIterator
{
45
public
:
46
/**
47
* \brief constructor
48
* \param[in] width the width of the image/organized cloud
49
*/
50
OrganizedIndexIterator
(
unsigned
width);
51
52
/** \brief virtual destructor*/
53
virtual
~OrganizedIndexIterator
();
54
55
/** \brief go to next pixel/point in image/cloud*/
56
virtual
void
57
operator++
() = 0;
58
59
/** \brief go to next pixel/point in image/cloud*/
60
virtual
void
61
operator++
(
int
);
62
63
/** \brief returns the pixel/point index in the linearized memory of the image/cloud
64
* \return the pixel/point index in the linearized memory of the image/cloud
65
*/
66
unsigned
67
operator*
()
const
;
68
69
/** \brief returns the pixel/point index in the linearized memory of the image/cloud
70
* \return the pixel/point index in the linearized memory of the image/cloud
71
*/
72
virtual
unsigned
73
getIndex
()
const
;
74
75
/** \brief returns the row index (y-coordinate) of the current pixel/point
76
* \return the row index (y-coordinate) of the current pixel/point
77
*/
78
virtual
unsigned
79
getRowIndex
()
const
;
80
81
/** \brief returns the col index (x-coordinate) of the current pixel/point
82
* \return the col index (x-coordinate) of the current pixel/point
83
*/
84
virtual
unsigned
85
getColumnIndex
()
const
;
86
87
/** \brief return whether the current visited pixel/point is valid or not.
88
* \return true if the current pixel/point is within the points to be iterated over,
89
* false otherwise
90
*/
91
virtual
bool
92
isValid
()
const
= 0;
93
94
/** \brief resets the iterator to the beginning of the line
95
*/
96
virtual
void
97
reset
() = 0;
98
99
protected
:
100
/** \brief the width of the image/cloud*/
101
unsigned
width_
;
102
103
/** \brief the index of the current pixel/point*/
104
unsigned
index_
;
105
};
106
107
////////////////////////////////////////////////////////////////////////////////
108
////////////////////////////////////////////////////////////////////////////////
109
////////////////////////////////////////////////////////////////////////////////
110
111
////////////////////////////////////////////////////////////////////////////////
112
inline
OrganizedIndexIterator::OrganizedIndexIterator
(
unsigned
width)
113
:
width_
(width),
index_
(0)
114
{}
115
116
////////////////////////////////////////////////////////////////////////////////
117
inline
OrganizedIndexIterator::~OrganizedIndexIterator
() {}
118
119
////////////////////////////////////////////////////////////////////////////////
120
inline
void
121
OrganizedIndexIterator::operator++
(
int
)
122
{
123
return
operator++
();
124
}
125
126
////////////////////////////////////////////////////////////////////////////////
127
inline
unsigned
128
pcl::OrganizedIndexIterator::operator*
()
const
129
{
130
return
index_
;
131
}
132
133
////////////////////////////////////////////////////////////////////////////////
134
inline
unsigned
135
pcl::OrganizedIndexIterator::getIndex
()
const
136
{
137
return
index_
;
138
}
139
140
////////////////////////////////////////////////////////////////////////////////
141
/** \brief default implementation. Should be overloaded
142
*/
143
inline
unsigned
144
pcl::OrganizedIndexIterator::getRowIndex
()
const
145
{
146
return
index_
/
width_
;
147
}
148
149
////////////////////////////////////////////////////////////////////////////////
150
inline
unsigned
151
pcl::OrganizedIndexIterator::getColumnIndex
()
const
152
{
153
return
index_
%
width_
;
154
}
155
}
// namespace pcl
pcl::OrganizedIndexIterator::OrganizedIndexIterator
OrganizedIndexIterator(unsigned width)
constructor
Definition
organized_index_iterator.h:112
pcl::OrganizedIndexIterator::isValid
virtual bool isValid() const =0
return whether the current visited pixel/point is valid or not.
pcl::OrganizedIndexIterator::reset
virtual void reset()=0
resets the iterator to the beginning of the line
pcl::OrganizedIndexIterator::getColumnIndex
virtual unsigned getColumnIndex() const
returns the col index (x-coordinate) of the current pixel/point
Definition
organized_index_iterator.h:151
pcl::OrganizedIndexIterator::getRowIndex
virtual unsigned getRowIndex() const
returns the row index (y-coordinate) of the current pixel/point
Definition
organized_index_iterator.h:144
pcl::OrganizedIndexIterator::width_
unsigned width_
the width of the image/cloud
Definition
organized_index_iterator.h:101
pcl::OrganizedIndexIterator::operator++
virtual void operator++()=0
go to next pixel/point in image/cloud
pcl::OrganizedIndexIterator::operator*
unsigned operator*() const
returns the pixel/point index in the linearized memory of the image/cloud
Definition
organized_index_iterator.h:128
pcl::OrganizedIndexIterator::index_
unsigned index_
the index of the current pixel/point
Definition
organized_index_iterator.h:104
pcl::OrganizedIndexIterator::~OrganizedIndexIterator
virtual ~OrganizedIndexIterator()
virtual destructor
Definition
organized_index_iterator.h:117
pcl::OrganizedIndexIterator::getIndex
virtual unsigned getIndex() const
returns the pixel/point index in the linearized memory of the image/cloud
Definition
organized_index_iterator.h:135
pcl
Definition
convolution.h:46