PhysicsBasedAnimationToolkit 0.0.10
Cross-platform C++20 library of algorithms and data structures commonly used in computer graphics research on physically-based simulation.
Loading...
Searching...
No Matches
Integrator.h
1#ifndef PBAT_SIM_XPBD_INTEGRATOR_H
2#define PBAT_SIM_XPBD_INTEGRATOR_H
3
4#include "Data.h"
5#include "PhysicsBasedAnimationToolkitExport.h"
6#include "pbat/Aliases.h"
9
10namespace pbat {
11namespace sim {
12namespace xpbd {
13
14class Integrator
15{
16 public:
17 PBAT_API Integrator(Data data);
18
19 PBAT_API void Step(Scalar dt, Index iterations, Index substeps = Index{1});
20
21 Data data;
22
23 protected:
24 void ProjectBlockNeoHookeanConstraints(Scalar dt, Scalar dt2);
25 void ProjectClusteredBlockNeoHookeanConstraints(Scalar dt, Scalar dt2);
26 void ProjectContactConstraints(Scalar dt, Scalar dt2);
27 void ProjectBlockNeoHookeanConstraint(Index c, Scalar dt, Scalar dt2);
28
29 private:
32 std::vector<Index> mParticlesInContact;
33
34 IndexVectorX mTetsInContact;
35 IndexVectorX mTrianglesInContact;
36 VectorX mSquaredDistancesToTriangles;
37};
38
39} // namespace xpbd
40} // namespace sim
41} // namespace pbat
42
43#endif // PBAT_SIM_XPBD_INTEGRATOR_H
This file contains the TetrahedralAabbHierarchy class.
This file contains the TriangleAabbHierarchy classes for 2D and 3D.
Tetrahedral AABB hierarchy class.
Definition TetrahedralAabbHierarchy.h:38
Bounding volume hierarchy for triangles in 3D.
Definition TriangleAabbHierarchy.h:38
PBAT's (Extended) Position-Based Dynamics (XPBD) bender2015position API.
Definition Data.cpp:13
PBAT simulation algorithms.
The main namespace of the library.
Definition Aliases.h:15
Eigen::Vector< Index, Eigen::Dynamic > IndexVectorX
Dynamic-size index vector type.
Definition Aliases.h:49
Eigen::Vector< Scalar, Eigen::Dynamic > VectorX
Dynamic-size vector type.
Definition Aliases.h:33
std::ptrdiff_t Index
Index type.
Definition Aliases.h:17
double Scalar
Scalar type.
Definition Aliases.h:18
Definition Data.h:15