Robotsystem of the Robot Group Leipzig: Primitive Class Reference

- Main Page
- Namespaces
- Classes
- Files
- Directories
- Related Pages
- Examples

- Search for |

- Alphabetical List
- Class List
- Class Hierarchy
- Class Members

# Primitive Class Reference

Interface class for primitives represented in the physical and graphical world. More...

`#include <primitive.h>`

Inherited by Box, Capsule, Cylinder, DummyPrimitive, HeightField, Mesh, Plane, Ray, Sphere, and Transform.

Inheritance diagram for Primitive:

[legend]
Collaboration diagram for Primitive:

[legend]
List of all members.

## Public Types
| Body = 1
| Geom = 2
| Draw = 4
| Child = 8
| Dyn = 1
| Stat = 2
enum | Modes { Body = 1, Geom = 2, Draw = 4, Child = 8 }
| Body means that it is a dynamic object with a body. More...
enum | Category { Dyn = 1, Stat = 2 }
## Public Member Functions
| Primitive ()
virtual | ~Primitive ()
virtual void | init (const OdeHandle &odeHandle, double mass, const OsgHandle &osgHandle, char mode=Body|Geom|Draw)=0
| registers primitive in ODE and OSG.
virtual void | update ()=0
| Updates the OSG nodes with ODE coordinates.
virtual OSGPrimitive * | getOSGPrimitive ()=0
| returns the assoziated osg primitive if there or 0
virtual void | setColor (const Color &color)
| sets the color for the underlaying osgprimitive
virtual void | setTexture (const std::string &filename)
| assigns a texture to the primitive
virtual void | setTexture (const std::string &filename, bool repeatOnX, bool repeatOnY)
| assigns a texture to the primitive, you can choose if the texture should be repeated
void | setPosition (const osg::Vec3 &pos)
| set the position of the primitive (orientation is preserved)
void | setPose (const osg::Matrix &pose)
| set the pose of the primitive
osg::Vec3 | getPosition () const
| returns the position
osg::Matrix | getPose () const
| returns the pose
virtual void | setMass (double mass)=0
| sets the mass of the body (uniform)
void | setMass (double mass, double cgx, double cgy, double cgz, double I11, double I22, double I33, double I12, double I13, double I23)
| sets full mass specification.
dGeomID | getGeom () const
| returns ODE geomID if there
dBodyID | getBody () const
| returns ODE bodyID if there
bool | limitLinearVel (double maxVel)
| checks whether the object has higher velocity than maxVel and limits it in case
osg::Vec3 | toLocal (const osg::Vec3 &pos) const
| return the given point transformed to local coordinates of the primitive
osg::Vec4 | toLocal (const osg::Vec4 &axis) const
| return the given vector or axis transformed to local coordinates of the primitive (translation depends on 4th coordinate)
## Public Attributes
Substance | substance
## Protected Member Functions
virtual void | attachGeomAndSetColliderFlags ()
| attaches geom to body (if any) and sets the category bits and collision bitfields.
## Protected Attributes
dGeomID | geom
dBodyID | body
char | mode

## Detailed Description

Interface class for primitives represented in the physical and graphical world.

This is intended to bring OSG and ODE together and hide most implementation details.

## Member Enumeration Documentation

enum Category

Enumerator:

  Dyn |
  Stat |

enum Modes

Body means that it is a dynamic object with a body.

Geom means it has a geometrical represenation used for collision detection. Draw means the primitive is drawn Child is only used internally and is used for transformed geoms.

Enumerator:

  Body |
  Geom |
  Draw |
  Child |

## Constructor & Destructor Documentation

Primitive | ( |  | ) |

~Primitive | ( |  | ) | `[virtual]`

## Member Function Documentation

void attachGeomAndSetColliderFlags | ( |  | ) | `[protected, virtual]`

attaches geom to body (if any) and sets the category bits and collision bitfields.

assumes: mode & Geom != 0

dBodyID getBody | ( |  | ) | const

returns ODE bodyID if there

dGeomID getGeom | ( |  | ) | const

returns ODE geomID if there

virtual OSGPrimitive* getOSGPrimitive | ( |  | ) | `[pure virtual]`

returns the assoziated osg primitive if there or 0

Implemented in HeightField, Plane, Box, Sphere, Capsule, Cylinder, Ray, Mesh, Transform, and DummyPrimitive.

osg::Matrix getPose | ( |  | ) | const

returns the pose

osg::Vec3 getPosition | ( |  | ) | const

returns the position

virtual void init | ( | const OdeHandle & | odeHandle,
|  | double | mass,
|  | const OsgHandle & | osgHandle,
|  | char | mode = `Body|Geom|Draw` |
| ) |  |  | `[pure virtual]`

registers primitive in ODE and OSG.

Parameters:

  | osgHandle | scruct with ODE variables inside (to specify space, world...)
  | mass | Mass of the object in ODE (if withBody = true)
  | osgHandle | scruct with OSG variables inside (scene node, color ...)
  | mode | is a conjuction of Modes.

Implemented in HeightField, Plane, Box, Sphere, Capsule, Cylinder, Ray, Mesh, Transform, and DummyPrimitive.

bool limitLinearVel | ( | double | maxVel | ) |

checks whether the object has higher velocity than maxVel and limits it in case

void setColor | ( | const Color & | color | ) | `[virtual]`

sets the color for the underlaying osgprimitive

void setMass | ( | double | mass,
|  | double | cgx,
|  | double | cgy,
|  | double | cgz,
|  | double | I11,
|  | double | I22,
|  | double | I33,
|  | double | I12,
|  | double | I13,
|  | double | I23 |
| ) |  |  |

sets full mass specification.

Parameters:

  | cg | center of gravity vector
  | I | 3x3 interia tensor

virtual void setMass | ( | double | mass | ) | `[pure virtual]`

sets the mass of the body (uniform)

Implemented in HeightField, Plane, Box, Sphere, Capsule, Cylinder, Ray, Mesh, Transform, and DummyPrimitive.

void setPose | ( | const osg::Matrix & | pose | ) |

set the pose of the primitive

Reimplemented in HeightField.

void setPosition | ( | const osg::Vec3 & | pos | ) |

set the position of the primitive (orientation is preserved)

void setTexture | ( | const std::string & | filename,
|  | bool | repeatOnX,
|  | bool | repeatOnY |
| ) |  |  | `[virtual]`

assigns a texture to the primitive, you can choose if the texture should be repeated

void setTexture | ( | const std::string & | filename | ) | `[virtual]`

assigns a texture to the primitive

osg::Vec4 toLocal | ( | const osg::Vec4 & | axis | ) | const

return the given vector or axis transformed to local coordinates of the primitive (translation depends on 4th coordinate)

osg::Vec3 toLocal | ( | const osg::Vec3 & | pos | ) | const

return the given point transformed to local coordinates of the primitive

virtual void update | ( |  | ) | `[pure virtual]`

Updates the OSG nodes with ODE coordinates.

This function must be overloaded (usually calls setMatrix of OsgPrimitives)

Implemented in HeightField, Plane, Box, Sphere, Capsule, Cylinder, Ray, Mesh, Transform, and DummyPrimitive.

## Member Data Documentation

dBodyID body`[protected]`

dGeomID geom`[protected]`

char mode`[protected]`

Substance substance

The documentation for this class was generated from the following files:

- primitive.h
- primitive.cpp