JSim 2026.06.01-p(1)
Loading...
Searching...
No Matches
gravity.hpp
Go to the documentation of this file.
1// Copyright (c) JSim contributors.
2// Open Source Software; you can modify and/or share it under the terms of
3// the LGPLv3 license file in the root directory of this project.
4
5#pragma once
6
10
11namespace frcsim {
12
20 public:
25 explicit GravityForce(const Vector3& gravity_mps2)
26 : gravity_mps2_(gravity_mps2) {}
27
33 void apply(RigidBody& body, [[maybe_unused]] double dt_s) const override {
34 if (body.flags().is_kinematic)
35 return;
36 body.applyForce(gravity_mps2_ * body.massKg());
37 }
38
39 private:
40 Vector3 gravity_mps2_{};
41};
42
43} // namespace frcsim
Interface for force laws used by the rigid-body integrator.
Definition force_generator.hpp:22
GravityForce(const Vector3 &gravity_mps2)
Constructs gravity force generator.
Definition gravity.hpp:25
void apply(RigidBody &body, double dt_s) const override
Applies gravitational force to a rigid body (mass × gravity).
Definition gravity.hpp:33
Simulated rigid body with translational/angular dynamics and optional aero metadata.
Definition rigid_body.hpp:44
void applyForce(const Vector3 &force_n)
Adds force at center of mass in newtons.
Definition rigid_body.hpp:431
BodyFlags & flags()
Mutable access to runtime body flags.
Definition rigid_body.hpp:244
double massKg() const
Returns mass in kilograms.
Definition rigid_body.hpp:106
Definition vector.hpp:13
bool is_kinematic
Definition body_flags.hpp:26
3D vector utility used throughout JSim physics.
Definition vector.hpp:22