ACE3/addons/atragmx/functions/fnc_calculate_distance_at_velocity.sqf
ulteq 3f4564605b ATragMX - Implemented missing features
* Muzzle Velocity vs. Temperature Interpolation
* C1 Ballistic Coefficient vs. Distance Interpolation
* Coriolis and Spin drift output
* Options menu
* Truing Drop
---------------------------------
* Overworked default gun profiles
---------------------------------
* Fixed the Cancel buttons on the gun-, atmosphere- and target columns.
* Fixed some muzzle velocity entries in the default gun list.
* Fixed divide by zero error in the target range estimator
2016-11-07 16:40:34 +01:00

42 lines
1.2 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 _drag = if (missionNamespace getVariable [QEGVAR(advanced_ballistics,extensionAvailable), false]) then {
parseNumber(("ace_advanced_ballistics" callExtension format["retard:%1:%2:%3", _dragModel, _bc, _velocity]))
} else {
([_dragModel, _bc, _velocity] call EFUNC(advanced_ballistics,calculateRetardation))
};
_distance = _distance + _velocity * __DELTA_T;
_velocity = _velocity - (_drag * __DELTA_T);
};
_distance