Visual Servoing Platform
version 3.7.0
Toggle main menu visibility
Loading...
Searching...
No Matches
vpMomentArea.cpp
1
/*
2
* ViSP, open source Visual Servoing Platform software.
3
* Copyright (C) 2005 - 2025 by Inria. All rights reserved.
4
*
5
* This software is free software; you can redistribute it and/or modify
6
* it under the terms of the GNU General Public License as published by
7
* the Free Software Foundation; either version 2 of the License, or
8
* (at your option) any later version.
9
* See the file LICENSE.txt at the root directory of this source
10
* distribution for additional information about the GNU GPL.
11
*
12
* For using ViSP with software that can not be combined with the GNU
13
* GPL, please contact Inria about acquiring a ViSP Professional
14
* Edition License.
15
*
16
* See https://visp.inria.fr for more information.
17
*
18
* This software was developed at:
19
* Inria Rennes - Bretagne Atlantique
20
* Campus Universitaire de Beaulieu
21
* 35042 Rennes Cedex
22
* France
23
*
24
* If you have questions regarding the use of this file, please contact
25
* Inria at visp@inria.fr
26
*
27
* This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
28
* WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
29
*
30
* Description:
31
* 2D area of the object
32
*
33
* Authors:
34
* Manikandan Bakthavatchalam
35
*/
36
#include <cmath>
37
#include <visp3/core/vpMomentArea.h>
38
#include <visp3/core/vpMomentCentered.h>
39
#include <visp3/core/vpMomentDatabase.h>
40
#include <visp3/core/vpMomentObject.h>
41
42
BEGIN_VISP_NAMESPACE
48
void
vpMomentArea::compute
()
49
{
50
/* getObject() returns a reference to a vpMomentObject. This is public
51
* member of vpMoment */
52
if
(
getObject
().getType() ==
vpMomentObject::DISCRETE
) {
53
bool
found_moment_centered;
54
/* getMoments() returns a reference to a vpMomentDatabase. It is a
55
* protected member of and is inherited from vpMoment .get() is a member
56
* function of vpMomentDatabase that returns a specific moment which is
57
* linked to it
58
*/
59
const
vpMomentCentered
&momentCentered =
60
static_cast<
const
vpMomentCentered
&
>
(
getMoments
().
get
(
"vpMomentCentered"
, found_moment_centered));
61
if
(!found_moment_centered)
62
throw
vpException
(
vpException::notInitialized
,
"vpMomentCentered not found"
);
63
values
[0] = momentCentered.
get
(2, 0) + momentCentered.
get
(0, 2);
64
}
65
else
{
66
values
[0] =
getObject
().
get
(0, 0);
67
}
68
}
69
73
vpMomentArea::vpMomentArea
() :
vpMoment
() {
values
.resize(1); }
74
80
void
vpMomentArea::printDependencies
(std::ostream &os)
const
81
{
82
os << (__FILE__) << std::endl;
83
84
bool
found_moment_centered;
85
const
vpMomentCentered
&momentCentered =
86
static_cast<
const
vpMomentCentered
&
>
(
getMoments
().
get
(
"vpMomentCentered"
, found_moment_centered));
87
if
(!found_moment_centered)
88
throw
vpException
(
vpException::notInitialized
,
"vpMomentCentered not found"
);
89
90
if
(
getObject
().getType() ==
vpMomentObject::DISCRETE
) {
91
os <<
"mu20 = "
<< momentCentered.
get
(2, 0) <<
"\t"
;
92
os <<
"mu02 = "
<< momentCentered.
get
(0, 2) << std::endl;
93
}
94
else
{
95
os <<
"mu00 = "
<< momentCentered.
get
(0, 0) << std::endl;
96
}
97
}
98
102
VISP_EXPORT std::ostream &
operator<<
(std::ostream &os,
const
vpMomentArea
&m)
103
{
104
os << (__FILE__) << std::endl;
105
os <<
"a(m00) = "
<< m.
values
[0] << std::endl;
106
return
os;
107
}
108
109
END_VISP_NAMESPACE
vpException
error that can be emitted by ViSP classes.
Definition
vpException.h:60
vpException::notInitialized
@ notInitialized
Used to indicate that a parameter is not initialized.
Definition
vpException.h:74
vpMomentArea::compute
void compute() VP_OVERRIDE
Definition
vpMomentArea.cpp:48
vpMomentArea::vpMomentArea
vpMomentArea()
Definition
vpMomentArea.cpp:73
vpMomentArea::operator<<
friend VISP_EXPORT std::ostream & operator<<(std::ostream &os, const vpMomentArea &m)
Definition
vpMomentArea.cpp:102
vpMomentArea::printDependencies
void printDependencies(std::ostream &os) const VP_OVERRIDE
Definition
vpMomentArea.cpp:80
vpMomentCentered
This class defines the double-indexed centered moment descriptor .
Definition
vpMomentCentered.h:77
vpMomentCentered::get
double get(unsigned int i, unsigned int j) const
Definition
vpMomentCentered.cpp:99
vpMomentDatabase::get
const vpMoment & get(const std::string &moment_name, bool &found) const
Definition
vpMomentDatabase.cpp:63
vpMomentObject::DISCRETE
@ DISCRETE
Definition
vpMomentObject.h:237
vpMomentObject::get
const std::vector< double > & get() const
Definition
vpMomentObject.cpp:538
vpMoment::getObject
const vpMomentObject & getObject() const
Definition
vpMoment.h:150
vpMoment::values
std::vector< double > values
Definition
vpMoment.h:113
vpMoment::getMoments
vpMomentDatabase & getMoments() const
Definition
vpMoment.h:118
vpMoment::vpMoment
vpMoment(const vpMoment &)=delete
BEGIN_VISP_NAMESPACE
Definition
vpMbtDistanceCircle.cpp:55
modules
core
src
tracking
moments
vpMomentArea.cpp
Generated by
1.17.0