Class AirResistance
java.lang.Object
ca.team4308.absolutelib.math.trajectories.physics.AirResistance
Models air resistance (drag) for projectile motion.
Implements both simple drag and Magnus effect for spinning balls.
-
Constructor Summary
ConstructorsConstructorDescriptionCreates air resistance model with default parameters.AirResistance(boolean enabled, double airDensity, double dragCoefficient, boolean includeMagnusEffect) Creates air resistance model with custom parameters. -
Method Summary
Modifier and TypeMethodDescriptiondouble[]calculateDragAcceleration(GamePiece gamePiece, double vx, double vy, double vz) Calculates drag acceleration on the projectile.double[]calculateDragForce(GamePiece gamePiece, double vx, double vy, double vz) Calculates the drag force vector on the projectile.double[]calculateMagnusForce(GamePiece gamePiece, double vx, double vy, double vz, double spinRpm, double spinAxisX, double spinAxisY, double spinAxisZ) Calculates Magnus force for a spinning ball.doublecalculateTerminalVelocity(GamePiece gamePiece) Returns the terminal velocity for a given game piece.static AirResistancedisabled()Creates disabled air resistance model (vacuum conditions).doubleReturns the air density used in the model.doubleReturns the drag coefficient used in the model.static AirResistanceCreates air resistance model optimized for indoor FRC competition.booleanReturns whether air resistance is enabled.booleanReturns whether Magnus effect is enabled.static AirResistanceCreates air resistance model with Magnus effect for backspin shots.
-
Constructor Details
-
AirResistance
public AirResistance()Creates air resistance model with default parameters. -
AirResistance
public AirResistance(boolean enabled, double airDensity, double dragCoefficient, boolean includeMagnusEffect) Creates air resistance model with custom parameters.- Parameters:
enabled- Whether air resistance is enabledairDensity- Air density in kg/m^3dragCoefficient- Drag coefficient (Cd)includeMagnusEffect- Whether to include Magnus effect for spinning balls
-
-
Method Details
-
disabled
Creates disabled air resistance model (vacuum conditions).- Returns:
- AirResistance instance with drag disabled
-
indoorFRC
Creates air resistance model optimized for indoor FRC competition.- Returns:
- AirResistance instance for indoor FRC
-
withMagnus
Creates air resistance model with Magnus effect for backspin shots.- Returns:
- AirResistance instance with Magnus effect enabled
-
calculateDragForce
Calculates the drag force vector on the projectile.- Parameters:
gamePiece- The game piece being shotvx- Velocity in X direction (m/s)vy- Velocity in Y direction (m/s)vz- Velocity in Z direction (m/s)- Returns:
- Array of [Fx, Fy, Fz] drag forces in Newtons
-
calculateDragAcceleration
Calculates drag acceleration on the projectile.- Parameters:
gamePiece- The game piecevx- Velocity X (m/s)vy- Velocity Y (m/s)vz- Velocity Z (m/s)- Returns:
- Array of [ax, ay, az] drag accelerations in m/s^2
-
calculateMagnusForce
public double[] calculateMagnusForce(GamePiece gamePiece, double vx, double vy, double vz, double spinRpm, double spinAxisX, double spinAxisY, double spinAxisZ) Calculates Magnus force for a spinning ball. The Magnus effect causes lift perpendicular to both velocity and spin axis.- Parameters:
gamePiece- The game piecevx- Velocity X (m/s)vy- Velocity Y (m/s)vz- Velocity Z (m/s)spinRpm- Spin rate in RPM (positive = backspin)spinAxisX- X component of spin axis (normalized)spinAxisY- Y component of spin axis (normalized)spinAxisZ- Z component of spin axis (normalized)- Returns:
- Array of [Fx, Fy, Fz] Magnus forces in Newtons
-
calculateTerminalVelocity
Returns the terminal velocity for a given game piece.- Parameters:
gamePiece- The game piece- Returns:
- Terminal velocity in m/s
-
isEnabled
public boolean isEnabled()Returns whether air resistance is enabled.- Returns:
- true if enabled
-
getAirDensity
public double getAirDensity()Returns the air density used in the model.- Returns:
- air density in kg/m^3
-
getDragCoefficient
public double getDragCoefficient()Returns the drag coefficient used in the model.- Returns:
- drag coefficient (Cd)
-
isMagnusEffectEnabled
public boolean isMagnusEffectEnabled()Returns whether Magnus effect is enabled.- Returns:
- true if Magnus effect is included
-