ode_base/ode/
krp.rs

1//! krp
2//!
3
4use crate::ode::*;
5
6/// krp
7#[derive(Clone, Copy)]
8pub struct Krp {
9  /// kinetics (false: keep position)
10  pub k: bool,
11  /// gravity sensitive (false: call dBodyDisable())
12  pub g: bool,
13  /// collision
14  pub c: bool,
15  /// bounce
16  pub bounce: dReal,
17  /// mu (e.g. polyethylene 0.06 to 0.3) default 0.3
18  pub mu: dReal
19}
20
21impl Krp {
22  /// construct
23  pub fn new(k: bool, g: bool, c: bool, bounce: dReal, mu: dReal) -> Self {
24    Krp{k, g, c, bounce, mu}
25  }
26}
27
28/// private const F: false
29const F: bool = false;
30/// private const T: true
31const T: bool = true;
32
33/// static krp n k
34pub static KRPnk: Krp = Krp{k: F, g: F, c: F, bounce: 0.0001, mu: 0.3};
35/// static krp 1.0
36pub static KRP100: Krp = Krp{k: T, g: T, c: T, bounce: 1.0, mu: 0.3};
37/// static krp 0.95
38pub static KRP095: Krp = Krp{k: T, g: T, c: T, bounce: 0.95, mu: 0.3};
39/// static krp 0.9
40pub static KRP090: Krp = Krp{k: T, g: T, c: T, bounce: 0.9, mu: 0.3};
41/// static krp 0.8
42pub static KRP080: Krp = Krp{k: T, g: T, c: T, bounce: 0.8, mu: 0.3};
43/// static krp 0.7
44pub static KRP070: Krp = Krp{k: T, g: T, c: T, bounce: 0.7, mu: 0.3};
45/// static krp 0.6
46pub static KRP060: Krp = Krp{k: T, g: T, c: T, bounce: 0.6, mu: 0.3};
47/// static krp 0.5
48pub static KRP050: Krp = Krp{k: T, g: T, c: T, bounce: 0.5, mu: 0.3};
49/// static krp 0.4
50pub static KRP040: Krp = Krp{k: T, g: T, c: T, bounce: 0.4, mu: 0.3};
51/// static krp 0.3
52pub static KRP030: Krp = Krp{k: T, g: T, c: T, bounce: 0.3, mu: 0.3};
53/// static krp 0.2
54pub static KRP020: Krp = Krp{k: T, g: T, c: T, bounce: 0.2, mu: 0.3};
55/// static krp 0.1
56pub static KRP010: Krp = Krp{k: T, g: T, c: T, bounce: 0.1, mu: 0.3};
57/// static krp 0.01
58pub static KRP001: Krp = Krp{k: T, g: T, c: T, bounce: 0.01, mu: 0.3};