28 lines
803 B
Rust
28 lines
803 B
Rust
use crate::dynamics::RigidBodyVelocity;
|
|
use crate::math::Real;
|
|
use na::DVector;
|
|
|
|
/// A temporary workspace for various updates of the multibody.
|
|
#[cfg_attr(feature = "serde-serialize", derive(Serialize, Deserialize))]
|
|
#[derive(Clone, Debug)]
|
|
pub(crate) struct MultibodyWorkspace {
|
|
pub accs: Vec<RigidBodyVelocity>,
|
|
pub ndofs_vec: DVector<Real>,
|
|
}
|
|
|
|
impl MultibodyWorkspace {
|
|
/// Create an empty workspace.
|
|
pub fn new() -> Self {
|
|
MultibodyWorkspace {
|
|
accs: Vec::new(),
|
|
ndofs_vec: DVector::zeros(0),
|
|
}
|
|
}
|
|
|
|
/// Resize the workspace so it is enough for `nlinks` links.
|
|
pub fn resize(&mut self, nlinks: usize, ndofs: usize) {
|
|
self.accs.resize(nlinks, RigidBodyVelocity::zero());
|
|
self.ndofs_vec = DVector::zeros(ndofs)
|
|
}
|
|
}
|