JSim 2026.06.01-p(1)
Loading...
Searching...
No Matches
frcsim::DragModel Class Reference

Evaluates drag force on a moving body using quadratic and linear drag models. More...

#include <drag_model.hpp>

Public Member Functions

 DragModel (double drag_coefficient, double reference_area_m2, double air_density_kgpm3=1.225, double linear_drag_coefficient_n_per_mps=0.0)
 Constructs a drag force model.
Vector3::DragForceDetails computeForceDetailed (const Vector3 &velocity_mps) const
 Computes detailed drag force breakdown for a world-space velocity vector.
Vector3::DragForceDetails computeForceDetailed (const RigidBody &body) const
 Computes detailed drag force using body geometry and motion.
Vector3 computeForce (const Vector3 &velocity_mps) const
 Computes drag force vector for a world-space velocity.
Vector3 computeForce (const RigidBody &body) const
 Computes drag force using body geometry.
DragGravityComparison compareToEffectiveGravity (const RigidBody &body, const Vector3 &effective_gravity_mps2) const
 Compares drag force magnitude against an effective gravity vector.
void apply (RigidBody &body) const
 Applies computed drag force to a rigid body.

Detailed Description

Evaluates drag force on a moving body using quadratic and linear drag models.

The drag force is computed as quad + linear from Vector3::dragForce(). Useful for validating aerodynamic behavior and comparing against gravity.

Constructor & Destructor Documentation

◆ DragModel()

frcsim::DragModel::DragModel ( double drag_coefficient,
double reference_area_m2,
double air_density_kgpm3 = 1.225,
double linear_drag_coefficient_n_per_mps = 0.0 )
inline

Constructs a drag force model.

Parameters
drag_coefficientDimensionless drag coefficient (typically 0.1–2.0).
reference_area_m2Reference area in square meters (cross-section).
air_density_kgpm3Air density in kg/m^3 (default: 1.225 at sea level).
linear_drag_coefficient_n_per_mpsOptional linear drag term in N/(m/s).

Member Function Documentation

◆ apply()

void frcsim::DragModel::apply ( RigidBody & body) const
inline

Applies computed drag force to a rigid body.

Parameters
bodyRigid body to apply drag force to; kinematic bodies are skipped.

◆ compareToEffectiveGravity()

DragGravityComparison frcsim::DragModel::compareToEffectiveGravity ( const RigidBody & body,
const Vector3 & effective_gravity_mps2 ) const
inline

Compares drag force magnitude against an effective gravity vector.

Parameters
bodyRigid body to evaluate using world-space velocity.
effective_gravity_mps2World-space effective gravity vector in m/s^2 (e.g., gravity + Magnus).
Returns
Diagnostic comparison showing drag-to-gravity ratio.

◆ computeForce() [1/2]

Vector3 frcsim::DragModel::computeForce ( const RigidBody & body) const
inline

Computes drag force using body geometry.

Parameters
bodyRigid body to evaluate drag for using its world-space velocity.
Returns
Drag force vector in newtons.

◆ computeForce() [2/2]

Vector3 frcsim::DragModel::computeForce ( const Vector3 & velocity_mps) const
inline

Computes drag force vector for a world-space velocity.

Parameters
velocity_mpsWorld-space velocity in m/s.
Returns
Drag force vector in newtons.

◆ computeForceDetailed() [1/2]

Vector3::DragForceDetails frcsim::DragModel::computeForceDetailed ( const RigidBody & body) const
inline

Computes detailed drag force using body geometry and motion.

Parameters
bodyRigid body supplying world-space velocity and drag area geometry.
Returns
DragForceDetails with force, direction, and diagnostics.

◆ computeForceDetailed() [2/2]

Vector3::DragForceDetails frcsim::DragModel::computeForceDetailed ( const Vector3 & velocity_mps) const
inline

Computes detailed drag force breakdown for a world-space velocity vector.

Parameters
velocity_mpsWorld-space velocity in m/s.
Returns
DragForceDetails with force, direction, and diagnostic fields.

The documentation for this class was generated from the following file: