pub struct PyPbdSolver {
pub positions: Vec<f64>,
pub prev_positions: Vec<f64>,
pub inv_masses: Vec<f64>,
pub constraints: Vec<PbdConstraint>,
pub substeps: u32,
pub gravity: [f64; 3],
}Expand description
Position-based dynamics (XPBD) solver.
Fields§
§positions: Vec<f64>Current particle positions (flat [x0, y0, z0, x1, …]).
prev_positions: Vec<f64>Previous particle positions (for XPBD velocity estimation).
inv_masses: Vec<f64>Per-particle inverse mass (0 = kinematic/fixed).
constraints: Vec<PbdConstraint>Constraints.
substeps: u32Number of substeps per time step.
gravity: [f64; 3]Gravity vector.
Implementations§
Source§impl PyPbdSolver
impl PyPbdSolver
Sourcepub fn add_stretch(&mut self, i: usize, j: usize, compliance: f64)
pub fn add_stretch(&mut self, i: usize, j: usize, compliance: f64)
Add a stretch constraint between two particles.
Sourcepub fn add_volume(
&mut self,
i: usize,
j: usize,
k: usize,
l: usize,
compliance: f64,
)
pub fn add_volume( &mut self, i: usize, j: usize, k: usize, l: usize, compliance: f64, )
Add a volume conservation constraint for a tetrahedron.
Sourcepub fn particle_count(&self) -> usize
pub fn particle_count(&self) -> usize
Return particle count.
Trait Implementations§
Source§impl Clone for PyPbdSolver
impl Clone for PyPbdSolver
Source§fn clone(&self) -> PyPbdSolver
fn clone(&self) -> PyPbdSolver
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for PyPbdSolver
impl Debug for PyPbdSolver
Source§impl<'de> Deserialize<'de> for PyPbdSolver
impl<'de> Deserialize<'de> for PyPbdSolver
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations§
impl Freeze for PyPbdSolver
impl RefUnwindSafe for PyPbdSolver
impl Send for PyPbdSolver
impl Sync for PyPbdSolver
impl Unpin for PyPbdSolver
impl UnsafeUnpin for PyPbdSolver
impl UnwindSafe for PyPbdSolver
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.