iLab Neuromorphic Robotics Toolkit  0.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Centroid.H
Go to the documentation of this file.
1 /*! @file
2  @author Shane Grant
3  @copyright GNU Public License (GPL v3)
4  @section License
5  @verbatim
6  // ////////////////////////////////////////////////////////////////////////
7  // The iLab Neuromorphic Robotics Toolkit (NRT) //
8  // Copyright 2010-2012 by the University of Southern California (USC) //
9  // and the iLab at USC. //
10  // //
11  // iLab - University of Southern California //
12  // Hedco Neurociences Building, Room HNB-10 //
13  // Los Angeles, Ca 90089-2520 - USA //
14  // //
15  // See http://ilab.usc.edu for information about this project. //
16  // ////////////////////////////////////////////////////////////////////////
17  // This file is part of The iLab Neuromorphic Robotics Toolkit. //
18  // //
19  // The iLab Neuromorphic Robotics Toolkit is free software: you can //
20  // redistribute it and/or modify it under the terms of the GNU General //
21  // Public License as published by the Free Software Foundation, either //
22  // version 3 of the License, or (at your option) any later version. //
23  // //
24  // The iLab Neuromorphic Robotics Toolkit is distributed in the hope //
25  // that it will be useful, but WITHOUT ANY WARRANTY; without even the //
26  // implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR //
27  // PURPOSE. See the GNU General Public License for more details. //
28  // //
29  // You should have received a copy of the GNU General Public License //
30  // along with The iLab Neuromorphic Robotics Toolkit. If not, see //
31  // <http://www.gnu.org/licenses/>. //
32  // ////////////////////////////////////////////////////////////////////////
33  @endverbatim */
34 
35 #ifdef NRT_HAVE_CLOUD
36 #ifndef INCLUDE_NRT_POINTCLOUD2_COMMON_CENTROID_H
37 #define INCLUDE_NRT_POINTCLOUD2_COMMON_CENTROID_H
38 
40 
41 namespace nrt
42 {
43  /*! @defgroup pointcloudcommon Common Operations and Functionality
44 
45  This category includes operations that many different PointCloud algorithms may want
46  access to as well as basic functionality that does not otherwise belong in a more
47  detailed category.
48 
49  @ingroup pointcloud */
50 
51  //! Computes a 3D centroid from the geometry in a point cloud
52  /*! @param[in] input The input point cloud
53  @return The centroid of the geometry
54  @ingroup pointcloudcommon */
55  PointCloud2::Geometry computeCentroid( PointCloud2 const input );
56 
57  //! Computes a 3D centroid from the geometry in a point cloud subset
58  /*! @param[in] input The input point cloud
59  @param[in] subset The subset of points to use
60  @return The centroid of the geometry
61  @ingroup pointcloudcommon */
62  PointCloud2::Geometry computeCentroid( PointCloud2 const input, Indices const subset );
63 
64  //! Computes the centroid for a specific field in a point cloud
65  /*! @tparam Field The field to compute a centroid for. Must support geometric
66  operations such as += and /
67  @param[in] input The input point cloud
68  @return The centroid of the field
69  @ingroup pointcloudcommon */
70  template <class Field>
71  Field computeCentroid( PointCloud2 const input );
72 
73  //! Computes the centroid for a specific field in a point cloud subset
74  /*! @tparam Field The field to compute a centroid for. Must support geometric
75  operations such as += and /
76  @param[in] input The input point cloud
77  @param[in] subset The subset
78  @return The centroid of the field
79  @ingroup pointcloudcommon */
80  template <class Field>
81  Field computeCentroid( PointCloud2 const input, Indices const subset );
82 } // namespace nrt
83 
85 
86 #endif // INCLUDE_NRT_POINTCLOUD2_COMMON_CENTROID_H
87 #endif // NRT_HAVE_CLOUD