1 /****************************************************************************
2 *
3 * ViSP, open source Visual Servoing Platform software.
4 * Copyright (C) 2005 - 2019 by Inria. All rights reserved.
5 *
6 * This software is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 * See the file LICENSE.txt at the root directory of this source
11 * distribution for additional information about the GNU GPL.
12 *
13 * For using ViSP with software that can not be combined with the GNU
14 * GPL, please contact Inria about acquiring a ViSP Professional
15 * Edition License.
16 *
17 * See http://visp.inria.fr for more information.
18 *
19 * This software was developed at:
20 * Inria Rennes - Bretagne Atlantique
21 * Campus Universitaire de Beaulieu
22 * 35042 Rennes Cedex
23 * France
24 *
25 * If you have questions regarding the use of this file, please contact
26 * Inria at visp@inria.fr
27 *
28 * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
29 * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
30 *
31 * Description:
32 * Pre-filled pseudo-database used to handle dependencies between common
33 *moment features.
34 *
35 * Authors:
36 * Filip Novotny
37 *
38 *****************************************************************************/
39
40 #include <visp3/core/vpMomentDatabase.h>
41 #include <visp3/visual_features/vpFeatureMomentCommon.h>
42
43 /*!
44 Constructor which initializes and links all common features in the database
45 \param moments : database for moment primitives
46 \param A : first plane coefficient for a plane equation of the following
47 type Ax+By+C=1/Z \param B : second plane coefficient for a plane equation of
48 the following type Ax+By+C=1/Z \param C : third plane coefficient for a
49 plane equation of the following type Ax+By+C=1/Z
50 */
vpFeatureMomentCommon(vpMomentDatabase & moments,double A,double B,double C)51 vpFeatureMomentCommon::vpFeatureMomentCommon(vpMomentDatabase &moments, double A, double B, double C)
52 : featureGravity(moments, A, B, C), featureGravityNormalized(moments, A, B, C), featureAn(moments, A, B, C),
53 featureCInvariant(moments, A, B, C), featureAlpha(moments, A, B, C), featureCentered(moments, A, B, C),
54 featureMomentBasic(moments, A, B, C), feature_moment_area(moments, A, B, C)
55
56 {
57 featureGravity.linkTo(*this);
58 featureGravityNormalized.linkTo(*this);
59 featureAn.linkTo(*this);
60 featureCInvariant.linkTo(*this);
61 featureAlpha.linkTo(*this);
62 featureMomentBasic.linkTo(*this);
63 featureCentered.linkTo(*this);
64 feature_moment_area.linkTo(*this);
65 }
66
67 /*!
68 Update all moment features in the database with plane coefficients
69 \param A : first plane coefficient for a plane equation of the following
70 type Ax+By+C=1/Z \param B : second plane coefficient for a plane equation of
71 the following type Ax+By+C=1/Z \param C : third plane coefficient for a
72 plane equation of the following type Ax+By+C=1/Z
73 */
updateAll(double A,double B,double C)74 void vpFeatureMomentCommon::updateAll(double A, double B, double C)
75 {
76 featureMomentBasic.update(A, B, C);
77 featureGravity.update(A, B, C);
78 featureCentered.update(A, B, C);
79 featureAn.update(A, B, C);
80 featureGravityNormalized.update(A, B, C);
81 featureCInvariant.update(A, B, C);
82 featureAlpha.update(A, B, C);
83 feature_moment_area.update(A, B, C);
84 }
85