Moka controlers
 All Classes Namespaces Files Functions Variables Typedefs Enumerator Friends Macros
parameter-object-position.hh
Go to the documentation of this file.
1 /*
2  * lib-controler-gmap : Le contrôleur de 3-G-cartes, surcouche de lib-controler.
3  * Copyright (C) 2004, Moka Team, Université de Poitiers, Laboratoire SIC
4  * http://www.sic.sp2mi.univ-poitiers.fr/
5  * Copyright (C) 2009, Guillaume Damiand, CNRS, LIRIS,
6  * guillaume.damiand@liris.cnrs.fr, http://liris.cnrs.fr/
7  *
8  * This file is part of lib-controler-gmap
9  *
10  * This program is free software: you can redistribute it and/or modify
11  * it under the terms of the GNU Lesser General Public License as published by
12  * the Free Software Foundation, either version 3 of the License, or
13  * (at your option) any later version.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  * GNU Lesser General Public License for more details.
19  *
20  * You should have received a copy of the GNU Lesser General Public License
21  * along with this program. If not, see <http://www.gnu.org/licenses/>.
22  */
23 
24 //******************************************************************************
25 #ifndef PARAMETER_OBJECT_POSITION_HH
26 #define PARAMETER_OBJECT_POSITION_HH
27 //******************************************************************************
28 #include "parameter.hh"
29 #include "vertex.hh"
30 #include "transformation-matrix.hh"
31 //******************************************************************************
32 namespace GMap3d
33 {
35  {
36  public:
38  CParameterObjectPosition(bool ANeedRotation, int ANbRef = 0);
40  virtual ~CParameterObjectPosition();
41  virtual CParameter * copy() const;
43 
45 
46  virtual void save(std::ostream &);
47  virtual void load(std::istream &);
48  virtual void reinit();
49 
51 
53 
54  float getScale() const;
55 
56  void setScale(float AScale);
57 
58  float getProportionX() const;
59  float getProportionY() const;
60  float getProportionZ() const;
61  CVertex getProportions() const;
62 
63  void setProportionX(float AX);
64  void setProportionY(float AY);
65  void setProportionZ(float AZ);
66  void setProportions(float AX, float AY, float AZ);
67  void setProportions(const CVertex & AValues);
68 
69  float getDimensionX() const;
70  float getDimensionY() const;
71  float getDimensionZ() const;
72  CVertex getDimensions() const;
73 
74  void setDimensionX(float AX);
75  void setDimensionY(float AY);
76  void setDimensionZ(float AZ);
77  void setDimensions(float AX, float AY, float AZ);
78  void setDimensions(const CVertex & AValues);
79 
80  float getCenterX() const;
81  float getCenterY() const;
82  float getCenterZ() const;
83  CVertex getCenter() const;
84 
85  void setCenterX(float AX);
86  void setCenterY(float AY);
87  void setCenterZ(float AZ);
88  void setCenter(float AX, float AY, float AZ);
89  void setCenter(const CVertex & AVertex);
90 
91  float getRotationX() const;
92  float getRotationY() const;
93  float getRotationZ() const;
94  CVertex getRotations() const;
95 
96  void setRotationX(float AAlpha);
97  void setRotationY(float ABeta);
98  void setRotationZ(float AGamma);
99  void setRotations(float AAlpha, float ABeta, float AGamma);
100  void setRotations(const CVertex & AAngles);
101 
102  float getFirstVertexX() const;
103  float getFirstVertexY() const;
104  float getFirstVertexZ() const;
105  CVertex getFirstVertex() const;
106 
107  void setFirstVertexX(float AX, bool AKeepNormalVector = false);
108  void setFirstVertexY(float AY, bool AKeepNormalVector = false);
109  void setFirstVertexZ(float AZ, bool AKeepNormalVector = false);
110  void setFirstVertex(float AX, float AY, float AZ,
111  bool AKeepNormalVector = false);
112  void setFirstVertex(const CVertex & AVertex,
113  bool AKeepNormalVector = false);
114 
115  float getNormalVectorX() const;
116  float getNormalVectorY() const;
117  float getNormalVectorZ() const;
118  CVertex getNormalVector() const;
119 
120  void setNormalVectorX(float AX);
121  void setNormalVectorY(float AY);
122  void setNormalVectorZ(float AZ);
123  void setNormalVector(float AX, float AY, float AZ);
124  void setNormalVector(const CVertex & AVector);
125 
127 
129  CTransformationMatrix getTransformationMatrix() const;
130 
132  virtual int getType() const;
133 
134  private:
135  // Origine du repère (centre de l'objet) :
136  CVertex FCenter;
137 
138  // Facteur d'agrandissement de l'objet :
139  float FScale;
140 
141  // Proportions de l'objet (déformation dans les trois dimensions) :
142  CVertex FProportions;
143 
144  // Dimensions de l'objet (FDimensions[i] = FScale * FProportions[i])
145  CVertex FDimensions;
146 
147  // Position du sommet correspondant au sommet (1,0,0) dans le repère :
148  CVertex FFirstVertex;
149 
150  // Vecteur correspondant au vecteur (0,0,1) dans le repère :
151  CVertex FNormalVector;
152 
153  // Rotations appliquées sur les axes :
154  CVertex FRotations;
155 
156  // Rotation de 90° (utilisé pour sphère, pyramide et cylindre)
157  bool FNeedRotation;
158  };
159 
160 } // namespace GMap3d
161 //******************************************************************************
162 #endif // PARAMETER_OBJECT_POSITION_HH
163 //******************************************************************************