diff options
| author | Sébastien Crozet <developer@crozet.re> | 2023-03-26 15:44:59 +0200 |
|---|---|---|
| committer | Sébastien Crozet <developer@crozet.re> | 2023-03-26 15:44:59 +0200 |
| commit | 7cca67752328018d3b19aa7e7e6e75f91d2779b0 (patch) | |
| tree | 1f07cdf962c1ae3e7f571956a39ff6c96ac3f3e3 /src/dynamics | |
| parent | cf6b6d20b6bca0596655736272e30613d5625b0b (diff) | |
| download | rapier-7cca67752328018d3b19aa7e7e6e75f91d2779b0.tar.gz rapier-7cca67752328018d3b19aa7e7e6e75f91d2779b0.tar.bz2 rapier-7cca67752328018d3b19aa7e7e6e75f91d2779b0.zip | |
Add methods to customize a SphericalJoint’s local reference frames.
Diffstat (limited to 'src/dynamics')
| -rw-r--r-- | src/dynamics/joint/spherical_joint.rs | 47 |
1 files changed, 46 insertions, 1 deletions
diff --git a/src/dynamics/joint/spherical_joint.rs b/src/dynamics/joint/spherical_joint.rs index bce393c..d7f4d0f 100644 --- a/src/dynamics/joint/spherical_joint.rs +++ b/src/dynamics/joint/spherical_joint.rs @@ -66,6 +66,34 @@ impl SphericalJoint { self } + /// Gets both the joint anchor and the joint’s reference orientation relative to the first + /// rigid-body’s local-space. + #[must_use] + pub fn local_frame1(&self) -> &Isometry<Real> { + &self.data.local_frame1 + } + + /// Sets both the joint anchor and the joint’s reference orientation relative to the first + /// rigid-body’s local-space. + pub fn set_local_frame1(&mut self, local_frame: Isometry<Real>) -> &mut Self { + self.data.set_local_frame1(local_frame); + self + } + + /// Gets both the joint anchor and the joint’s reference orientation relative to the second + /// rigid-body’s local-space. + #[must_use] + pub fn local_frame2(&self) -> &Isometry<Real> { + &self.data.local_frame2 + } + + /// Sets both the joint anchor and the joint’s reference orientation relative to the second + /// rigid-body’s local-space. + pub fn set_local_frame2(&mut self, local_frame: Isometry<Real>) -> &mut Self { + self.data.set_local_frame2(local_frame); + self + } + /// The motor affecting the joint’s rotational degree of freedom along the specified axis. #[must_use] pub fn motor(&self, axis: JointAxis) -> Option<&JointMotor> { @@ -128,7 +156,8 @@ impl SphericalJoint { self.data.limits(axis) } - /// Sets the `[min,max]` limit angles attached bodies can translate along the joint’s principal axis. + /// Sets the `[min,max]` limit angles attached bodies can translate along the joint’s principal + /// axis. pub fn set_limits(&mut self, axis: JointAxis, limits: [Real; 2]) -> &mut Self { self.data.set_limits(axis, limits); self @@ -179,6 +208,22 @@ impl SphericalJointBuilder { self } + /// Sets both the joint anchor and the joint’s reference orientation relative to the first + /// rigid-body’s local-space. + #[must_use] + pub fn local_frame1(mut self, frame1: Isometry<Real>) -> Self { + self.0.set_local_frame1(frame1); + self + } + + /// Sets both the joint anchor and the joint’s reference orientation relative to the second + /// rigid-body’s local-space. + #[must_use] + pub fn local_frame2(mut self, frame2: Isometry<Real>) -> Self { + self.0.set_local_frame2(frame2); + self + } + /// Set the spring-like model used by the motor to reach the desired target velocity and position. #[must_use] pub fn motor_model(mut self, axis: JointAxis, model: MotorModel) -> Self { |
