|
From: <is...@us...> - 2009-07-06 20:23:38
|
Revision: 18336
http://personalrobots.svn.sourceforge.net/personalrobots/?rev=18336&view=rev
Author: isucan
Date: 2009-07-06 20:23:36 +0000 (Mon, 06 Jul 2009)
Log Message:
-----------
shapt type for bodies
Modified Paths:
--------------
pkg/trunk/util/geometric_shapes/include/geometric_shapes/bodies.h
pkg/trunk/util/geometric_shapes/include/geometric_shapes/shapes.h
pkg/trunk/util/geometric_shapes/src/bodies.cpp
pkg/trunk/world_models/collision_space/src/environmentODE.cpp
Modified: pkg/trunk/util/geometric_shapes/include/geometric_shapes/bodies.h
===================================================================
--- pkg/trunk/util/geometric_shapes/include/geometric_shapes/bodies.h 2009-07-06 20:23:32 UTC (rev 18335)
+++ pkg/trunk/util/geometric_shapes/include/geometric_shapes/bodies.h 2009-07-06 20:23:36 UTC (rev 18336)
@@ -70,12 +70,19 @@
m_scale = 1.0;
m_padding = 0.0;
m_pose.setIdentity();
+ m_type = shapes::UNKNOWN;
}
virtual ~Body(void)
{
}
+ /** \brief Get the type of shape this body represents */
+ shapes::ShapeType getType(void) const
+ {
+ return m_type;
+ }
+
/** \brief If the dimension of the body should be scaled, this
method sets the scale. Default is 1.0 */
void setScale(double scale)
@@ -146,9 +153,10 @@
virtual void updateInternalData(void) = 0;
virtual void useDimensions(const shapes::Shape *shape) = 0;
- btTransform m_pose;
- double m_scale;
- double m_padding;
+ shapes::ShapeType m_type;
+ btTransform m_pose;
+ double m_scale;
+ double m_padding;
};
/** \brief Definition of a sphere */
@@ -158,10 +166,12 @@
Sphere(void) : Body()
{
m_radius = 0.0;
+ m_type = shapes::SPHERE;
}
Sphere(const shapes::Shape *shape) : Body()
{
+ m_type = shapes::SPHERE;
setDimensions(shape);
}
@@ -191,10 +201,12 @@
Cylinder(void) : Body()
{
m_length = m_radius = 0.0;
+ m_type = shapes::CYLINDER;
}
Cylinder(const shapes::Shape *shape) : Body()
{
+ m_type = shapes::CYLINDER;
setDimensions(shape);
}
@@ -231,10 +243,12 @@
Box(void) : Body()
{
m_length = m_width = m_height = 0.0;
+ m_type = shapes::BOX;
}
Box(const shapes::Shape *shape) : Body()
{
+ m_type = shapes::BOX;
setDimensions(shape);
}
@@ -271,12 +285,14 @@
public:
ConvexMesh(void) : Body()
- {
+ {
+ m_type = shapes::MESH;
m_meshCenter.setValue(btScalar(0), btScalar(0), btScalar(0));
}
ConvexMesh(const shapes::Shape *shape) : Body()
- {
+ {
+ m_type = shapes::MESH;
m_meshCenter.setValue(btScalar(0), btScalar(0), btScalar(0));
setDimensions(shape);
}
Modified: pkg/trunk/util/geometric_shapes/include/geometric_shapes/shapes.h
===================================================================
--- pkg/trunk/util/geometric_shapes/include/geometric_shapes/shapes.h 2009-07-06 20:23:32 UTC (rev 18335)
+++ pkg/trunk/util/geometric_shapes/include/geometric_shapes/shapes.h 2009-07-06 20:23:36 UTC (rev 18336)
@@ -48,6 +48,10 @@
namespace shapes
{
+ /** \brief A list of known shape types */
+ enum ShapeType { UNKNOWN, SPHERE, CYLINDER, BOX, MESH };
+
+
/** \brief A basic definition of a shape. Shapes are considered centered at origin */
class Shape
{
@@ -61,9 +65,7 @@
{
}
- enum { UNKNOWN, SPHERE, CYLINDER, BOX, MESH }
- type;
-
+ ShapeType type;
};
/** \brief Definition of a sphere */
Modified: pkg/trunk/util/geometric_shapes/src/bodies.cpp
===================================================================
--- pkg/trunk/util/geometric_shapes/src/bodies.cpp 2009-07-06 20:23:32 UTC (rev 18335)
+++ pkg/trunk/util/geometric_shapes/src/bodies.cpp 2009-07-06 20:23:36 UTC (rev 18336)
@@ -46,16 +46,16 @@
if (shape)
switch (shape->type)
{
- case shapes::Shape::BOX:
+ case shapes::BOX:
body = new bodies::Box(shape);
break;
- case shapes::Shape::SPHERE:
+ case shapes::SPHERE:
body = new bodies::Sphere(shape);
break;
- case shapes::Shape::CYLINDER:
+ case shapes::CYLINDER:
body = new bodies::Cylinder(shape);
break;
- case shapes::Shape::MESH:
+ case shapes::MESH:
body = new bodies::ConvexMesh(shape);
break;
default:
@@ -261,7 +261,7 @@
HullLibrary hl;
if (hl.CreateConvexHull(hd, hr) == QE_OK)
{
- std::cout << "Convex hull has " << hr.m_OutputVertices.size() << "(" << hr.mNumOutputVertices << ") vertices (down from " << mesh->vertexCount << "), " << hr.mNumFaces << " faces" << std::endl;
+ std::cout << "Convex hull has " << hr.m_OutputVertices.size() << " vertices (down from " << mesh->vertexCount << "), " << hr.mNumFaces << " faces" << std::endl;
m_vertices.reserve(hr.m_OutputVertices.size());
btVector3 sum(btScalar(0), btScalar(0), btScalar(0));
Modified: pkg/trunk/world_models/collision_space/src/environmentODE.cpp
===================================================================
--- pkg/trunk/world_models/collision_space/src/environmentODE.cpp 2009-07-06 20:23:32 UTC (rev 18335)
+++ pkg/trunk/world_models/collision_space/src/environmentODE.cpp 2009-07-06 20:23:36 UTC (rev 18336)
@@ -96,24 +96,24 @@
dGeomID g = NULL;
switch (shape->type)
{
- case shapes::Shape::SPHERE:
+ case shapes::SPHERE:
{
g = dCreateSphere(space, static_cast<shapes::Sphere*>(shape)->radius * scale + padding);
}
break;
- case shapes::Shape::BOX:
+ case shapes::BOX:
{
const double *size = static_cast<shapes::Box*>(shape)->size;
g = dCreateBox(space, size[0] * scale + padding, size[1] * scale + padding, size[2] * scale + padding);
}
break;
- case shapes::Shape::CYLINDER:
+ case shapes::CYLINDER:
{
g = dCreateCylinder(space, static_cast<shapes::Cylinder*>(shape)->radius * scale + padding,
static_cast<shapes::Cylinder*>(shape)->length * scale + padding);
}
break;
- case shapes::Shape::MESH:
+ case shapes::MESH:
{
dTriMeshDataID data = dGeomTriMeshDataCreate();
shapes::Mesh *mesh = static_cast<shapes::Mesh*>(shape);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|