Main MRPT website > C++ reference for MRPT 1.5.6
StockObjects.cpp
Go to the documentation of this file.
1 /* +---------------------------------------------------------------------------+
2  | Mobile Robot Programming Toolkit (MRPT) |
3  | http://www.mrpt.org/ |
4  | |
5  | Copyright (c) 2005-2017, Individual contributors, see AUTHORS file |
6  | See: http://www.mrpt.org/Authors - All rights reserved. |
7  | Released under BSD License. See details in http://www.mrpt.org/License |
8  +---------------------------------------------------------------------------+ */
9 
10 #include "opengl-precomp.h" // Precompiled header
11 
15 #include <mrpt/opengl/CArrow.h>
16 #include <mrpt/opengl/CCylinder.h>
17 #include <mrpt/opengl/CBox.h>
20 #include <mrpt/opengl/C3DSScene.h>
22 
23 using namespace mrpt::utils;
24 using namespace mrpt::opengl;
25 using namespace mrpt::poses;
26 using namespace mrpt::math;
27 using namespace std;
28 
29 
30 /*---------------------------------------------------------------
31  RobotPioneer
32  ---------------------------------------------------------------*/
33 CSetOfObjectsPtr stock_objects::RobotPioneer()
34 {
35  CSetOfObjectsPtr ret = CSetOfObjects::Create();
36 
37  ret->setName("theRobot");
38 
39  CSetOfTrianglesPtr obj = CSetOfTriangles::Create();
40 
41  // Add triangles:
43 
44  trian.r[0]=trian.r[1]=trian.r[2]= 1;
45  trian.g[0]=trian.g[1]=trian.g[2]= 0;
46  trian.b[0]=trian.b[1]=trian.b[2]= 0;
47  trian.a[0]=trian.a[1]=trian.a[2]= 1;
48 
49  trian.x[0] = 0.10f; trian.x[1] =-0.20f; trian.x[2] =-0.20f;
50  trian.y[0] =-0.10f; trian.y[1] = 0.10f; trian.y[2] =-0.10f;
51  trian.z[0] = 0.20f; trian.z[1] = 0.25f; trian.z[2] = 0.25f;
52  obj->insertTriangle( trian ); // 0
53  trian.x[0] = 0.10f; trian.x[1] = 0.10f; trian.x[2] =-0.20f;
54  trian.y[0] =-0.10f; trian.y[1] = 0.10f; trian.y[2] = 0.10f;
55  trian.z[0] = 0.20f; trian.z[1] = 0.20f; trian.z[2] = 0.25f;
56  obj->insertTriangle( trian ); // 1
57 
58  //trian.r = 0.9f; trian.g = 0; trian.b = 0; trian.a = 1;
59 
60  trian.x[0] = 0.10f; trian.x[1] = 0.10f; trian.x[2] = 0.10f;
61  trian.y[0] =-0.10f; trian.y[1] =-0.10f; trian.y[2] = 0.10f;
62  trian.z[0] = 0.05f; trian.z[1] = 0.20f; trian.z[2] = 0.20f;
63  obj->insertTriangle( trian ); // 2
64  trian.x[0] = 0.10f; trian.x[1] = 0.10f; trian.x[2] = 0.10f;
65  trian.y[0] =-0.10f; trian.y[1] = 0.10f; trian.y[2] = 0.10f;
66  trian.z[0] = 0.05f; trian.z[1] = 0.05f; trian.z[2] = 0.20f;
67  obj->insertTriangle( trian ); // 3
68 
69  trian.x[0] =-0.20f; trian.x[1] =-0.20f; trian.x[2] =-0.20f;
70  trian.y[0] =-0.10f; trian.y[1] =-0.10f; trian.y[2] = 0.10f;
71  trian.z[0] = 0.05f; trian.z[1] = 0.25f; trian.z[2] = 0.25f;
72  obj->insertTriangle( trian ); // 2b
73  trian.x[0] =-0.20f; trian.x[1] =-0.20f; trian.x[2] =-0.20f;
74  trian.y[0] =-0.10f; trian.y[1] = 0.10f; trian.y[2] = 0.10f;
75  trian.z[0] = 0.05f; trian.z[1] = 0.05f; trian.z[2] = 0.25f;
76  obj->insertTriangle( trian ); // 3b
77 
78  //trian.r = 0.8f; trian.g = 0; trian.b = 0; trian.a = 1;
79  trian.x[0] = 0.10f; trian.x[1] =-0.20f; trian.x[2] =-0.20f;
80  trian.y[0] =-0.10f; trian.y[1] =-0.10f; trian.y[2] =-0.10f;
81  trian.z[0] = 0.20f; trian.z[1] = 0.25f; trian.z[2] = 0.05f;
82  obj->insertTriangle( trian ); // 4
83  trian.x[0] = 0.10f; trian.x[1] = 0.10f; trian.x[2] =-0.20f;
84  trian.y[0] =-0.10f; trian.y[1] =-0.10f; trian.y[2] =-0.10f;
85  trian.z[0] = 0.20f; trian.z[1] = 0.05f; trian.z[2] = 0.05f;
86  obj->insertTriangle( trian ); // 5
87 
88  trian.x[0] = 0.10f; trian.x[1] =-0.20f; trian.x[2] =-0.20f;
89  trian.y[0] = 0.10f; trian.y[1] = 0.10f; trian.y[2] = 0.10f;
90  trian.z[0] = 0.20f; trian.z[1] = 0.25f; trian.z[2] = 0.05f;
91  obj->insertTriangle( trian ); // 6
92  trian.x[0] = 0.10f; trian.x[1] = 0.10f; trian.x[2] =-0.20f;
93  trian.y[0] = 0.10f; trian.y[1] = 0.10f; trian.y[2] = 0.10f;
94  trian.z[0] = 0.20f; trian.z[1] = 0.05f; trian.z[2] = 0.05f;
95  obj->insertTriangle( trian ); // 7
96 
97  trian.r[0]=trian.r[1]=trian.r[2]= 0.05f;
98  trian.g[0]=trian.g[1]=trian.g[2]= 0.05f;
99  trian.b[0]=trian.b[1]=trian.b[2]= 0.05f;
100  trian.a[0]=trian.a[1]=trian.a[2]= 1;
101 
102  trian.x[0] = 0.00f; trian.x[1] = 0.00f; trian.x[2] = 0.05f;
103  trian.y[0] = 0.11f; trian.y[1] = 0.11f; trian.y[2] = 0.11f;
104  trian.z[0] = 0.00f; trian.z[1] = 0.10f; trian.z[2] = 0.05f;
105  obj->insertTriangle( trian ); // 8
106  trian.x[0] = 0.00f; trian.x[1] = 0.00f; trian.x[2] = -0.05f;
107  trian.y[0] = 0.11f; trian.y[1] = 0.11f; trian.y[2] = 0.11f;
108  trian.z[0] = 0.00f; trian.z[1] = 0.10f; trian.z[2] = 0.05f;
109  obj->insertTriangle( trian ); // 9
110 
111  trian.x[0] = 0.00f; trian.x[1] = 0.00f; trian.x[2] = 0.05f;
112  trian.y[0] =-0.11f; trian.y[1] =-0.11f; trian.y[2] =-0.11f;
113  trian.z[0] = 0.00f; trian.z[1] = 0.10f; trian.z[2] = 0.05f;
114  obj->insertTriangle( trian ); // 10
115  trian.x[0] = 0.00f; trian.x[1] = 0.00f; trian.x[2] = -0.05f;
116  trian.y[0] =-0.11f; trian.y[1] =-0.11f; trian.y[2] =-0.11f;
117  trian.z[0] = 0.00f; trian.z[1] = 0.10f; trian.z[2] = 0.05f;
118  obj->insertTriangle( trian ); // 11
119 
120  ret->insert( obj );
121 
122  return ret;
123 }
124 
125 
126 /*---------------------------------------------------------------
127  CornerXYZ
128  ---------------------------------------------------------------*/
129 CSetOfObjectsPtr stock_objects::CornerXYZ(float scale)
130 {
131  CSetOfObjectsPtr ret = CSetOfObjects::Create();
132 
133  CArrowPtr obj = CArrow::Create(
134  0,0,0,
135  scale,0,0,
136  0.25f*scale,0.02f*scale,0.05f*scale);
137 
138  obj->setColor(1,0,0);
139 
140  ret->insert( obj );
141 
142  obj = CArrow::Create(
143  0,0,0,
144  0,scale,0,
145  0.25f*scale,0.02f*scale,0.05f*scale);
146  obj->setColor(0,1,0);
147 
148  ret->insert( obj );
149 
150  obj = CArrow::Create(
151  0,0,0,
152  0,0,scale,
153  0.25f*scale,0.02f*scale,0.05f*scale);
154  obj->setColor(0,0,1);
155 
156  ret->insert( obj );
157 
158  return ret;
159 }
160 
161 /*---------------------------------------------------------------
162  RobotRhodon
163  ---------------------------------------------------------------*/
164 CSetOfObjectsPtr stock_objects::RobotRhodon()
165 {
166  CSetOfObjectsPtr ret = CSetOfObjects::Create();
167  float height = 0;
168 
169  vector<TPoint2D> level1;
170  level1.push_back(TPoint2D(0.31, 0));
171  level1.push_back(TPoint2D(0.22, 0.24));
172  level1.push_back(TPoint2D(-0.22, 0.24));
173  level1.push_back(TPoint2D(-0.31, 0));
174  level1.push_back(TPoint2D(-0.22, -0.24));
175  level1.push_back(TPoint2D(0.22, -0.24));
176 
177  CPolyhedronPtr obj1 = opengl::CPolyhedron::CreateCustomPrism(level1, 0.38);
178  obj1->setLocation(0,0,height);
179  height+=0.38f;
180  obj1->setColor(0.6,0.6,0.6);
181  ret->insert( obj1 );
182 
183 
184  vector<TPoint2D> level2;
185  level2.push_back(TPoint2D(0.16, 0.21));
186  level2.push_back(TPoint2D(-0.16, 0.21));
187  level2.push_back(TPoint2D(-0.16, -0.21));
188  level2.push_back(TPoint2D(0.16, -0.21));
189 
190  CPolyhedronPtr obj2 = opengl::CPolyhedron::CreateCustomPrism(level2, 0.35);
191  obj2->setLocation(0,0,height);
192  height+=0.35f;
193  obj2->setColor(0.2,0.2,0.2);
194  ret->insert( obj2 );
195 
196 
197  vector<TPoint2D> level3;
198  level3.push_back(TPoint2D(-0.12, 0.12));
199  level3.push_back(TPoint2D(-0.16, 0.12));
200  level3.push_back(TPoint2D(-0.16, -0.12));
201  level3.push_back(TPoint2D(-0.12, -0.12));
202 
203  CPolyhedronPtr obj3 = opengl::CPolyhedron::CreateCustomPrism(level3, 1);
204  obj3->setLocation(0,0,height);
205  //height+=1;
206  obj3->setColor(0.6,0.6,0.6);
207  ret->insert( obj3 );
208 
209 
210  opengl::CCylinderPtr obj4 = opengl::CCylinder::Create(0.05f, 0.05f, 0.4f, 20, 20);
211  obj4->setLocation(0,0,0.73);
212  obj4->setColor(0,0,0.9);
213  ret->insert( obj4 );
214 
215  opengl::CCylinderPtr obj5 = opengl::CCylinder::Create(0.05f, 0.05f, 0.4f, 20, 20);
216  obj5->setPose(CPose3D(0.32,0,0.89,0,-1,0));
217  obj5->setColor(0,0,0.9);
218  ret->insert( obj5 );
219 
220  return ret;
221 }
222 
223 /*---------------------------------------------------------------
224  RobotGiraff
225  ---------------------------------------------------------------*/
226 CSetOfObjectsPtr stock_objects::RobotGiraff()
227 {
228  CSetOfObjectsPtr ret = CSetOfObjects::Create();
229  float height = 0;
230 
231  //Base
232  vector<TPoint2D> level1;
233  level1.push_back(TPoint2D(0.31, 0));
234  level1.push_back(TPoint2D(0.22, 0.24));
235  level1.push_back(TPoint2D(-0.22, 0.24));
236  level1.push_back(TPoint2D(-0.31, 0));
237  level1.push_back(TPoint2D(-0.22, -0.24));
238  level1.push_back(TPoint2D(0.22, -0.24));
239 
240  CPolyhedronPtr obj1 = opengl::CPolyhedron::CreateCustomPrism(level1, 0.23);
241  obj1->setLocation(0,0,height);
242  height+=0.23f;
243  obj1->setColor(1.0,0.6,0.0);
244  ret->insert( obj1 );
245 
246  //Electronic's cage
247  vector<TPoint2D> level2;
248  level2.push_back(TPoint2D(0.13, 0.1));
249  level2.push_back(TPoint2D(-0.13, 0.1));
250  level2.push_back(TPoint2D(-0.13, -0.1));
251  level2.push_back(TPoint2D(0.13, -0.1));
252 
253  CPolyhedronPtr obj2 = opengl::CPolyhedron::CreateCustomPrism(level2, 0.45);
254  obj2->setLocation(0,0,height);
255  height+=0.45f;
256  obj2->setColor(1.0,0.6,0.2);
257  ret->insert( obj2 );
258 
259  //Neck
260  vector<TPoint2D> level3;
261  level3.push_back(TPoint2D(0.03, 0.03));
262  level3.push_back(TPoint2D(-0.03, 0.03));
263  level3.push_back(TPoint2D(-0.03, -0.03));
264  level3.push_back(TPoint2D(0.03, -0.03));
265 
266 
267  CPolyhedronPtr obj3 = opengl::CPolyhedron::CreateCustomPrism(level3, 0.55);
268  obj3->setLocation(0,0,height);
269  height+=0.55f;
270  obj3->setColor(0.6,0.6,0.6);
271  ret->insert( obj3 );
272 
273  //Screen
274  vector<TPoint2D> level4;
275  level4.push_back(TPoint2D(0.03, 0.11));
276  level4.push_back(TPoint2D(-0.03, 0.11));
277  level4.push_back(TPoint2D(-0.03, -0.11));
278  level4.push_back(TPoint2D(0.03, -0.11));
279 
280 
281  CPolyhedronPtr obj4 = opengl::CPolyhedron::CreateCustomPrism(level4, 0.4);
282  obj4->setLocation(0,0,height);
283  height+=0.4f;
284  obj4->setColor(1.0,0.6,0.0);
285  ret->insert( obj4 );
286 
287  return ret;
288 }
289 
290 CSetOfObjectsPtr stock_objects::CornerXYZEye()
291 {
292  CSetOfObjectsPtr ret = CSetOfObjects::Create();
293  CPose3D rotation;
294 
295  CArrowPtr obj = CArrow::Create(
296  0,0,0,
297  1.0,0,0,
298  0.25f,0.02f,0.05f);
299 
300  obj->setColor(1,0,0);
301 
302  ret->insert( obj );
303 
304  obj = CArrow::Create(
305  0,0,0,
306  0,1.0,0,
307  0.25f,0.02f,0.05f);
308  obj->setColor(0,1,0);
309 
310  ret->insert( obj );
311 
312  obj = CArrow::Create(
313  0,0,-1.0,
314  0,0,0,
315  0.25f,0.02f,0.05f);
316  obj->setColor(0,0,1);
317 
318  ret->insert( obj );
319 
320  return ret;
321 }
322 
323 /*---------------------------------------------------------------
324  BumblebeeCamera
325  ---------------------------------------------------------------*/
327 {
328 
329  CSetOfObjectsPtr camera = opengl::CSetOfObjects::Create();
330 
331  CPolyhedronPtr rect = opengl::CPolyhedron::CreateCubicPrism( -0.02, 0.14, -0.02, 0.02, 0, -0.04 );
332  rect->setColor( 1, 0.8, 0 );
333 
334  camera->insert( rect );
335 
336  CCylinderPtr lCam = opengl::CCylinder::Create( 0.01f,0.01f, 0.003f, 10, 10 );
337  lCam->setColor( 1,0,0 );
338 
339  CCylinderPtr rCam = opengl::CCylinder::Create( 0.01f,0.01f, 0.003f, 10, 10 );
340  rCam->setPose( CPose3D(0.12,0,0) );
341  rCam->setColor( 0,0,0 );
342 
343  camera->insert( lCam );
344  camera->insert( rCam );
345 
346  return camera;
347 }
348 
349 
350 CSetOfObjectsPtr stock_objects::CornerXYZSimple(float scale, float lineWidth)
351 {
352  CSetOfObjectsPtr ret = CSetOfObjects::Create();
353 
354  {
355  CSimpleLinePtr lin = CSimpleLine::Create();
356  lin->setLineWidth(lineWidth);
357  lin->setColor(1,0,0);
358  lin->setLineCoords(0,0,0, scale,0,0);
359  ret->insert(lin);
360  }
361  {
362  CSimpleLinePtr lin = CSimpleLine::Create();
363  lin->setLineWidth(lineWidth);
364  lin->setColor(0,1,0);
365  lin->setLineCoords(0,0,0, 0,scale,0);
366  ret->insert(lin);
367  }
368  {
369  CSimpleLinePtr lin = CSimpleLine::Create();
370  lin->setLineWidth(lineWidth);
371  lin->setColor(0,0,1);
372  lin->setLineCoords(0,0,0, 0,0,scale);
373  ret->insert(lin);
374  }
375  return ret;
376 }
377 
378 CSetOfObjectsPtr stock_objects::CornerXYSimple(float scale, float lineWidth)
379 {
380  CSetOfObjectsPtr ret = CSetOfObjects::Create();
381 
382  {
383  CSimpleLinePtr lin = CSimpleLine::Create();
384  lin->setLineWidth(lineWidth);
385  lin->setColor(1,0,0);
386  lin->setLineCoords(0,0,0, scale,0,0);
387  ret->insert(lin);
388  }
389  {
390  CSimpleLinePtr lin = CSimpleLine::Create();
391  lin->setLineWidth(lineWidth);
392  lin->setColor(0,1,0);
393  lin->setLineCoords(0,0,0, 0,scale,0);
394  ret->insert(lin);
395  }
396  return ret;
397 }
398 
399 CSetOfObjectsPtr stock_objects::Hokuyo_URG()
400 {
401  CSetOfObjectsPtr ret = CSetOfObjects::Create();
402 
403  {
404  CBoxPtr base = CBox::Create(TPoint3D(-0.025,-0.025,-0.0575),TPoint3D(0.025,0.025,-0.0185));
405  base->setColor(0.7,0.7,0.7);
406  ret->insert(base);
407  }
408  {
409  CCylinderPtr cyl1 = CCylinder::Create(0.02f,0.02f,0.01f);
410  cyl1->setColor(0,0,0);
411  cyl1->setPose(CPoint3D(0,0,-0.014));
412  ret->insert(cyl1);
413  }
414  {
415  CCylinderPtr cyl2 = CCylinder::Create(0.02f,0.0175f,0.01f);
416  cyl2->setColor(0,0,0);
417  cyl2->setPose(CPoint3D(0,0,-0.004));
418  ret->insert(cyl2);
419  }
420  {
421  CCylinderPtr cyl3 = CCylinder::Create(0.0175f,0.0175f,0.01f);
422  cyl3->setColor(0,0,0);
423  cyl3->setPose(CPoint3D(0,0,0.004));
424  ret->insert(cyl3);
425  }
426 
427  return ret;
428 }
429 
430 CSetOfObjectsPtr stock_objects::Hokuyo_UTM()
431 {
432  CSetOfObjectsPtr ret = CSetOfObjects::Create();
433 
434  {
435  CBoxPtr base = CBox::Create(TPoint3D(-0.03,-0.03,-0.055),TPoint3D(0.03,0.03,-0.014));
436  base->setColor(0,0,0);
437  ret->insert(base);
438  }
439  {
440  CCylinderPtr cyl1 = CCylinder::Create(0.028f,0.024f,0.028f);
441  cyl1->setColor(0,0,0);
442  cyl1->setPose(CPose3D(0,0,-0.014));
443  ret->insert(cyl1);
444  }
445  {
446  CCylinderPtr cyl2 = CCylinder::Create(0.028f,0.028f,0.01f);
447  cyl2->setColor(1,69/255.0,0);
448  cyl2->setPose(CPoint3D(0,0,0.014));
449  ret->insert(cyl2);
450  }
451  {
452  CCylinderPtr cyl3 = CCylinder::Create(0.028f,0.028f,0.01f);
453  cyl3->setColor(0,0,0);
454  cyl3->setPose(CPoint3D(0,0,0.024));
455  ret->insert(cyl3);
456  }
457 
458  return ret;
459 }
460 
462 {
463  CSetOfObjectsPtr ret = CSetOfObjects::Create();
464 
465  {
466  CBoxPtr cabin = CBox::Create(TPoint3D(0.878,0.723,-0.12),TPoint3D(-0.258,-0.723,-1.690));
467  cabin->setColor(0.7,0.7,0.7);
468  ret->insert(cabin);
469  }
470  {
471  CBoxPtr back = CBox::Create(TPoint3D(-0.258,0.723,-0.72),TPoint3D(-5.938,-0.723,-1.690));
472  back->setColor(1,1,1);
473  ret->insert(back);
474  }
475  {
476  CBoxPtr boomAxis = CBox::Create(TPoint3D(-5.938,0.723,-1.0),TPoint3D(-6.189,-0.723,-1.690));
477  boomAxis->setColor(0,0,0);
478  ret->insert(boomAxis);
479  }
480  {
481  CBoxPtr boom1 = CBox::Create(TPoint3D(-5.938,0.723,-1.0),TPoint3D(-6.189,11.277,-1.620));
482  boom1->setColor(0,1,0);
483  ret->insert(boom1);
484  }
485  {
486  CBoxPtr boom2 = CBox::Create(TPoint3D(-5.938,-0.723,-1.0),TPoint3D(-6.189,-11.277,-1.620));
487  boom2->setColor(0,1,0);
488  ret->insert(boom2);
489  }
490  {
491  CCylinderPtr cyl1 = CCylinder::Create(0.716f,0.716f,0.387f,30);
492  cyl1->setColor(0,0,0);
493  cyl1->setPose(CPose3D(-0.710,0.923,-2.480,0,0,DEG2RAD(90)));
494  ret->insert(cyl1);
495  }
496  {
497  CCylinderPtr cyl2 = CCylinder::Create(0.716f,0.716f,0.387f,30);
498  cyl2->setColor(0,0,0);
499  cyl2->setPose(CPose3D(-3.937,0.923,-2.480,0,0,DEG2RAD(90)));
500  ret->insert(cyl2);
501  }
502  {
503  CCylinderPtr cyl1 = CCylinder::Create(0.716f,0.716f,0.387f,30);
504  cyl1->setColor(0,0,0);
505  cyl1->setPose(CPose3D(-0.710,-0.423,-2.480,0,0,DEG2RAD(90)));
506  ret->insert(cyl1);
507  }
508  {
509  CCylinderPtr cyl2 = CCylinder::Create(0.716f,0.716f,0.387f,30);
510  cyl2->setColor(0,0,0);
511  cyl2->setPose(CPose3D(-3.937,-0.423,-2.480,0,0,DEG2RAD(90)));
512  ret->insert(cyl2);
513  }
514  return ret;
515 }
static CCylinderPtr Create()
GLenum GLenum GLenum GLenum GLenum scale
Definition: glew.h:8359
CSetOfObjectsPtr OPENGL_IMPEXP RobotGiraff()
Returns a representation of RobotGiraff.
CSetOfObjectsPtr OPENGL_IMPEXP CornerXYZ(float scale=1.0)
Returns three arrows representing a X,Y,Z 3D corner.
CSetOfObjectsPtr OPENGL_IMPEXP CornerXYZEye()
Returns three arrows representing a X,Y,Z 3D corner.
CSetOfObjectsPtr OPENGL_IMPEXP RobotRhodon()
Returns a representation of Rhodon.
CSetOfObjectsPtr OPENGL_IMPEXP CornerXYSimple(float scale=1.0, float lineWidth=1.0)
Returns two arrows representing a X,Y 2D corner (just thick lines, fast to render).
CSetOfObjectsPtr OPENGL_IMPEXP CornerXYZSimple(float scale=1.0, float lineWidth=1.0)
Returns three arrows representing a X,Y,Z 3D corner (just thick lines instead of complex arrows for f...
GLhandleARB obj
Definition: glew.h:3276
double DEG2RAD(const double x)
Degrees to radians.
Definition: bits.h:82
CSetOfObjectsPtr OPENGL_IMPEXP RobotPioneer()
Returns a representation of a Pioneer II mobile base.
A class used to store a 3D point.
Definition: CPoint3D.h:32
GLint GLint GLint GLint GLint GLint GLsizei GLsizei height
Definition: glew.h:1166
static CPolyhedronPtr CreateCustomPrism(const std::vector< mrpt::math::TPoint2D > &baseVertices, double height)
Creates a custom prism with vertical edges, given any base which will lie on the XY plane...
CSetOfObjectsPtr OPENGL_IMPEXP Househam_Sprayer()
Returns a simple 3D model of a househam sprayer.
A class used to store a 3D pose (a 3D translation + a rotation in 3D).
Definition: CPose3D.h:72
static CPolyhedronPtr CreateCubicPrism(double x1, double x2, double y1, double y2, double z1, double z2)
Creates a cubic prism, given the coordinates of two opposite vertices.
CSetOfObjectsPtr OPENGL_IMPEXP Hokuyo_UTM()
Returns a simple 3D model of a Hokuyo UTM scanner.
Lightweight 3D point.
Lightweight 2D point.
CSetOfObjectsPtr OPENGL_IMPEXP Hokuyo_URG()
Returns a simple 3D model of a Hokuyo URG scanner.
CSetOfObjectsPtr OPENGL_IMPEXP BumblebeeCamera()
Returns a simple 3D model of a PointGrey Bumblebee stereo camera.
static CSetOfObjectsPtr Create()
GLdouble GLdouble GLdouble GLdouble GLdouble GLdouble f
Definition: glew.h:5092



Page generated by Doxygen 1.8.6 for MRPT 1.5.6 Git: 4c65e84 Tue Apr 24 08:18:17 2018 +0200 at mar abr 24 08:26:17 CEST 2018