Main MRPT website > C++ reference for MRPT 1.9.9
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  RobotPioneer
31  ---------------------------------------------------------------*/
33 {
34  CSetOfObjects::Ptr ret = mrpt::make_aligned_shared<CSetOfObjects>();
35 
36  ret->setName("theRobot");
37 
38  CSetOfTriangles::Ptr obj = mrpt::make_aligned_shared<CSetOfTriangles>();
39 
40  // Add triangles:
42 
43  trian.r[0] = trian.r[1] = trian.r[2] = 1;
44  trian.g[0] = trian.g[1] = trian.g[2] = 0;
45  trian.b[0] = trian.b[1] = trian.b[2] = 0;
46  trian.a[0] = trian.a[1] = trian.a[2] = 1;
47 
48  trian.x[0] = 0.10f;
49  trian.x[1] = -0.20f;
50  trian.x[2] = -0.20f;
51  trian.y[0] = -0.10f;
52  trian.y[1] = 0.10f;
53  trian.y[2] = -0.10f;
54  trian.z[0] = 0.20f;
55  trian.z[1] = 0.25f;
56  trian.z[2] = 0.25f;
57  obj->insertTriangle(trian); // 0
58  trian.x[0] = 0.10f;
59  trian.x[1] = 0.10f;
60  trian.x[2] = -0.20f;
61  trian.y[0] = -0.10f;
62  trian.y[1] = 0.10f;
63  trian.y[2] = 0.10f;
64  trian.z[0] = 0.20f;
65  trian.z[1] = 0.20f;
66  trian.z[2] = 0.25f;
67  obj->insertTriangle(trian); // 1
68 
69  // trian.r = 0.9f; trian.g = 0; trian.b = 0; trian.a = 1;
70 
71  trian.x[0] = 0.10f;
72  trian.x[1] = 0.10f;
73  trian.x[2] = 0.10f;
74  trian.y[0] = -0.10f;
75  trian.y[1] = -0.10f;
76  trian.y[2] = 0.10f;
77  trian.z[0] = 0.05f;
78  trian.z[1] = 0.20f;
79  trian.z[2] = 0.20f;
80  obj->insertTriangle(trian); // 2
81  trian.x[0] = 0.10f;
82  trian.x[1] = 0.10f;
83  trian.x[2] = 0.10f;
84  trian.y[0] = -0.10f;
85  trian.y[1] = 0.10f;
86  trian.y[2] = 0.10f;
87  trian.z[0] = 0.05f;
88  trian.z[1] = 0.05f;
89  trian.z[2] = 0.20f;
90  obj->insertTriangle(trian); // 3
91 
92  trian.x[0] = -0.20f;
93  trian.x[1] = -0.20f;
94  trian.x[2] = -0.20f;
95  trian.y[0] = -0.10f;
96  trian.y[1] = -0.10f;
97  trian.y[2] = 0.10f;
98  trian.z[0] = 0.05f;
99  trian.z[1] = 0.25f;
100  trian.z[2] = 0.25f;
101  obj->insertTriangle(trian); // 2b
102  trian.x[0] = -0.20f;
103  trian.x[1] = -0.20f;
104  trian.x[2] = -0.20f;
105  trian.y[0] = -0.10f;
106  trian.y[1] = 0.10f;
107  trian.y[2] = 0.10f;
108  trian.z[0] = 0.05f;
109  trian.z[1] = 0.05f;
110  trian.z[2] = 0.25f;
111  obj->insertTriangle(trian); // 3b
112 
113  // trian.r = 0.8f; trian.g = 0; trian.b = 0; trian.a = 1;
114  trian.x[0] = 0.10f;
115  trian.x[1] = -0.20f;
116  trian.x[2] = -0.20f;
117  trian.y[0] = -0.10f;
118  trian.y[1] = -0.10f;
119  trian.y[2] = -0.10f;
120  trian.z[0] = 0.20f;
121  trian.z[1] = 0.25f;
122  trian.z[2] = 0.05f;
123  obj->insertTriangle(trian); // 4
124  trian.x[0] = 0.10f;
125  trian.x[1] = 0.10f;
126  trian.x[2] = -0.20f;
127  trian.y[0] = -0.10f;
128  trian.y[1] = -0.10f;
129  trian.y[2] = -0.10f;
130  trian.z[0] = 0.20f;
131  trian.z[1] = 0.05f;
132  trian.z[2] = 0.05f;
133  obj->insertTriangle(trian); // 5
134 
135  trian.x[0] = 0.10f;
136  trian.x[1] = -0.20f;
137  trian.x[2] = -0.20f;
138  trian.y[0] = 0.10f;
139  trian.y[1] = 0.10f;
140  trian.y[2] = 0.10f;
141  trian.z[0] = 0.20f;
142  trian.z[1] = 0.25f;
143  trian.z[2] = 0.05f;
144  obj->insertTriangle(trian); // 6
145  trian.x[0] = 0.10f;
146  trian.x[1] = 0.10f;
147  trian.x[2] = -0.20f;
148  trian.y[0] = 0.10f;
149  trian.y[1] = 0.10f;
150  trian.y[2] = 0.10f;
151  trian.z[0] = 0.20f;
152  trian.z[1] = 0.05f;
153  trian.z[2] = 0.05f;
154  obj->insertTriangle(trian); // 7
155 
156  trian.r[0] = trian.r[1] = trian.r[2] = 0.05f;
157  trian.g[0] = trian.g[1] = trian.g[2] = 0.05f;
158  trian.b[0] = trian.b[1] = trian.b[2] = 0.05f;
159  trian.a[0] = trian.a[1] = trian.a[2] = 1;
160 
161  trian.x[0] = 0.00f;
162  trian.x[1] = 0.00f;
163  trian.x[2] = 0.05f;
164  trian.y[0] = 0.11f;
165  trian.y[1] = 0.11f;
166  trian.y[2] = 0.11f;
167  trian.z[0] = 0.00f;
168  trian.z[1] = 0.10f;
169  trian.z[2] = 0.05f;
170  obj->insertTriangle(trian); // 8
171  trian.x[0] = 0.00f;
172  trian.x[1] = 0.00f;
173  trian.x[2] = -0.05f;
174  trian.y[0] = 0.11f;
175  trian.y[1] = 0.11f;
176  trian.y[2] = 0.11f;
177  trian.z[0] = 0.00f;
178  trian.z[1] = 0.10f;
179  trian.z[2] = 0.05f;
180  obj->insertTriangle(trian); // 9
181 
182  trian.x[0] = 0.00f;
183  trian.x[1] = 0.00f;
184  trian.x[2] = 0.05f;
185  trian.y[0] = -0.11f;
186  trian.y[1] = -0.11f;
187  trian.y[2] = -0.11f;
188  trian.z[0] = 0.00f;
189  trian.z[1] = 0.10f;
190  trian.z[2] = 0.05f;
191  obj->insertTriangle(trian); // 10
192  trian.x[0] = 0.00f;
193  trian.x[1] = 0.00f;
194  trian.x[2] = -0.05f;
195  trian.y[0] = -0.11f;
196  trian.y[1] = -0.11f;
197  trian.y[2] = -0.11f;
198  trian.z[0] = 0.00f;
199  trian.z[1] = 0.10f;
200  trian.z[2] = 0.05f;
201  obj->insertTriangle(trian); // 11
202 
203  ret->insert(obj);
204 
205  return ret;
206 }
207 
208 /*---------------------------------------------------------------
209  CornerXYZ
210  ---------------------------------------------------------------*/
212 {
213  CSetOfObjects::Ptr ret = mrpt::make_aligned_shared<CSetOfObjects>();
214 
215  CArrow::Ptr obj = CArrow::Create(
216  0, 0, 0, scale, 0, 0, 0.25f * scale, 0.02f * scale, 0.05f * scale);
217 
218  obj->setColor(1, 0, 0);
219 
220  ret->insert(obj);
221 
222  obj = CArrow::Create(
223  0, 0, 0, 0, scale, 0, 0.25f * scale, 0.02f * scale, 0.05f * scale);
224  obj->setColor(0, 1, 0);
225 
226  ret->insert(obj);
227 
228  obj = CArrow::Create(
229  0, 0, 0, 0, 0, scale, 0.25f * scale, 0.02f * scale, 0.05f * scale);
230  obj->setColor(0, 0, 1);
231 
232  ret->insert(obj);
233 
234  return ret;
235 }
236 
237 /*---------------------------------------------------------------
238  RobotRhodon
239  ---------------------------------------------------------------*/
241 {
242  CSetOfObjects::Ptr ret = mrpt::make_aligned_shared<CSetOfObjects>();
243  float height = 0;
244 
245  vector<TPoint2D> level1;
246  level1.push_back(TPoint2D(0.31, 0));
247  level1.push_back(TPoint2D(0.22, 0.24));
248  level1.push_back(TPoint2D(-0.22, 0.24));
249  level1.push_back(TPoint2D(-0.31, 0));
250  level1.push_back(TPoint2D(-0.22, -0.24));
251  level1.push_back(TPoint2D(0.22, -0.24));
252 
253  CPolyhedron::Ptr obj1 =
255  obj1->setLocation(0, 0, height);
256  height += 0.38f;
257  obj1->setColor(0.6, 0.6, 0.6);
258  ret->insert(obj1);
259 
260  vector<TPoint2D> level2;
261  level2.push_back(TPoint2D(0.16, 0.21));
262  level2.push_back(TPoint2D(-0.16, 0.21));
263  level2.push_back(TPoint2D(-0.16, -0.21));
264  level2.push_back(TPoint2D(0.16, -0.21));
265 
266  CPolyhedron::Ptr obj2 =
268  obj2->setLocation(0, 0, height);
269  height += 0.35f;
270  obj2->setColor(0.2, 0.2, 0.2);
271  ret->insert(obj2);
272 
273  vector<TPoint2D> level3;
274  level3.push_back(TPoint2D(-0.12, 0.12));
275  level3.push_back(TPoint2D(-0.16, 0.12));
276  level3.push_back(TPoint2D(-0.16, -0.12));
277  level3.push_back(TPoint2D(-0.12, -0.12));
278 
280  obj3->setLocation(0, 0, height);
281  // height+=1;
282  obj3->setColor(0.6, 0.6, 0.6);
283  ret->insert(obj3);
284 
285  opengl::CCylinder::Ptr obj4 = mrpt::make_aligned_shared<opengl::CCylinder>(
286  0.05f, 0.05f, 0.4f, 20, 20);
287  obj4->setLocation(0, 0, 0.73);
288  obj4->setColor(0, 0, 0.9);
289  ret->insert(obj4);
290 
291  opengl::CCylinder::Ptr obj5 = mrpt::make_aligned_shared<opengl::CCylinder>(
292  0.05f, 0.05f, 0.4f, 20, 20);
293  obj5->setPose(CPose3D(0.32, 0, 0.89, 0, -1, 0));
294  obj5->setColor(0, 0, 0.9);
295  ret->insert(obj5);
296 
297  return ret;
298 }
299 
300 /*---------------------------------------------------------------
301  RobotGiraff
302  ---------------------------------------------------------------*/
304 {
305  CSetOfObjects::Ptr ret = mrpt::make_aligned_shared<CSetOfObjects>();
306  float height = 0;
307 
308  // Base
309  vector<TPoint2D> level1;
310  level1.push_back(TPoint2D(0.31, 0));
311  level1.push_back(TPoint2D(0.22, 0.24));
312  level1.push_back(TPoint2D(-0.22, 0.24));
313  level1.push_back(TPoint2D(-0.31, 0));
314  level1.push_back(TPoint2D(-0.22, -0.24));
315  level1.push_back(TPoint2D(0.22, -0.24));
316 
317  CPolyhedron::Ptr obj1 =
319  obj1->setLocation(0, 0, height);
320  height += 0.23f;
321  obj1->setColor(1.0, 0.6, 0.0);
322  ret->insert(obj1);
323 
324  // Electronic's cage
325  vector<TPoint2D> level2;
326  level2.push_back(TPoint2D(0.13, 0.1));
327  level2.push_back(TPoint2D(-0.13, 0.1));
328  level2.push_back(TPoint2D(-0.13, -0.1));
329  level2.push_back(TPoint2D(0.13, -0.1));
330 
331  CPolyhedron::Ptr obj2 =
333  obj2->setLocation(0, 0, height);
334  height += 0.45f;
335  obj2->setColor(1.0, 0.6, 0.2);
336  ret->insert(obj2);
337 
338  // Neck
339  vector<TPoint2D> level3;
340  level3.push_back(TPoint2D(0.03, 0.03));
341  level3.push_back(TPoint2D(-0.03, 0.03));
342  level3.push_back(TPoint2D(-0.03, -0.03));
343  level3.push_back(TPoint2D(0.03, -0.03));
344 
345  CPolyhedron::Ptr obj3 =
347  obj3->setLocation(0, 0, height);
348  height += 0.55f;
349  obj3->setColor(0.6, 0.6, 0.6);
350  ret->insert(obj3);
351 
352  // Screen
353  vector<TPoint2D> level4;
354  level4.push_back(TPoint2D(0.03, 0.11));
355  level4.push_back(TPoint2D(-0.03, 0.11));
356  level4.push_back(TPoint2D(-0.03, -0.11));
357  level4.push_back(TPoint2D(0.03, -0.11));
358 
360  obj4->setLocation(0, 0, height);
361  height += 0.4f;
362  obj4->setColor(1.0, 0.6, 0.0);
363  ret->insert(obj4);
364 
365  return ret;
366 }
367 
369 {
370  CSetOfObjects::Ptr ret = mrpt::make_aligned_shared<CSetOfObjects>();
371  CPose3D rotation;
372 
373  CArrow::Ptr obj = CArrow::Create(0, 0, 0, 1.0, 0, 0, 0.25f, 0.02f, 0.05f);
374 
375  obj->setColor(1, 0, 0);
376 
377  ret->insert(obj);
378 
379  obj = CArrow::Create(0, 0, 0, 0, 1.0, 0, 0.25f, 0.02f, 0.05f);
380  obj->setColor(0, 1, 0);
381 
382  ret->insert(obj);
383 
384  obj = CArrow::Create(0, 0, -1.0, 0, 0, 0, 0.25f, 0.02f, 0.05f);
385  obj->setColor(0, 0, 1);
386 
387  ret->insert(obj);
388 
389  return ret;
390 }
391 
392 /*---------------------------------------------------------------
393  BumblebeeCamera
394  ---------------------------------------------------------------*/
396 {
397  CSetOfObjects::Ptr camera =
398  mrpt::make_aligned_shared<opengl::CSetOfObjects>();
399 
401  -0.02, 0.14, -0.02, 0.02, 0, -0.04);
402  rect->setColor(1, 0.8, 0);
403 
404  camera->insert(rect);
405 
406  CCylinder::Ptr lCam = mrpt::make_aligned_shared<opengl::CCylinder>(
407  0.01f, 0.01f, 0.003f, 10, 10);
408  lCam->setColor(1, 0, 0);
409 
410  CCylinder::Ptr rCam = mrpt::make_aligned_shared<opengl::CCylinder>(
411  0.01f, 0.01f, 0.003f, 10, 10);
412  rCam->setPose(CPose3D(0.12, 0, 0));
413  rCam->setColor(0, 0, 0);
414 
415  camera->insert(lCam);
416  camera->insert(rCam);
417 
418  return camera;
419 }
420 
422 {
423  CSetOfObjects::Ptr ret = mrpt::make_aligned_shared<CSetOfObjects>();
424 
425  {
426  CSimpleLine::Ptr lin = mrpt::make_aligned_shared<CSimpleLine>();
427  lin->setLineWidth(lineWidth);
428  lin->setColor(1, 0, 0);
429  lin->setLineCoords(0, 0, 0, scale, 0, 0);
430  ret->insert(lin);
431  }
432  {
433  CSimpleLine::Ptr lin = mrpt::make_aligned_shared<CSimpleLine>();
434  lin->setLineWidth(lineWidth);
435  lin->setColor(0, 1, 0);
436  lin->setLineCoords(0, 0, 0, 0, scale, 0);
437  ret->insert(lin);
438  }
439  {
440  CSimpleLine::Ptr lin = mrpt::make_aligned_shared<CSimpleLine>();
441  lin->setLineWidth(lineWidth);
442  lin->setColor(0, 0, 1);
443  lin->setLineCoords(0, 0, 0, 0, 0, scale);
444  ret->insert(lin);
445  }
446  return ret;
447 }
448 
450 {
451  CSetOfObjects::Ptr ret = mrpt::make_aligned_shared<CSetOfObjects>();
452 
453  {
454  CSimpleLine::Ptr lin = mrpt::make_aligned_shared<CSimpleLine>();
455  lin->setLineWidth(lineWidth);
456  lin->setColor(1, 0, 0);
457  lin->setLineCoords(0, 0, 0, scale, 0, 0);
458  ret->insert(lin);
459  }
460  {
461  CSimpleLine::Ptr lin = mrpt::make_aligned_shared<CSimpleLine>();
462  lin->setLineWidth(lineWidth);
463  lin->setColor(0, 1, 0);
464  lin->setLineCoords(0, 0, 0, 0, scale, 0);
465  ret->insert(lin);
466  }
467  return ret;
468 }
469 
471 {
472  CSetOfObjects::Ptr ret = mrpt::make_aligned_shared<CSetOfObjects>();
473 
474  {
475  CBox::Ptr base = mrpt::make_aligned_shared<CBox>(
476  TPoint3D(-0.025, -0.025, -0.0575), TPoint3D(0.025, 0.025, -0.0185));
477  base->setColor(0.7, 0.7, 0.7);
478  ret->insert(base);
479  }
480  {
481  CCylinder::Ptr cyl1 =
482  mrpt::make_aligned_shared<CCylinder>(0.02f, 0.02f, 0.01f);
483  cyl1->setColor(0, 0, 0);
484  cyl1->setPose(CPoint3D(0, 0, -0.014));
485  ret->insert(cyl1);
486  }
487  {
488  CCylinder::Ptr cyl2 =
489  mrpt::make_aligned_shared<CCylinder>(0.02f, 0.0175f, 0.01f);
490  cyl2->setColor(0, 0, 0);
491  cyl2->setPose(CPoint3D(0, 0, -0.004));
492  ret->insert(cyl2);
493  }
494  {
495  CCylinder::Ptr cyl3 =
496  mrpt::make_aligned_shared<CCylinder>(0.0175f, 0.0175f, 0.01f);
497  cyl3->setColor(0, 0, 0);
498  cyl3->setPose(CPoint3D(0, 0, 0.004));
499  ret->insert(cyl3);
500  }
501 
502  return ret;
503 }
504 
506 {
507  CSetOfObjects::Ptr ret = mrpt::make_aligned_shared<CSetOfObjects>();
508 
509  {
510  CBox::Ptr base = mrpt::make_aligned_shared<CBox>(
511  TPoint3D(-0.03, -0.03, -0.055), TPoint3D(0.03, 0.03, -0.014));
512  base->setColor(0, 0, 0);
513  ret->insert(base);
514  }
515  {
516  CCylinder::Ptr cyl1 =
517  mrpt::make_aligned_shared<CCylinder>(0.028f, 0.024f, 0.028f);
518  cyl1->setColor(0, 0, 0);
519  cyl1->setPose(CPose3D(0, 0, -0.014));
520  ret->insert(cyl1);
521  }
522  {
523  CCylinder::Ptr cyl2 =
524  mrpt::make_aligned_shared<CCylinder>(0.028f, 0.028f, 0.01f);
525  cyl2->setColor(1, 69 / 255.0, 0);
526  cyl2->setPose(CPoint3D(0, 0, 0.014));
527  ret->insert(cyl2);
528  }
529  {
530  CCylinder::Ptr cyl3 =
531  mrpt::make_aligned_shared<CCylinder>(0.028f, 0.028f, 0.01f);
532  cyl3->setColor(0, 0, 0);
533  cyl3->setPose(CPoint3D(0, 0, 0.024));
534  ret->insert(cyl3);
535  }
536 
537  return ret;
538 }
539 
541 {
542  CSetOfObjects::Ptr ret = mrpt::make_aligned_shared<CSetOfObjects>();
543 
544  {
545  CBox::Ptr cabin = mrpt::make_aligned_shared<CBox>(
546  TPoint3D(0.878, 0.723, -0.12), TPoint3D(-0.258, -0.723, -1.690));
547  cabin->setColor(0.7, 0.7, 0.7);
548  ret->insert(cabin);
549  }
550  {
551  CBox::Ptr back = mrpt::make_aligned_shared<CBox>(
552  TPoint3D(-0.258, 0.723, -0.72), TPoint3D(-5.938, -0.723, -1.690));
553  back->setColor(1, 1, 1);
554  ret->insert(back);
555  }
556  {
557  CBox::Ptr boomAxis = mrpt::make_aligned_shared<CBox>(
558  TPoint3D(-5.938, 0.723, -1.0), TPoint3D(-6.189, -0.723, -1.690));
559  boomAxis->setColor(0, 0, 0);
560  ret->insert(boomAxis);
561  }
562  {
563  CBox::Ptr boom1 = mrpt::make_aligned_shared<CBox>(
564  TPoint3D(-5.938, 0.723, -1.0), TPoint3D(-6.189, 11.277, -1.620));
565  boom1->setColor(0, 1, 0);
566  ret->insert(boom1);
567  }
568  {
569  CBox::Ptr boom2 = mrpt::make_aligned_shared<CBox>(
570  TPoint3D(-5.938, -0.723, -1.0), TPoint3D(-6.189, -11.277, -1.620));
571  boom2->setColor(0, 1, 0);
572  ret->insert(boom2);
573  }
574  {
575  CCylinder::Ptr cyl1 =
576  mrpt::make_aligned_shared<CCylinder>(0.716f, 0.716f, 0.387f, 30);
577  cyl1->setColor(0, 0, 0);
578  cyl1->setPose(CPose3D(-0.710, 0.923, -2.480, 0, 0, DEG2RAD(90)));
579  ret->insert(cyl1);
580  }
581  {
582  CCylinder::Ptr cyl2 =
583  mrpt::make_aligned_shared<CCylinder>(0.716f, 0.716f, 0.387f, 30);
584  cyl2->setColor(0, 0, 0);
585  cyl2->setPose(CPose3D(-3.937, 0.923, -2.480, 0, 0, DEG2RAD(90)));
586  ret->insert(cyl2);
587  }
588  {
589  CCylinder::Ptr cyl1 =
590  mrpt::make_aligned_shared<CCylinder>(0.716f, 0.716f, 0.387f, 30);
591  cyl1->setColor(0, 0, 0);
592  cyl1->setPose(CPose3D(-0.710, -0.423, -2.480, 0, 0, DEG2RAD(90)));
593  ret->insert(cyl1);
594  }
595  {
596  CCylinder::Ptr cyl2 =
597  mrpt::make_aligned_shared<CCylinder>(0.716f, 0.716f, 0.387f, 30);
598  cyl2->setColor(0, 0, 0);
599  cyl2->setPose(CPose3D(-3.937, -0.423, -2.480, 0, 0, DEG2RAD(90)));
600  ret->insert(cyl2);
601  }
602  return ret;
603 }
CSetOfObjects::Ptr Hokuyo_UTM()
Returns a simple 3D model of a Hokuyo UTM scanner.
Classes for serialization, sockets, ini-file manipulation, streams, list of properties-values, timewatch, extensions to STL.
CSetOfObjects::Ptr CornerXYSimple(float scale=1.0, float lineWidth=1.0)
Returns two arrows representing a X,Y 2D corner (just thick lines, fast to render).
GLenum GLenum GLenum GLenum GLenum scale
Definition: glext.h:6502
CSetOfObjects::Ptr RobotGiraff()
Returns a representation of RobotGiraff.
CSetOfObjects::Ptr RobotRhodon()
Returns a representation of Rhodon.
std::shared_ptr< CPolyhedron > Ptr
Definition: CPolyhedron.h:46
CSetOfObjects::Ptr Househam_Sprayer()
Returns a simple 3D model of a househam sprayer.
STL namespace.
std::shared_ptr< CSetOfTriangles > Ptr
static CPolyhedron::Ptr CreateCubicPrism(double x1, double x2, double y1, double y2, double z1, double z2)
Creates a cubic prism, given the coordinates of two opposite vertices.
GLsizei GLsizei GLuint * obj
Definition: glext.h:4070
This base provides a set of functions for maths stuff.
Definition: CArrayNumeric.h:19
std::shared_ptr< CCylinder > Ptr
Definition: CCylinder.h:34
std::shared_ptr< CSetOfObjects > Ptr
Definition: CSetOfObjects.h:32
double DEG2RAD(const double x)
Degrees to radians.
Definition: bits.h:96
A class used to store a 3D point.
Definition: CPoint3D.h:32
Classes for 2D/3D geometry representation, both of single values and probability density distribution...
Definition: CPoint.h:17
CSetOfObjects::Ptr RobotPioneer()
Returns a representation of a Pioneer II mobile base.
A class used to store a 3D pose (a 3D translation + a rotation in 3D).
Definition: CPose3D.h:88
CSetOfObjects::Ptr CornerXYZ(float scale=1.0)
Returns three arrows representing a X,Y,Z 3D corner.
CSetOfObjects::Ptr 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...
The namespace for 3D scene representation and rendering.
Definition: CGlCanvasBase.h:15
CSetOfObjects::Ptr CornerXYZEye()
Returns three arrows representing a X,Y,Z 3D corner.
Lightweight 3D point.
GLenum GLsizei GLsizei height
Definition: glext.h:3554
Lightweight 2D point.
std::shared_ptr< CSimpleLine > Ptr
Definition: CSimpleLine.h:24
CSetOfObjects::Ptr BumblebeeCamera()
Returns a simple 3D model of a PointGrey Bumblebee stereo camera.
static CPolyhedron::Ptr 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...
std::shared_ptr< CBox > Ptr
Definition: CBox.h:44
CSetOfObjects::Ptr Hokuyo_URG()
Returns a simple 3D model of a Hokuyo URG scanner.
std::shared_ptr< CArrow > Ptr
Definition: CArrow.h:33



Page generated by Doxygen 1.8.14 for MRPT 1.9.9 Git: ae4571287 Thu Nov 23 00:06:53 2017 +0100 at dom oct 27 23:51:55 CET 2019