Bullet Collision Detection & Physics Library
btSdfCollisionShape.cpp
Go to the documentation of this file.
2#include "btMiniSDF.h"
4
7{
9
13
15 : m_localScaling(1, 1, 1),
16 m_margin(0)
17 {
18 }
19};
20
22{
24 return valid;
25}
27{
30
31 //"E:/develop/bullet3/data/toys/ground_hole64_64_8.cdf");//ground_cube.cdf");
32 /*unsigned int field_id=0;
33 Eigen::Vector3d x (1,10,1);
34 Eigen::Vector3d gradient;
35 double dist = m_data->m_sdf.interpolate(field_id, x, &gradient);
36 printf("dist=%g\n", dist);
37 */
38}
40{
41 delete m_data;
42}
43
45{
49 btScalar margin(0);
51}
52
54{
55 m_data->m_localScaling = scaling;
56}
58{
59 return m_data->m_localScaling;
60}
62{
63 inertia.setValue(0, 0, 0);
64}
66{
67 return "btSdfCollisionShape";
68}
70{
71 m_data->m_margin = margin;
72}
74{
75 return m_data->m_margin;
76}
77
79{
80 //not yet
81}
82
84{
85 int field = 0;
87 double dist;
89 if (hasResult)
90 {
91 normal.setValue(grad[0], grad[1], grad[2]);
92 distOut = dist;
93 }
94 return hasResult;
95}
void btTransformAabb(const btVector3 &halfExtents, btScalar margin, const btTransform &t, btVector3 &aabbMinOut, btVector3 &aabbMaxOut)
@ SDF_SHAPE_PROXYTYPE
const T & btMax(const T &a, const T &b)
Definition btMinMax.h:27
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
Definition btScalar.h:314
#define ATTRIBUTE_ALIGNED16(a)
Definition btScalar.h:99
#define btAssert(x)
Definition btScalar.h:153
bool initializeSDF(const char *sdfData, int sizeInBytes)
bool queryPoint(const btVector3 &ptInSDF, btScalar &distOut, btVector3 &normal)
virtual const char * getName() const
struct btSdfCollisionShapeInternalData * m_data
virtual void processAllTriangles(btTriangleCallback *callback, const btVector3 &aabbMin, const btVector3 &aabbMax) const
virtual btScalar getMargin() const
virtual void getAabb(const btTransform &t, btVector3 &aabbMin, btVector3 &aabbMax) const
getAabb returns the axis aligned bounding box in the coordinate frame of the given transform t.
virtual void setMargin(btScalar margin)
virtual void setLocalScaling(const btVector3 &scaling)
virtual void calculateLocalInertia(btScalar mass, btVector3 &inertia) const
virtual const btVector3 & getLocalScaling() const
The btTransform class supports rigid transforms with only translation and rotation and no scaling/she...
Definition btTransform.h:30
The btTriangleCallback provides a callback for each overlapping triangle when calling processAllTrian...
btVector3 can be used to represent 3D points and vectors.
Definition btVector3.h:82
void setValue(const btScalar &_x, const btScalar &_y, const btScalar &_z)
Definition btVector3.h:640
btVector3 m_max
Definition btMiniSDF.h:16
btVector3 m_min
Definition btMiniSDF.h:15
btAlignedBox3d m_domain
Definition btMiniSDF.h:92
bool load(const char *data, int size)
Definition btMiniSDF.cpp:45
bool interpolate(unsigned int field_id, double &dist, btVector3 const &x, btVector3 *gradient) const
bool isValid() const
Definition btMiniSDF.h:109