26 axis_local_(axis_local.normalized()) {}
30 void setLimits(
double min_angle_rad,
double max_angle_rad) {
32 min_angle_rad_ = min_angle_rad;
33 max_angle_rad_ = max_angle_rad;
37 double minAngle()
const {
return min_angle_rad_; }
38 double maxAngle()
const {
return max_angle_rad_; }
42 motor_target_velocity_radps_ = target_velocity_radps;
43 motor_max_torque_nm_ = max_torque_nm;
55 bool has_limits_{
false};
56 double min_angle_rad_{0.0};
57 double max_angle_rad_{0.0};
59 bool has_motor_{
false};
60 double motor_target_velocity_radps_{0.0};
61 double motor_max_torque_nm_{0.0};
JointBase(JointType type, RigidBody *body_a, RigidBody *body_b)
Definition joint_base.hpp:71
void clearLimits()
Definition revolute_joint.hpp:35
double motorMaxTorque() const
Definition revolute_joint.hpp:47
double minAngle() const
Definition revolute_joint.hpp:37
void setLimits(double min_angle_rad, double max_angle_rad)
Definition revolute_joint.hpp:30
double constraintError() const override
void setMotorTarget(double target_velocity_radps, double max_torque_nm)
Definition revolute_joint.hpp:40
double motorTargetVelocity() const
Definition revolute_joint.hpp:46
void solveConstraint(double dt_s, int iterations) override
RevoluteJoint(RigidBody *body_a, RigidBody *body_b, const Vector3 &axis_local)
Definition revolute_joint.hpp:24
double maxAngle() const
Definition revolute_joint.hpp:38
const Vector3 & axisLocal() const
Definition revolute_joint.hpp:28
bool hasMotor() const
Definition revolute_joint.hpp:45
bool hasLimits() const
Definition revolute_joint.hpp:36
Simulated rigid body with translational/angular dynamics and optional aero metadata.
Definition rigid_body.hpp:44
JointType
Definition joint_base.hpp:13
@ kRevolute
Definition joint_base.hpp:14
3D vector utility used throughout JSim physics.
Definition vector.hpp:22
static constexpr Vector3 unitZ() noexcept
Returns the +Z basis vector.
Definition vector.hpp:396