Bullet Collision Detection & Physics Library
btMiniSDF.h
Go to the documentation of this file.
1#ifndef MINISDF_H
2#define MINISDF_H
3
7
9{
10 unsigned int ijk[3];
11};
12
14{
17
18 const btVector3& min() const
19 {
20 return m_min;
21 }
22
23 const btVector3& max() const
24 {
25 return m_max;
26 }
27
28 bool contains(const btVector3& x) const
29 {
31 }
32
34 : m_min(mn),
35 m_max(mx)
36 {
37 }
38
40 {
41 }
42};
43
45{
46 double m_vec[32];
47
48 inline double& operator[](int i)
49 {
50 return m_vec[i];
51 }
52
53 inline const double& operator[](int i) const
54 {
55 return m_vec[i];
56 }
57};
58
60{
62
63 void topRowsDivide(int row, double denom)
64 {
65 for (int i = 0; i < row; i++)
66 {
67 m_vec[i] /= denom;
68 }
69 }
70
71 void bottomRowsMul(int row, double val)
72 {
73 for (int i = 32 - row; i < 32; i++)
74 {
75 m_vec[i] *= val;
76 }
77 }
78
79 inline btScalar& operator()(int i, int j)
80 {
81 return m_vec[i][j];
82 }
83};
84
86{
87 unsigned int m_cells[32];
88};
89
91{
93 unsigned int m_resolution[3];
96 std::size_t m_n_cells;
97 std::size_t m_n_fields;
99
103
106 {
107 }
108 bool load(const char* data, int size);
109 bool isValid() const
110 {
111 return m_isValid;
112 }
113 unsigned int multiToSingleIndex(btMultiIndex const& ijk) const;
114
115 btAlignedBox3d subdomain(btMultiIndex const& ijk) const;
116
117 btMultiIndex singleToMultiIndex(unsigned int l) const;
118
119 btAlignedBox3d subdomain(unsigned int l) const;
120
123
124 bool interpolate(unsigned int field_id, double& dist, btVector3 const& x, btVector3* gradient) const;
125};
126
127#endif //MINISDF_H
bool TestPointAgainstAabb2(const btVector3 &aabbMin1, const btVector3 &aabbMax1, const btVector3 &point)
conservative test for overlap between two aabbs
Definition btAabbUtil2.h:32
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
Definition btDbvt.cpp:52
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
The btAlignedObjectArray template class uses a subset of the stl::vector interface for its methods It...
btVector3 can be used to represent 3D points and vectors.
Definition btVector3.h:82
btVector3 m_max
Definition btMiniSDF.h:16
btAlignedBox3d(const btVector3 &mn, const btVector3 &mx)
Definition btMiniSDF.h:33
const btVector3 & min() const
Definition btMiniSDF.h:18
bool contains(const btVector3 &x) const
Definition btMiniSDF.h:28
btVector3 m_min
Definition btMiniSDF.h:15
const btVector3 & max() const
Definition btMiniSDF.h:23
unsigned int m_cells[32]
Definition btMiniSDF.h:87
btVector3 m_inv_cell_size
Definition btMiniSDF.h:95
std::size_t m_n_cells
Definition btMiniSDF.h:96
btShapeMatrix shape_function_(btVector3 const &xi, btShapeGradients *gradient=0) const
btAlignedBox3d m_domain
Definition btMiniSDF.h:92
bool load(const char *data, int size)
Definition btMiniSDF.cpp:45
unsigned int multiToSingleIndex(btMultiIndex const &ijk) const
bool interpolate(unsigned int field_id, double &dist, btVector3 const &x, btVector3 *gradient) const
btVector3 m_cell_size
Definition btMiniSDF.h:94
btMultiIndex singleToMultiIndex(unsigned int l) const
btAlignedBox3d subdomain(btMultiIndex const &ijk) const
bool isValid() const
Definition btMiniSDF.h:109
unsigned int m_resolution[3]
Definition btMiniSDF.h:93
bool m_isValid
Definition btMiniSDF.h:98
btAlignedObjectArray< btAlignedObjectArray< btCell32 > > m_cells
Definition btMiniSDF.h:101
btAlignedObjectArray< btAlignedObjectArray< double > > m_nodes
Definition btMiniSDF.h:100
btAlignedObjectArray< btAlignedObjectArray< unsigned int > > m_cell_map
Definition btMiniSDF.h:102
std::size_t m_n_fields
Definition btMiniSDF.h:97
unsigned int ijk[3]
Definition btMiniSDF.h:10
void topRowsDivide(int row, double denom)
Definition btMiniSDF.h:63
btVector3 m_vec[32]
Definition btMiniSDF.h:61
btScalar & operator()(int i, int j)
Definition btMiniSDF.h:79
void bottomRowsMul(int row, double val)
Definition btMiniSDF.h:71
double & operator[](int i)
Definition btMiniSDF.h:48
double m_vec[32]
Definition btMiniSDF.h:46
const double & operator[](int i) const
Definition btMiniSDF.h:53