mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
be482ea097
* Advanced Ballistics - Drag model revamp - Moved away from using the drag tables from the GNU exterior ballistics library - The drag functions are now based off this data from JBM Ballistics: http://www.jbmballistics.com/ballistics/downloads/text/ - The differences are minor, but some players might still appreciate the additional authenticity * The Mach number is now calculated in relation to the air temperature. * Improved speed of sound calculation accuracy. * Advanced Ballistics - DLL update * Advanced Ballistics - Added drag function reference (JBM Ballistics) * Advanced Ballistics - Fixed calculation error in the spin drift simulation - The error was introduced with this PR (https://github.com/acemod/ACE3/pull/4708) * More descriptive variable names * Minor performance optimizations * Fixed some minor issues * DLL rebuild * Utilize new 'toFixed' script command - Small performance improvement * Fixed a typo * Use correct reference speed for the drag compensation * Updated all 'airFriction' values to match the new drag model * 'Default' atmosphere now equals the ICAO standard atmosphere * Update reference humidity to meet the ICAO standard
39 lines
1.0 KiB
Plaintext
39 lines
1.0 KiB
Plaintext
/*
|
|
* Author: Ruthberg
|
|
* Calculates distance at which the bullet velocity drops below the threshold velocity
|
|
*
|
|
* Arguments:
|
|
* theshold velocity <NUMBER>
|
|
*
|
|
* Return Value:
|
|
* distance <NUMBER>
|
|
*
|
|
* Example:
|
|
* 403 call ace_atragmx_fnc_calculate_distance_at_velocity
|
|
*
|
|
* Public: No
|
|
*/
|
|
#include "script_component.hpp"
|
|
|
|
#define __DELTA_T 0.001
|
|
|
|
if (isNil QGVAR(targetSolutionInput)) exitWith { 0 };
|
|
|
|
private _thresholdVelocity = _this;
|
|
private _velocity = GVAR(targetSolutionInput) select 4;
|
|
|
|
if (_velocity <= _thresholdVelocity) exitWith { 0 };
|
|
|
|
private _distance = 0;
|
|
|
|
while {_velocity > _thresholdVelocity} do {
|
|
private _bc = GVAR(targetSolutionInput) select 14;
|
|
private _dragModel = GVAR(targetSolutionInput) select 15;
|
|
private _temperature = GVAR(targetSolutionInput) select 5;
|
|
private _drag = parseNumber(("ace_advanced_ballistics" callExtension format["retard:%1:%2:%3:%4", _dragModel, _bc, _velocity, _temperature]));
|
|
_distance = _distance + _velocity * __DELTA_T;
|
|
_velocity = _velocity - (_drag * __DELTA_T);
|
|
};
|
|
|
|
_distance
|