#include <DistanceGridCollisionModel.h>
Classes | |
| struct | Point |
Public Attributes | |
| std::shared_ptr< DistanceGrid > | grid |
| int | elem |
| Index of the corresponding element in the topology. More... | |
| std::set< int > | neighbors |
| Index of the neighbors (used for self-collisions) More... | |
| type::vector< Point > | points |
| barycentric coordinates of included points More... | |
| type::vector< GCoord > | normals |
| normals in barycentric coordinates of included points More... | |
| GCoord | initP0 |
| GCoord | initDP |
| GCoord | invDP |
| Initial corners position. More... | |
| GCoord | corners [8] |
| Current corners position. More... | |
| Plane | faces [6] |
| planes corresponding to the six faces (FX0,FX1,FY0,FY1,FZ0,FZ1) More... | |
| GCoord | center |
| current center; More... | |
| GSReal | radius |
| radius of enclosing sphere More... | |
| type::vector< GCoord > | deformedPoints |
| deformed points More... | |
| type::vector< GCoord > | deformedNormals |
| deformed normals More... | |
| bool | pointsUpdated |
| true the deformedPoints vector has been updated with the latest positions More... | |
| bool | facesUpdated |
| true the faces plane vector has been updated with the latest positions More... | |
Precomputed deformation factors | |
We have : deform(b) = C000(1-b[0])(1-b[1])(1-b[2]) + C100(b[0])(1-b[1])(1-b[2]) + C010(1-b[0])(b[1])(1-b[2]) + C110(b[0])(b[1])(1-b[2])
| |
| GCoord | Dx |
| Dx = -C000+C100. More... | |
| GCoord | Dy |
| Dy = -C000+C010. More... | |
| GCoord | Dz |
| Dx = -C000+C001. More... | |
| GCoord | Dxy |
| Dxy = C000-C100-C010+C110 = C110-C010-Dx. More... | |
| GCoord | Dxz |
| Dxz = C000-C100-C001+C101 = C101-C001-Dx. More... | |
| GCoord | Dyz |
| Dyz = C000-C010-C001+C011 = C011-C001-Dy. More... | |
| GCoord | Dxyz |
| Dxyz = - C000 + C100 + C010 - C110 + C001 - C101 - C011 + C111 = C001 - C101 - C011 + C111 - Dxy. More... | |
Public Member Functions | |
| DeformedCube () | |
| void | updateDeform () |
| Update the deformation precomputed values. More... | |
| void | updatePoints () |
| Update the deformedPoints position if not done yet (i.e. if pointsUpdated==false) More... | |
| void | updateFaces () |
| Update the face planes position if not done yet (i.e. if facesUpdated==false) More... | |
| DistanceGrid::Coord | baryCoords (const GCoord &c) const |
| Compute the barycentric coordinates of a point from its initial position. More... | |
| GCoord | initpos (const GCoord &b) const |
| Compute the initial position of a point from its barycentric coordinates. More... | |
| GCoord | deform (const GCoord &b) const |
| Compute the deformed position of a point from its barycentric coordinates. More... | |
| GCoord | deformDir (const GCoord &b, const GCoord &dir) const |
| deform a direction relative to a point in barycentric coordinates More... | |
| type::Mat< 3, 3, double > | Jdeform (const GCoord &b) const |
| Get the local jacobian matrix of the deformation. More... | |
| GCoord | undeform0 (const GCoord &p) const |
| Compute an initial estimate to the barycentric coordinate of a point given its deformed position. More... | |
| GCoord | undeformDir (const GCoord &b, const GCoord &dir) const |
| Undeform a direction relative to a point in barycentric coordinates. More... | |
| Plane | computePlane (int c00, int c10, int c01, int c11) |
| Compute a plane equation given 4 corners. More... | |
Static Public Member Functions | |
| static GSReal | interp (GSReal coef, GSReal a, GSReal b) |
| GCoord sofa::component::collision::FFDDistanceGridCollisionModel::DeformedCube::center |
current center;
| GCoord sofa::component::collision::FFDDistanceGridCollisionModel::DeformedCube::corners[8] |
Current corners position.
| type::vector<GCoord> sofa::component::collision::FFDDistanceGridCollisionModel::DeformedCube::deformedNormals |
deformed normals
| type::vector<GCoord> sofa::component::collision::FFDDistanceGridCollisionModel::DeformedCube::deformedPoints |
deformed points
| GCoord sofa::component::collision::FFDDistanceGridCollisionModel::DeformedCube::Dx |
Dx = -C000+C100.
| GCoord sofa::component::collision::FFDDistanceGridCollisionModel::DeformedCube::Dxy |
Dxy = C000-C100-C010+C110 = C110-C010-Dx.
| GCoord sofa::component::collision::FFDDistanceGridCollisionModel::DeformedCube::Dxyz |
Dxyz = - C000 + C100 + C010 - C110 + C001 - C101 - C011 + C111 = C001 - C101 - C011 + C111 - Dxy.
| GCoord sofa::component::collision::FFDDistanceGridCollisionModel::DeformedCube::Dxz |
Dxz = C000-C100-C001+C101 = C101-C001-Dx.
| GCoord sofa::component::collision::FFDDistanceGridCollisionModel::DeformedCube::Dy |
Dy = -C000+C010.
| GCoord sofa::component::collision::FFDDistanceGridCollisionModel::DeformedCube::Dyz |
Dyz = C000-C010-C001+C011 = C011-C001-Dy.
| GCoord sofa::component::collision::FFDDistanceGridCollisionModel::DeformedCube::Dz |
Dx = -C000+C001.
| int sofa::component::collision::FFDDistanceGridCollisionModel::DeformedCube::elem |
Index of the corresponding element in the topology.
| Plane sofa::component::collision::FFDDistanceGridCollisionModel::DeformedCube::faces[6] |
planes corresponding to the six faces (FX0,FX1,FY0,FY1,FZ0,FZ1)
| bool sofa::component::collision::FFDDistanceGridCollisionModel::DeformedCube::facesUpdated |
true the faces plane vector has been updated with the latest positions
| std::shared_ptr<DistanceGrid> sofa::component::collision::FFDDistanceGridCollisionModel::DeformedCube::grid |
| GCoord sofa::component::collision::FFDDistanceGridCollisionModel::DeformedCube::initDP |
| GCoord sofa::component::collision::FFDDistanceGridCollisionModel::DeformedCube::initP0 |
| GCoord sofa::component::collision::FFDDistanceGridCollisionModel::DeformedCube::invDP |
Initial corners position.
| std::set<int> sofa::component::collision::FFDDistanceGridCollisionModel::DeformedCube::neighbors |
Index of the neighbors (used for self-collisions)
| type::vector<GCoord> sofa::component::collision::FFDDistanceGridCollisionModel::DeformedCube::normals |
normals in barycentric coordinates of included points
| type::vector<Point> sofa::component::collision::FFDDistanceGridCollisionModel::DeformedCube::points |
barycentric coordinates of included points
| bool sofa::component::collision::FFDDistanceGridCollisionModel::DeformedCube::pointsUpdated |
true the deformedPoints vector has been updated with the latest positions
| GSReal sofa::component::collision::FFDDistanceGridCollisionModel::DeformedCube::radius |
radius of enclosing sphere
|
inline |
|
inline |
Compute the barycentric coordinates of a point from its initial position.
| FFDDistanceGridCollisionModel::DeformedCube::Plane sofa::component::collision::FFDDistanceGridCollisionModel::DeformedCube::computePlane | ( | int | c00, |
| int | c10, | ||
| int | c01, | ||
| int | c11 | ||
| ) |
Compute a plane equation given 4 corners.
|
inline |
Compute the deformed position of a point from its barycentric coordinates.
|
inline |
deform a direction relative to a point in barycentric coordinates
|
inline |
Compute the initial position of a point from its barycentric coordinates.
|
inlinestatic |
|
inline |
Get the local jacobian matrix of the deformation.
|
inline |
Compute an initial estimate to the barycentric coordinate of a point given its deformed position.
|
inline |
Undeform a direction relative to a point in barycentric coordinates.
| void sofa::component::collision::FFDDistanceGridCollisionModel::DeformedCube::updateDeform | ( | ) |
Update the deformation precomputed values.
Update the deformation precomputed values
| void sofa::component::collision::FFDDistanceGridCollisionModel::DeformedCube::updateFaces | ( | ) |
Update the face planes position if not done yet (i.e. if facesUpdated==false)
Update the face planes if not done yet (i.e. if facesUpdated==false)
| void sofa::component::collision::FFDDistanceGridCollisionModel::DeformedCube::updatePoints | ( | ) |
Update the deformedPoints position if not done yet (i.e. if pointsUpdated==false)