Simbody
Classes | Namespaces | Variables

DecorativeGeometry.h File Reference

This is the client-side interface to an implementation-independent representation of "Decorations" suitable for visualization, annotation, logging, or debugging but which cannot have any effect on the behavior of a System or the evolution of a Study. More...

#include "SimTKcommon/Simmatrix.h"
#include "SimTKcommon/internal/PolygonalMesh.h"
#include <cassert>

Go to the source code of this file.

Classes

class  SimTK::DecorativeGeometry
 This is an abstract handle class using the PIMPL design pattern to hide the private implementation. More...
class  SimTK::DecorativeLine
 A line between two points. More...
class  SimTK::DecorativeCircle
 This defines a circle in the x-y plane, centered at the origin. More...
class  SimTK::DecorativeSphere
 This defines a sphere centered at the origin. More...
class  SimTK::DecorativeEllipsoid
 This defines an ellipsoidal solid centered at the origin and aligned with the local frame axes. More...
class  SimTK::DecorativeBrick
 This defines a rectangular solid centered at the origin and aligned with the local frame axes. More...
class  SimTK::DecorativeCylinder
 This defines a cylinder centered on the origin and aligned in the y direction. More...
class  SimTK::DecorativeFrame
 This defines geometry to represent a coordinate frame. More...
class  SimTK::DecorativeText
 This defines a text label with its base at the origin. More...
class  SimTK::DecorativeMesh
 This defines a polygonal mesh. More...
class  SimTK::DecorativeGeometryImplementation
 Use this abstract class to connect your implementation of decorative geometry to the implementation-independent classes above. More...

Namespaces

namespace  SimTK
 

This is the top-level SimTK namespace into which all SimTK names are placed to avoid collision with other symbols.


Variables

static const Vec3 SimTK::Black = Vec3( 0, 0, 0)
static const Vec3 SimTK::Gray = Vec3(.5,.5,.5)
static const Vec3 SimTK::Red = Vec3( 1, 0, 0)
static const Vec3 SimTK::Green = Vec3( 0, 1, 0)
static const Vec3 SimTK::Blue = Vec3( 0, 0, 1)
static const Vec3 SimTK::Yellow = Vec3( 1, 1, 0)
static const Vec3 SimTK::Orange = Vec3( 1,.5, 0)
static const Vec3 SimTK::Magenta = Vec3( 1, 0, 1)
static const Vec3 SimTK::Purple = Vec3(.5, 0,.5)
static const Vec3 SimTK::Cyan = Vec3( 0, 1, 1)
static const Vec3 SimTK::White = Vec3( 1, 1, 1)

Detailed Description

This is the client-side interface to an implementation-independent representation of "Decorations" suitable for visualization, annotation, logging, or debugging but which cannot have any effect on the behavior of a System or the evolution of a Study.

DO NOT confuse this with AnalyticGeometry which can represent physically meaningful objects that may interact and change the behavior of a System. However, an AnalyticGeometry object is likely to generate a corresponding Decoration for visualization.

Why is there a DecorativeGeometry facility at the System level at all, so far away from any application program? That's because for crude visualization and debugging purposes, the Subsystems themselves are best able to produce some illustrative geometry. Otherwise, you need a special purpose visualization tool which understands what's going on inside each subsystem. If you don't mind taking what you get, just ask each subsystem to generate what it thinks would be helpful visualization. To do that, the subysystems need a way to talk about geometry without knowing anything about how that geometry will eventually get onto someone's screen. And that's why we're here!

Each DecorativeGeometry object has its own local coordinate system and is defined self-consistently but independent of anything else. Clients can associate these with a reference frame (e.g. a body), and place the local frame of the geometry objects on the reference frame, or at a fixed transform from the reference frame. That places the DecorativeGeometry objects in a scene. We support both 3D objects which are attached to actors in the scene, and 2D "screen" objects like titles which are attached to the display rather than the actors. The classes here deal only with the local-frame definitions of the geometric objects, not their placement in the scene.

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines