Point Cloud Library (PCL)
1.15.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_
{0};
105
};
106
107
////////////////////////////////////////////////////////////////////////////////
108
////////////////////////////////////////////////////////////////////////////////
109
////////////////////////////////////////////////////////////////////////////////
110
111
////////////////////////////////////////////////////////////////////////////////
112
inline
OrganizedIndexIterator::OrganizedIndexIterator
(
unsigned
width) :
width_
(width) {}
113
114
////////////////////////////////////////////////////////////////////////////////
115
inline
OrganizedIndexIterator::~OrganizedIndexIterator
() =
default
;
116
117
////////////////////////////////////////////////////////////////////////////////
118
inline
void
119
OrganizedIndexIterator::operator++
(
int
)
120
{
121
return
operator++
();
122
}
123
124
////////////////////////////////////////////////////////////////////////////////
125
inline
unsigned
126
pcl::OrganizedIndexIterator::operator*
()
const
127
{
128
return
index_
;
129
}
130
131
////////////////////////////////////////////////////////////////////////////////
132
inline
unsigned
133
pcl::OrganizedIndexIterator::getIndex
()
const
134
{
135
return
index_
;
136
}
137
138
////////////////////////////////////////////////////////////////////////////////
139
/** \brief default implementation. Should be overloaded
140
*/
141
inline
unsigned
142
pcl::OrganizedIndexIterator::getRowIndex
()
const
143
{
144
return
index_
/
width_
;
145
}
146
147
////////////////////////////////////////////////////////////////////////////////
148
inline
unsigned
149
pcl::OrganizedIndexIterator::getColumnIndex
()
const
150
{
151
return
index_
%
width_
;
152
}
153
}
// 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:149
pcl::OrganizedIndexIterator::getRowIndex
virtual unsigned getRowIndex() const
returns the row index (y-coordinate) of the current pixel/point
Definition
organized_index_iterator.h:142
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:126
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
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:133
pcl
Definition
convolution.h:46