aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSébastien Crozet <developer@crozet.re>2023-03-26 15:44:59 +0200
committerSébastien Crozet <developer@crozet.re>2023-03-26 15:44:59 +0200
commit7cca67752328018d3b19aa7e7e6e75f91d2779b0 (patch)
tree1f07cdf962c1ae3e7f571956a39ff6c96ac3f3e3 /src
parentcf6b6d20b6bca0596655736272e30613d5625b0b (diff)
downloadrapier-7cca67752328018d3b19aa7e7e6e75f91d2779b0.tar.gz
rapier-7cca67752328018d3b19aa7e7e6e75f91d2779b0.tar.bz2
rapier-7cca67752328018d3b19aa7e7e6e75f91d2779b0.zip
Add methods to customize a SphericalJoint’s local reference frames.
Diffstat (limited to 'src')
-rw-r--r--src/dynamics/joint/spherical_joint.rs47
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 {