|
JSim 2026.06.01-p(1)
|
Global runtime settings for PhysicsWorld dynamics and optional features. More...
#include <physics_world.hpp>
Public Types | |
| enum class | IntegrationMethod { kSemiImplicitEuler , kExplicitEuler , kRK2 } |
Public Attributes | |
| double | fixed_dt_s {0.01} |
| Fixed timestep in seconds used by PhysicsWorld::step. | |
| IntegrationMethod | integration_method {IntegrationMethod::kSemiImplicitEuler} |
| Integration scheme used for rigid body translational/rotational updates. | |
| bool | enable_collision_detection {false} |
| Enables broad collision/contact processing. | |
| bool | enable_joint_constraints {false} |
| Enables joint/constraint solving for rigid assemblies. | |
| bool | enable_aerodynamics {false} |
| Enables aerodynamic drag and Magnus lift forces. | |
| bool | enable_gravity {true} |
| Enables gravity contribution during body integration. | |
| double | default_drag_coefficient {0.47} |
| Default dimensionless drag coefficient (Cd). | |
| double | default_drag_reference_area_m2 {0.01} |
| Default drag reference area in square meters. | |
| double | air_density_kgpm3 {1.225} |
| Ambient air density in kilograms per cubic meter. | |
| double | linear_drag_coefficient_n_per_mps {0.0} |
| Linear drag coefficient in N/(m/s) for optional viscous damping. | |
| double | magnus_coefficient {1e-4} |
| Magnus lift scaling coefficient. | |
| Vector3 | gravity_mps2 {0.0, 0.0, -9.81} |
| Gravity acceleration vector in meters per second squared. | |
| double | linear_damping_per_s {0.0} |
| Linear damping coefficient in 1/s. | |
| double | angular_damping_per_s {0.0} |
| Angular damping coefficient in 1/s. | |
| enum frcsim::PhysicsConfig::IntegrationMethod | kSemiImplicitEuler |
| double | ground_height_m {0.0} |
| double | rolling_friction_per_s {1.5} |
| double | min_bounce_speed_mps {0.06} |
| double | baumgarte_beta {0.2} |
| double | baumgarte_slop_m {0.005} |
Global runtime settings for PhysicsWorld dynamics and optional features.
Configuration parameters for the physics world and simulation.
This structure centralizes tunable simulation constants so callers can choose between physically richer behavior and lighter-weight execution profiles.
Design notes:
|
strong |
| double frcsim::PhysicsConfig::air_density_kgpm3 {1.225} |
Ambient air density in kilograms per cubic meter.
Air density used in aerodynamic force calculations.
| double frcsim::PhysicsConfig::angular_damping_per_s {0.0} |
Angular damping coefficient in 1/s.
Applied as a per-step multiplicative attenuation to angular velocity.
| double frcsim::PhysicsConfig::baumgarte_beta {0.2} |
Baumgarte stabilization factor to reduce penetration in constraints.
| double frcsim::PhysicsConfig::baumgarte_slop_m {0.005} |
Allowed penetration before Baumgarte stabilization is applied, in meters.
| double frcsim::PhysicsConfig::default_drag_coefficient {0.47} |
Default dimensionless drag coefficient (Cd).
Used when a body does not provide an explicit drag coefficient.
Default drag coefficient used for aerodynamic force calculations.
| double frcsim::PhysicsConfig::default_drag_reference_area_m2 {0.01} |
Default drag reference area in square meters.
Used when no aerodynamic geometry is provided for a body.
Default reference area for drag force calculations.
| bool frcsim::PhysicsConfig::enable_aerodynamics {false} |
Enables aerodynamic drag and Magnus lift forces.
When true, per-body aerodynamic geometry/material metadata is used when available; otherwise world defaults are applied.
Enables aerodynamic forces (drag and lift) on bodies.
| bool frcsim::PhysicsConfig::enable_collision_detection {false} |
Enables broad collision/contact processing.
This flag is provided for feature gating and future expansion. Some contact paths may still execute depending on world internals and active boundaries.
Enables collision detection between bodies.
| bool frcsim::PhysicsConfig::enable_gravity {true} |
Enables gravity contribution during body integration.
Individual bodies can additionally opt in/out via body flags.
| bool frcsim::PhysicsConfig::enable_joint_constraints {false} |
Enables joint/constraint solving for rigid assemblies.
Disable for maximum throughput when assemblies are not used.
Enables joint constraint solving for assemblies.
| double frcsim::PhysicsConfig::fixed_dt_s {0.01} |
Fixed timestep in seconds used by PhysicsWorld::step.
Typical values:
Fixed timestep for simulation updates, in seconds.
| Vector3 frcsim::PhysicsConfig::gravity_mps2 {0.0, 0.0, -9.81} |
Gravity acceleration vector in meters per second squared.
Common Earth-like default is {0, 0, -9.81}.
Gravity acceleration vector, in meters per second squared.
| double frcsim::PhysicsConfig::ground_height_m {0.0} |
Ground height used for ball-ground collision detection.
| IntegrationMethod frcsim::PhysicsConfig::integration_method {IntegrationMethod::kSemiImplicitEuler} |
Integration scheme used for rigid body translational/rotational updates.
See IntegrationMethod for tradeoffs between speed and numerical behavior.
| enum frcsim::PhysicsConfig::IntegrationMethod frcsim::PhysicsConfig::kSemiImplicitEuler |
| double frcsim::PhysicsConfig::linear_damping_per_s {0.0} |
Linear damping coefficient in 1/s.
Applied as a per-step multiplicative attenuation to translational velocity.
Damping factors applied to linear and angular motion.
| double frcsim::PhysicsConfig::linear_drag_coefficient_n_per_mps {0.0} |
Linear drag coefficient in N/(m/s) for optional viscous damping.
This term is applied in addition to quadratic drag when enabled.
| double frcsim::PhysicsConfig::magnus_coefficient {1e-4} |
Magnus lift scaling coefficient.
Magnus force is proportional to this value and typically computed from angular and linear velocity cross terms.
Magnus effect coefficient for spin-induced lift.
| double frcsim::PhysicsConfig::min_bounce_speed_mps {0.06} |
Minimum bounce speed for balls to regain energy after a bounce.
| double frcsim::PhysicsConfig::rolling_friction_per_s {1.5} |
Rolling friction coefficient applied to balls on the ground.