ARGoS  3
A parallel, multi-engine simulator for swarm robotics
qtopengl_epuck.cpp
Go to the documentation of this file.
1 
7 #include "qtopengl_epuck.h"
8 #include "epuck_entity.h"
9 #include <argos3/core/simulator/entity/embodied_entity.h>
10 #include <argos3/core/utility/math/vector2.h>
11 #include <argos3/core/utility/math/vector3.h>
12 #include <argos3/plugins/simulator/entities/led_equipped_entity.h>
13 #include <argos3/plugins/simulator/visualizations/qt-opengl/qtopengl_widget.h>
14 
15 namespace argos {
16 
17  /****************************************/
18  /****************************************/
19 
20  /* All measures are in meters */
21 
22  static const Real WHEEL_DIAMETER = 0.041f;
23  static const Real WHEEL_RADIUS = WHEEL_DIAMETER * 0.5f;
24  static const Real WHEEL_WIDTH = 0.01f;
25  static const Real HALF_WHEEL_WIDTH = WHEEL_WIDTH * 0.5f;
26  static const Real INTERWHEEL_DISTANCE = 0.053f;
27  static const Real HALF_INTERWHEEL_DISTANCE = INTERWHEEL_DISTANCE * 0.5f;
28 
29  static const Real CHASSIS_ELEVATION = 0.005f; // to be checked!
30  static const Real HALF_CHASSIS_LENGTH = 0.0275f; // to be checked!
31  static const Real HALF_CHASSIS_WIDTH = HALF_INTERWHEEL_DISTANCE - HALF_WHEEL_WIDTH;
32 
33  static const Real BODY_RADIUS = 0.035f;
34  static const Real BODY_ELEVATION = WHEEL_DIAMETER + CHASSIS_ELEVATION; // to be checked!
35  static const Real BODY_HEIGHT = 0.03f; // to be checked!
36 
37  static const Real LED_ELEVATION = BODY_ELEVATION + BODY_HEIGHT;
38  static const Real LED_HEIGHT = 0.01; // to be checked!
39  static const Real LED_UPPER_RING_INNER_RADIUS = 0.8 * BODY_RADIUS;
40 
41  /****************************************/
42  /****************************************/
43 
45  m_unVertices(40),
46  m_fLEDAngleSlice(360.0f / 8.0f) {
47  /* Reserve the needed display lists */
48  m_unLists = glGenLists(4);
49 
50  /* Assign indices for better referencing (later) */
51  m_unWheelList = m_unLists;
52  m_unChassisList = m_unLists + 1;
53  m_unBodyList = m_unLists + 2;
54  m_unLEDList = m_unLists + 3;
55 
56  /* Create the wheel display list */
57  glNewList(m_unWheelList, GL_COMPILE);
58  RenderWheel();
59  glEndList();
60 
61  /* Create the body display list */
62  glNewList(m_unBodyList, GL_COMPILE);
63  RenderBody();
64  glEndList();
65 
66  /* Create the chassis display list */
67  glNewList(m_unChassisList, GL_COMPILE);
68  RenderChassis();
69  glEndList();
70 
71  /* Create the LED display list */
72  glNewList(m_unLEDList, GL_COMPILE);
73  RenderLED();
74  glEndList();
75  }
76 
77  /****************************************/
78  /****************************************/
79 
81  glDeleteLists(m_unLists, 4);
82  }
83 
84  /****************************************/
85  /****************************************/
86 
88  /* Place the chassis */
89  glCallList(m_unChassisList);
90  /* Place the body */
91  glCallList(m_unBodyList);
92  /* Place the wheels */
93  glPushMatrix();
94  glTranslatef(0.0f, HALF_INTERWHEEL_DISTANCE, 0.0f);
95  glCallList(m_unWheelList);
96  glPopMatrix();
97  glPushMatrix();
98  glTranslatef(0.0f, -HALF_INTERWHEEL_DISTANCE, 0.0f);
99  glCallList(m_unWheelList);
100  glPopMatrix();
101  /* Place the LEDs */
102  glPushMatrix();
103  CLEDEquippedEntity& cLEDEquippedEntity = c_entity.GetLEDEquippedEntity();
104  for(UInt32 i = 0; i < 8; i++) {
105  const CColor& cColor = cLEDEquippedEntity.GetLED(i).GetColor();
106  glRotatef(-m_fLEDAngleSlice, 0.0f, 0.0f, 1.0f);
107  SetLEDMaterial(cColor.GetRed(),
108  cColor.GetGreen(),
109  cColor.GetBlue());
110  glCallList(m_unLEDList);
111  }
112  glPopMatrix();
113  }
114 
115  /****************************************/
116  /****************************************/
117 
119  const GLfloat pfColor[] = { 0.0f, 1.0f, 0.0f, 1.0f };
120  const GLfloat pfSpecular[] = { 0.9f, 0.9f, 0.9f, 1.0f };
121  const GLfloat pfShininess[] = { 100.0f };
122  const GLfloat pfEmission[] = { 0.0f, 0.0f, 0.0f, 1.0f };
123  glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, pfColor);
124  glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, pfSpecular);
125  glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, pfShininess);
126  glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, pfEmission);
127  }
128 
129  /****************************************/
130  /****************************************/
131 
133  const GLfloat pfColor[] = { 1.0f, 0.0f, 0.0f, 1.0f };
134  const GLfloat pfSpecular[] = { 0.9f, 0.9f, 0.9f, 1.0f };
135  const GLfloat pfShininess[] = { 100.0f };
136  const GLfloat pfEmission[] = { 0.0f, 0.0f, 0.0f, 1.0f };
137  glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, pfColor);
138  glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, pfSpecular);
139  glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, pfShininess);
140  glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, pfEmission);
141  }
142 
143  /****************************************/
144  /****************************************/
145 
147  const GLfloat pfColor[] = { 0.0f, 0.0f, 1.0f, 1.0f };
148  const GLfloat pfSpecular[] = { 0.5f, 0.5f, 1.0f, 1.0f };
149  const GLfloat pfShininess[] = { 10.0f };
150  const GLfloat pfEmission[] = { 0.0f, 0.0f, 0.0f, 1.0f };
151  glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, pfColor);
152  glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, pfSpecular);
153  glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, pfShininess);
154  glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, pfEmission);
155  }
156 
157  /****************************************/
158  /****************************************/
159 
160  void CQTOpenGLEPuck::SetLEDMaterial(GLfloat f_red,
161  GLfloat f_green,
162  GLfloat f_blue) {
163  const GLfloat fEmissionFactor = 10.0f;
164  const GLfloat pfColor[] = { f_red, f_green, f_blue, 1.0f };
165  const GLfloat pfSpecular[] = { 0.0f, 0.0f, 0.0f, 1.0f };
166  const GLfloat pfShininess[] = { 0.0f };
167  const GLfloat pfEmission[] = { f_red * fEmissionFactor, f_green * fEmissionFactor, f_blue * fEmissionFactor, 1.0f };
168  glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, pfColor);
169  glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, pfSpecular);
170  glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, pfShininess);
171  glMaterialfv(GL_FRONT_AND_BACK, GL_EMISSION, pfEmission);
172  }
173 
174  /****************************************/
175  /****************************************/
176 
178  /* Set material */
180  /* Right side */
181  CVector2 cVertex(WHEEL_RADIUS, 0.0f);
182  CRadians cAngle(CRadians::TWO_PI / m_unVertices);
183  CVector3 cNormal(-1.0f, -1.0f, 0.0f);
184  cNormal.Normalize();
185  glBegin(GL_POLYGON);
186  for(GLuint i = 0; i <= m_unVertices; i++) {
187  glNormal3f(cNormal.GetX(), cNormal.GetY(), cNormal.GetZ());
188  glVertex3f(cVertex.GetX(), -HALF_WHEEL_WIDTH, WHEEL_RADIUS + cVertex.GetY());
189  cVertex.Rotate(cAngle);
190  cNormal.RotateY(cAngle);
191  }
192  glEnd();
193  /* Left side */
194  cVertex.Set(WHEEL_RADIUS, 0.0f);
195  cNormal.Set(-1.0f, 1.0f, 0.0f);
196  cNormal.Normalize();
197  cAngle = -cAngle;
198  glBegin(GL_POLYGON);
199  for(GLuint i = 0; i <= m_unVertices; i++) {
200  glNormal3f(cNormal.GetX(), cNormal.GetY(), cNormal.GetZ());
201  glVertex3f(cVertex.GetX(), HALF_WHEEL_WIDTH, WHEEL_RADIUS + cVertex.GetY());
202  cVertex.Rotate(cAngle);
203  cNormal.RotateY(cAngle);
204  }
205  glEnd();
206  /* Tire */
207  cNormal.Set(1.0f, 0.0f, 0.0f);
208  cVertex.Set(WHEEL_RADIUS, 0.0f);
209  cAngle = -cAngle;
210  glBegin(GL_QUAD_STRIP);
211  for(GLuint i = 0; i <= m_unVertices; i++) {
212  glNormal3f(cNormal.GetX(), cNormal.GetY(), cNormal.GetZ());
213  glVertex3f(cVertex.GetX(), -HALF_WHEEL_WIDTH, WHEEL_RADIUS + cVertex.GetY());
214  glVertex3f(cVertex.GetX(), HALF_WHEEL_WIDTH, WHEEL_RADIUS + cVertex.GetY());
215  cVertex.Rotate(cAngle);
216  cNormal.RotateY(cAngle);
217  }
218  glEnd();
219  }
220 
221  /****************************************/
222  /****************************************/
223 
225  /* Set material */
227  /* This part covers the bottom face (parallel to XY) */
228  glBegin(GL_QUADS);
229  /* Bottom face */
230  glNormal3f(0.0f, 0.0f, -1.0f);
231  glVertex3f( HALF_CHASSIS_LENGTH, HALF_CHASSIS_WIDTH, CHASSIS_ELEVATION);
232  glVertex3f( HALF_CHASSIS_LENGTH, -HALF_CHASSIS_WIDTH, CHASSIS_ELEVATION);
233  glVertex3f(-HALF_CHASSIS_LENGTH, -HALF_CHASSIS_WIDTH, CHASSIS_ELEVATION);
234  glVertex3f(-HALF_CHASSIS_LENGTH, HALF_CHASSIS_WIDTH, CHASSIS_ELEVATION);
235  glEnd();
236  /* This part covers the faces (South, East, North, West) */
237  glBegin(GL_QUAD_STRIP);
238  /* Starting side */
239  glNormal3f(-1.0f, 0.0f, 0.0f);
240  glVertex3f(-HALF_CHASSIS_LENGTH, -HALF_CHASSIS_WIDTH, CHASSIS_ELEVATION + WHEEL_DIAMETER);
241  glVertex3f(-HALF_CHASSIS_LENGTH, -HALF_CHASSIS_WIDTH, CHASSIS_ELEVATION);
242  /* South face */
243  glVertex3f( HALF_CHASSIS_LENGTH, -HALF_CHASSIS_WIDTH, CHASSIS_ELEVATION + WHEEL_DIAMETER);
244  glVertex3f( HALF_CHASSIS_LENGTH, -HALF_CHASSIS_WIDTH, CHASSIS_ELEVATION);
245  /* East face */
246  glNormal3f(0.0f, -1.0f, 0.0f);
247  glVertex3f( HALF_CHASSIS_LENGTH, HALF_CHASSIS_WIDTH, CHASSIS_ELEVATION + WHEEL_DIAMETER);
248  glVertex3f( HALF_CHASSIS_LENGTH, HALF_CHASSIS_WIDTH, CHASSIS_ELEVATION);
249  /* North face */
250  glNormal3f(1.0f, 0.0f, 0.0f);
251  glVertex3f(-HALF_CHASSIS_LENGTH, HALF_CHASSIS_WIDTH, CHASSIS_ELEVATION + WHEEL_DIAMETER);
252  glVertex3f(-HALF_CHASSIS_LENGTH, HALF_CHASSIS_WIDTH, CHASSIS_ELEVATION);
253  /* West face */
254  glNormal3f(0.0f, 1.0f, 0.0f);
255  glVertex3f(-HALF_CHASSIS_LENGTH, -HALF_CHASSIS_WIDTH, CHASSIS_ELEVATION + WHEEL_DIAMETER);
256  glVertex3f(-HALF_CHASSIS_LENGTH, -HALF_CHASSIS_WIDTH, CHASSIS_ELEVATION);
257  glEnd();
258  }
259 
260  /****************************************/
261  /****************************************/
262 
264  /* Set material */
266  CVector2 cVertex(BODY_RADIUS, 0.0f);
267  CRadians cAngle(-CRadians::TWO_PI / m_unVertices);
268  /* Bottom part */
269  glBegin(GL_POLYGON);
270  glNormal3f(0.0f, 0.0f, -1.0f);
271  for(GLuint i = 0; i <= m_unVertices; i++) {
272  glVertex3f(cVertex.GetX(), cVertex.GetY(), BODY_ELEVATION);
273  cVertex.Rotate(cAngle);
274  }
275  glEnd();
276  /* Side surface */
277  cAngle = -cAngle;
278  CVector2 cNormal(1.0f, 0.0f);
279  cVertex.Set(BODY_RADIUS, 0.0f);
280  glBegin(GL_QUAD_STRIP);
281  for(GLuint i = 0; i <= m_unVertices; i++) {
282  glNormal3f(cNormal.GetX(), cNormal.GetY(), 0.0f);
283  glVertex3f(cVertex.GetX(), cVertex.GetY(), BODY_ELEVATION + BODY_HEIGHT);
284  glVertex3f(cVertex.GetX(), cVertex.GetY(), BODY_ELEVATION);
285  cVertex.Rotate(cAngle);
286  cNormal.Rotate(cAngle);
287  }
288  glEnd();
289  /* Top part */
290  glBegin(GL_POLYGON);
291  cVertex.Set(LED_UPPER_RING_INNER_RADIUS, 0.0f);
292  glNormal3f(0.0f, 0.0f, 1.0f);
293  for(GLuint i = 0; i <= m_unVertices; i++) {
294  glVertex3f(cVertex.GetX(), cVertex.GetY(), BODY_ELEVATION + BODY_HEIGHT + LED_HEIGHT);
295  cVertex.Rotate(cAngle);
296  }
297  glEnd();
298  /* Triangle to set the direction */
299  SetLEDMaterial(1.0f, 1.0f, 0.0f);
300  glBegin(GL_TRIANGLES);
301  glVertex3f( BODY_RADIUS * 0.7, 0.0f, BODY_ELEVATION + BODY_HEIGHT + LED_HEIGHT + 0.001f);
302  glVertex3f(-BODY_RADIUS * 0.7, BODY_RADIUS * 0.3, BODY_ELEVATION + BODY_HEIGHT + LED_HEIGHT + 0.001f);
303  glVertex3f(-BODY_RADIUS * 0.7, -BODY_RADIUS * 0.3, BODY_ELEVATION + BODY_HEIGHT + LED_HEIGHT + 0.001f);
304  glEnd();
305  }
306 
307  /****************************************/
308  /****************************************/
309 
311  /* Side surface */
312  CVector2 cVertex(BODY_RADIUS, 0.0f);
313  CRadians cAngle(CRadians::TWO_PI / m_unVertices);
314  CVector2 cNormal(1.0f, 0.0f);
315  glBegin(GL_QUAD_STRIP);
316  for(GLuint i = 0; i <= m_unVertices / 8; i++) {
317  glNormal3f(cNormal.GetX(), cNormal.GetY(), 0.0f);
318  glVertex3f(cVertex.GetX(), cVertex.GetY(), LED_ELEVATION + LED_HEIGHT);
319  glVertex3f(cVertex.GetX(), cVertex.GetY(), LED_ELEVATION);
320  cVertex.Rotate(cAngle);
321  cNormal.Rotate(cAngle);
322  }
323  glEnd();
324  /* Top surface */
325  cVertex.Set(BODY_RADIUS, 0.0f);
326  CVector2 cVertex2(LED_UPPER_RING_INNER_RADIUS, 0.0f);
327  glBegin(GL_QUAD_STRIP);
328  glNormal3f(0.0f, 0.0f, 1.0f);
329  for(GLuint i = 0; i <= m_unVertices / 8; i++) {
330  glVertex3f(cVertex2.GetX(), cVertex2.GetY(), BODY_ELEVATION + BODY_HEIGHT + LED_HEIGHT);
331  glVertex3f(cVertex.GetX(), cVertex.GetY(), BODY_ELEVATION + BODY_HEIGHT + LED_HEIGHT);
332  cVertex.Rotate(cAngle);
333  cVertex2.Rotate(cAngle);
334  }
335  glEnd();
336  }
337 
338  /****************************************/
339  /****************************************/
340 
342  public:
343  void ApplyTo(CQTOpenGLWidget& c_visualization,
344  CEPuckEntity& c_entity) {
345  static CQTOpenGLEPuck m_cModel;
346  c_visualization.DrawRays(c_entity.GetControllableEntity());
347  c_visualization.DrawEntity(c_entity.GetEmbodiedEntity());
348  m_cModel.Draw(c_entity);
349  }
350  };
351 
353  public:
354  void ApplyTo(CQTOpenGLWidget& c_visualization,
355  CEPuckEntity& c_entity) {
356  c_visualization.DrawBoundingBox(c_entity.GetEmbodiedEntity());
357  }
358  };
359 
360  REGISTER_QTOPENGL_ENTITY_OPERATION(CQTOpenGLOperationDrawNormal, CQTOpenGLOperationDrawEPuckNormal, CEPuckEntity);
361 
362  REGISTER_QTOPENGL_ENTITY_OPERATION(CQTOpenGLOperationDrawSelected, CQTOpenGLOperationDrawEPuckSelected, CEPuckEntity);
363 
364  /****************************************/
365  /****************************************/
366 
367 }
argos::CVector3::Set
void Set(const Real f_x, const Real f_y, const Real f_z)
Sets the vector contents from Cartesian coordinates.
Definition: vector3.h:143
argos::CVector3::GetZ
Real GetZ() const
Returns the z coordinate of this vector.
Definition: vector3.h:125
argos::CLEDEntity::GetColor
const CColor & GetColor() const
Returns the current color of the LED.
Definition: led_entity.h:58
argos::CLEDEquippedEntity::GetLED
CLEDEntity & GetLED(UInt32 un_index)
Returns an LED by numeric index.
Definition: led_equipped_entity.cpp:166
argos
The namespace containing all the ARGoS related code.
Definition: ci_actuator.h:12
argos::CVector3
A 3D vector class.
Definition: vector3.h:29
argos::CQTOpenGLEPuck::CQTOpenGLEPuck
CQTOpenGLEPuck()
Definition: qtopengl_epuck.cpp:44
argos::CRadians
It defines the basic type CRadians, used to store an angle value in radians.
Definition: angles.h:42
argos::CQTOpenGLWidget
Definition: qtopengl_widget.h:56
argos::CQTOpenGLEPuck::~CQTOpenGLEPuck
virtual ~CQTOpenGLEPuck()
Definition: qtopengl_epuck.cpp:80
argos::CColor::GetBlue
UInt8 GetBlue() const
Returns the blue channel of the color.
Definition: color.h:101
argos::CEPuckEntity::GetControllableEntity
CControllableEntity & GetControllableEntity()
Definition: epuck_entity.h:49
argos::CQTOpenGLEPuck::RenderLED
void RenderLED()
A single LED of the ring.
Definition: qtopengl_epuck.cpp:310
argos::CQTOpenGLOperationDrawNormal
Definition: qtopengl_widget.h:40
argos::CQTOpenGLEPuck::SetCircuitBoardMaterial
void SetCircuitBoardMaterial()
Sets a circuit board material.
Definition: qtopengl_epuck.cpp:146
argos::REGISTER_QTOPENGL_ENTITY_OPERATION
REGISTER_QTOPENGL_ENTITY_OPERATION(CQTOpenGLOperationDrawNormal, CQTOpenGLOperationDrawEPuckNormal, CEPuckEntity)
argos::CVector2::Set
void Set(Real f_x, Real f_y)
Sets the vector contents from Cartesian coordinates.
Definition: vector2.h:111
argos::CVector2::GetY
Real GetY() const
Returns the y coordinate of this vector.
Definition: vector2.h:94
argos::CEPuckEntity
Definition: epuck_entity.h:26
argos::CQTOpenGLEPuck::SetLEDMaterial
void SetLEDMaterial(GLfloat f_red, GLfloat f_green, GLfloat f_blue)
Sets a colored LED material.
Definition: qtopengl_epuck.cpp:160
argos::CQTOpenGLWidget::DrawEntity
void DrawEntity(CPositionalEntity &c_entity)
Draws a positional entity.
Definition: qtopengl_widget.cpp:468
argos::CVector3::GetX
Real GetX() const
Returns the x coordinate of this vector.
Definition: vector3.h:93
argos::CColor::GetRed
UInt8 GetRed() const
Returns the red channel of the color.
Definition: color.h:79
argos::CLEDEquippedEntity
A container of CLEDEntity.
Definition: led_equipped_entity.h:36
argos::CQTOpenGLWidget::DrawBoundingBox
void DrawBoundingBox(CEmbodiedEntity &c_entity)
Draws the bounding box of an embodied entity.
Definition: qtopengl_widget.cpp:538
argos::CQTOpenGLOperationDrawEPuckNormal
Definition: qtopengl_epuck.cpp:341
argos::CQTOpenGLOperationDrawEPuckSelected::ApplyTo
void ApplyTo(CQTOpenGLWidget &c_visualization, CEPuckEntity &c_entity)
Definition: qtopengl_epuck.cpp:354
argos::CQTOpenGLEPuck::RenderWheel
void RenderWheel()
Renders a wheel.
Definition: qtopengl_epuck.cpp:177
argos::CQTOpenGLEPuck::RenderBody
void RenderBody()
Renders the body.
Definition: qtopengl_epuck.cpp:263
argos::CVector2::GetX
Real GetX() const
Returns the x coordinate of this vector.
Definition: vector2.h:78
argos::CVector3::RotateY
CVector3 & RotateY(const CRadians &c_angle)
Rotates this vector wrt the y axis.
Definition: vector3.h:245
argos::CVector2
A 2D vector class.
Definition: vector2.h:25
argos::CQTOpenGLEPuck::SetGreenPlasticMaterial
void SetGreenPlasticMaterial()
Sets a green plastic material.
Definition: qtopengl_epuck.cpp:118
argos::CQTOpenGLEPuck::SetRedPlasticMaterial
void SetRedPlasticMaterial()
Sets a red plastic material.
Definition: qtopengl_epuck.cpp:132
argos::CEPuckEntity::GetEmbodiedEntity
CEmbodiedEntity & GetEmbodiedEntity()
Definition: epuck_entity.h:53
argos::CVector3::Normalize
CVector3 & Normalize()
Normalizes this vector.
Definition: vector3.h:215
UInt32
unsigned int UInt32
32-bit unsigned integer.
Definition: datatypes.h:97
argos::CQTOpenGLEPuck
Definition: qtopengl_epuck.h:23
argos::CQTOpenGLEPuck::Draw
virtual void Draw(CEPuckEntity &c_entity)
Definition: qtopengl_epuck.cpp:87
qtopengl_epuck.h
argos::CColor
The basic color type.
Definition: color.h:25
epuck_entity.h
argos::CQTOpenGLOperationDrawSelected
Definition: qtopengl_widget.h:45
argos::CEPuckEntity::GetLEDEquippedEntity
CLEDEquippedEntity & GetLEDEquippedEntity()
Definition: epuck_entity.h:61
argos::CQTOpenGLOperationDrawEPuckNormal::ApplyTo
void ApplyTo(CQTOpenGLWidget &c_visualization, CEPuckEntity &c_entity)
Definition: qtopengl_epuck.cpp:343
argos::CVector3::GetY
Real GetY() const
Returns the y coordinate of this vector.
Definition: vector3.h:109
argos::CQTOpenGLOperationDrawEPuckSelected
Definition: qtopengl_epuck.cpp:352
argos::CVector2::Rotate
CVector2 & Rotate(const CRadians &c_angle)
Rotates this vector by the wanted angle.
Definition: vector2.h:169
argos::CQTOpenGLWidget::DrawRays
void DrawRays(CControllableEntity &c_entity)
Draws a ray.
Definition: qtopengl_widget.cpp:504
argos::CRadians::TWO_PI
static const CRadians TWO_PI
Set to PI * 2.
Definition: angles.h:54
Real
float Real
Collects all ARGoS code.
Definition: datatypes.h:39
argos::CQTOpenGLEPuck::RenderChassis
void RenderChassis()
Renders the chassis.
Definition: qtopengl_epuck.cpp:224
argos::CColor::GetGreen
UInt8 GetGreen() const
Returns the green channel of the color.
Definition: color.h:90