Enum heron::rapier_plugin::rapier::dynamics::SpringModel [−]
pub enum SpringModel { Disabled, VelocityBased, AccelerationBased, ForceBased, }
The spring-like model used for constraints resolution.
Variants
No equation is solved.
The solved spring-like equation is:
delta_velocity(t + dt) = stiffness / dt * (target_pos - pos(t)) + damping * (target_vel - vel(t))
Here the stiffness
is the ratio of position error to be solved at each timestep (like
a velocity-based ERP), and the damping
is the ratio of velocity error to be solved at
each timestep.
The solved spring-like equation is:
acceleration(t + dt) = stiffness * (target_pos - pos(t)) + damping * (target_vel - vel(t))
The solved spring-like equation is:
force(t + dt) = stiffness * (target_pos - pos(t + dt)) + damping * (target_vel - vel(t + dt))
Implementations
impl SpringModel
pub fn combine_coefficients(
self,
dt: f32,
stiffness: f32,
damping: f32
) -> (f32, f32, f32, bool)
self,
dt: f32,
stiffness: f32,
damping: f32
) -> (f32, f32, f32, bool)
Combines the coefficients used for solving the spring equation.
Returns the new coefficients (stiffness, damping, inv_lhs_scale, keep_inv_lhs) coefficients for the equivalent impulse-based equation. These new coefficients must be used in the following way:
rhs = (stiffness * pos_err + damping * vel_err) / gamma
.new_inv_lhs = gamma * if keep_inv_lhs { inv_lhs } else { 1.0 }
. Note that the returnedgamma
will be zero if bothstiffness
anddamping
are zero.
Trait Implementations
impl Clone for SpringModel
pub fn clone(&self) -> SpringModel
pub fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl Copy for SpringModel
impl Debug for SpringModel
impl Default for SpringModel
pub fn default() -> SpringModel
impl Eq for SpringModel
impl PartialEq<SpringModel> for SpringModel
pub fn eq(&self, other: &SpringModel) -> bool
#[must_use]pub fn ne(&self, other: &Rhs) -> bool
1.0.0[src]
impl StructuralEq for SpringModel
impl StructuralPartialEq for SpringModel
Auto Trait Implementations
impl RefUnwindSafe for SpringModel
impl Send for SpringModel
impl Sync for SpringModel
impl Unpin for SpringModel
impl UnwindSafe for SpringModel
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Any for T where
T: Any,
T: Any,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> CloneAny for T where
T: Any + Clone,
T: Any + Clone,
impl<T> Component for T where
T: 'static + Send + Sync,
T: 'static + Send + Sync,
impl<T> Downcast for T where
T: Any,
T: Any,
pub fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
pub fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
pub fn as_any(&self) -> &(dyn Any + 'static)
pub fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
impl<T> Downcast<T> for T
impl<T> DowncastSync for T where
T: Any + Send + Sync,
T: Any + Send + Sync,
impl<T> DynEq for T where
T: Any + Eq,
T: Any + Eq,
pub fn as_any(&self) -> &(dyn Any + 'static)
pub fn dyn_eq(&self, other: &(dyn DynEq + 'static)) -> bool
impl<Q, K> Equivalent<K> for Q where
K: Borrow<Q> + ?Sized,
Q: Eq + ?Sized,
[src]
K: Borrow<Q> + ?Sized,
Q: Eq + ?Sized,
pub fn equivalent(&self, key: &K) -> bool
[src]
impl<T> From<T> for T
[src]
impl<T> FromWorld for T where
T: Default,
T: Default,
pub fn from_world(_world: &mut World) -> T
impl<T> Instrument for T
[src]
pub fn instrument(self, span: Span) -> Instrumented<Self>
[src]
pub fn in_current_span(self) -> Instrumented<Self>
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> Pointable for T
pub const ALIGN: usize
type Init = T
The type for initializers.
pub unsafe fn init(init: <T as Pointable>::Init) -> usize
pub unsafe fn deref<'a>(ptr: usize) -> &'a T
pub unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T
pub unsafe fn drop(ptr: usize)
impl<T> Same<T> for T
type Output = T
Should always be Self
impl<T> Scalar for T where
T: Copy + PartialEq<T> + Debug + Any,
[src]
T: Copy + PartialEq<T> + Debug + Any,
impl<SS, SP> SupersetOf<SS> for SP where
SS: SubsetOf<SP>,
SS: SubsetOf<SP>,
pub fn to_subset(&self) -> Option<SS>
pub fn is_in_subset(&self) -> bool
pub fn to_subset_unchecked(&self) -> SS
pub fn from_subset(element: &SS) -> SP
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T> TypeData for T where
T: 'static + Send + Sync + Clone,
T: 'static + Send + Sync + Clone,
pub fn clone_type_data(&self) -> Box<dyn TypeData + 'static, Global>
impl<T> Upcast<T> for T
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,