mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Advanced Ballistics - Drag model revamp & Spin drift correction (#5566)
* 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
This commit is contained in:
parent
d5aeec11ea
commit
be482ea097
Binary file not shown.
Binary file not shown.
@ -15,8 +15,6 @@
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private _aceTimeSecond = floor CBA_missionTime;
|
||||
|
||||
{
|
||||
_x params ["_bullet","_caliber","_bulletTraceVisible","_index"];
|
||||
|
||||
@ -33,7 +31,7 @@ private _aceTimeSecond = floor CBA_missionTime;
|
||||
drop ["\A3\data_f\ParticleEffects\Universal\Refract","","Billboard",1,0.1,getPos _bullet,[0,0,0],0,1.275,1,0,[0.02*_caliber,0.01*_caliber],[[0,0,0,0.65],[0,0,0,0.2]],[1,0],0,0,"","",""];
|
||||
};
|
||||
|
||||
_bullet setVelocity (_bulletVelocity vectorAdd (parseSimpleArray ("ace_advanced_ballistics" callExtension format["simulate:%1:%2:%3:%4:%5:%6:%7", _index, _bulletVelocity, _bulletPosition, ACE_wind, ASLToATL(_bulletPosition) select 2, _aceTimeSecond, CBA_missionTime - _aceTimeSecond])));
|
||||
_bullet setVelocity (_bulletVelocity vectorAdd (parseSimpleArray ("ace_advanced_ballistics" callExtension format["simulate:%1:%2:%3:%4:%5:%6:%7", _index, _bulletVelocity, _bulletPosition, ACE_wind, ASLToATL(_bulletPosition) select 2, CBA_missionTime toFixed 6])));
|
||||
};
|
||||
nil
|
||||
} count +GVAR(allBullets);
|
||||
|
@ -20,7 +20,7 @@
|
||||
TRACE_10("firedEH:",_unit, _weapon, _muzzle, _mode, _ammo, _magazine, _projectile, _vehicle, _gunner, _turret);
|
||||
|
||||
// Parameterization
|
||||
private ["_abort", "_AmmoCacheEntry", "_WeaponCacheEntry", "_opticsName", "_opticType", "_bulletTraceVisible", "_temperature", "_barometricPressure", "_bulletMass", "_bulletLength", "_muzzleVelocity", "_muzzleVelocityShift", "_bulletVelocity", "_bulletLength", "_barrelTwist", "_stabilityFactor", "_aceTimeSecond", "_barrelVelocityShift", "_ammoTemperatureVelocityShift"];
|
||||
private ["_abort", "_AmmoCacheEntry", "_WeaponCacheEntry", "_opticsName", "_opticType", "_bulletTraceVisible", "_temperature", "_barometricPressure", "_bulletMass", "_bulletLength", "_muzzleVelocity", "_muzzleVelocityShift", "_bulletVelocity", "_bulletLength", "_barrelTwist", "_stabilityFactor", "_barrelVelocityShift", "_ammoTemperatureVelocityShift"];
|
||||
|
||||
_abort = false;
|
||||
|
||||
@ -113,8 +113,7 @@ if (_caliber > 0 && _bulletLength > 0 && _bulletMass > 0 && _barrelTwist > 0) th
|
||||
|
||||
GVAR(currentbulletID) = (GVAR(currentbulletID) + 1) % 10000;
|
||||
|
||||
_aceTimeSecond = floor CBA_missionTime;
|
||||
"ace_advanced_ballistics" callExtension format["new:%1:%2:%3:%4:%5:%6:%7:%8:%9:%10:%11:%12:%13:%14:%15:%16:%17:%18", GVAR(currentbulletID), _airFriction, _ballisticCoefficients, _velocityBoundaries, _atmosphereModel, _dragModel, _stabilityFactor, _twistDirection, _muzzleVelocity, _transonicStabilityCoef, getPosASL _projectile, EGVAR(common,mapLatitude), EGVAR(weather,currentTemperature), EGVAR(common,mapAltitude), EGVAR(weather,currentHumidity), overcast, _aceTimeSecond, CBA_missionTime - _aceTimeSecond];
|
||||
"ace_advanced_ballistics" callExtension format["new:%1:%2:%3:%4:%5:%6:%7:%8:%9:%10:%11:%12:%13:%14:%15:%16:%17:%18", GVAR(currentbulletID), _airFriction, _ballisticCoefficients, _velocityBoundaries, _atmosphereModel, _dragModel, _stabilityFactor, _twistDirection, _muzzleVelocity, _transonicStabilityCoef, getPosASL _projectile, EGVAR(common,mapLatitude), EGVAR(weather,currentTemperature), EGVAR(common,mapAltitude), EGVAR(weather,currentHumidity), overcast, CBA_missionTime toFixed 6];
|
||||
|
||||
GVAR(allBullets) pushBack [_projectile, _caliber, _bulletTraceVisible, GVAR(currentbulletID)];
|
||||
|
||||
|
@ -29,7 +29,8 @@ private _distance = 0;
|
||||
while {_velocity > _thresholdVelocity} do {
|
||||
private _bc = GVAR(targetSolutionInput) select 14;
|
||||
private _dragModel = GVAR(targetSolutionInput) select 15;
|
||||
private _drag = parseNumber(("ace_advanced_ballistics" callExtension format["retard:%1:%2:%3", _dragModel, _bc, _velocity]));
|
||||
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);
|
||||
};
|
||||
|
@ -118,7 +118,7 @@ while {_TOF < 15 && (_bulletPos select 1) < _targetRange} do {
|
||||
_trueSpeed = vectorMagnitude _trueVelocity;
|
||||
|
||||
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
|
||||
private _drag = parseNumber(("ace_advanced_ballistics" callExtension format["retard:%1:%2:%3", _dragModel, _bc, _trueSpeed]));
|
||||
private _drag = parseNumber(("ace_advanced_ballistics" callExtension format["retard:%1:%2:%3:%4", _dragModel, _bc, _trueSpeed, _temperature]));
|
||||
_bulletAccel = (vectorNormalized _trueVelocity) vectorMultiply (-1 * _drag);
|
||||
} else {
|
||||
_bulletAccel = _trueVelocity vectorMultiply (_trueSpeed * _airFriction);
|
||||
|
@ -51,7 +51,7 @@ GVAR(atmosphereModeTBH) = true;
|
||||
GVAR(altitude) = 0;
|
||||
GVAR(temperature) = 15;
|
||||
GVAR(barometricPressure) = 1013.25;
|
||||
GVAR(relativeHumidity) = 0.5;
|
||||
GVAR(relativeHumidity) = 0.0;
|
||||
|
||||
GVAR(latitude) = [38, 38, 38, 38];
|
||||
GVAR(directionOfFire) = [0, 0, 0, 0];
|
||||
|
@ -34,49 +34,49 @@ if (_resetGunList) then {
|
||||
// Profile Name, Muzzle Velocity, Zero Range, Scope Base Angle, AirFriction, Bore Height, Scope Unit, Scope Click Unit, Scope Click Number, Maximum Elevation, Dialed Elevation, Dialed Windage, Mass, Bullet Diameter, Rifle Twist, BC, Drag Model, Atmosphere Model, Muzzle Velocity vs. Temperature Interpolation, C1 Ballistic Coefficient vs. Distance Interpolation, Persistent
|
||||
GVAR(gunList) = [["12.7x108mm" , 812, 100, 0.0666557, -0.00063800, 3.81, 0, 2, 10, 120, 0, 0, 48.28, 12.7, 38.10, 0.630, 1, "ASM" , [[-15,793],[0,800],[10,807],[15,812],[25,826],[30,835],[35,846]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
|
||||
["12.7x99mm AMAX" , 852, 100, 0.0615965, -0.00036645, 3.81, 0, 2, 10, 120, 0, 0, 48.60, 12.7, 38.10, 1.050, 1, "ASM" , [[-15,833],[0,840],[10,847],[15,852],[25,866],[30,875],[35,886]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
["12.7x99mm" , 892, 100, 0.0588284, -0.00057503, 3.81, 0, 2, 10, 120, 0, 0, 41.92, 12.7, 38.10, 0.670, 1, "ASM" , [[-15,873],[0,880],[10,887],[15,892],[25,906],[30,915],[35,926]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
["12.7x99mm AMAX" , 852, 100, 0.0615965, -0.00037397, 3.81, 0, 2, 10, 120, 0, 0, 48.60, 12.7, 38.10, 1.050, 1, "ASM" , [[-15,833],[0,840],[10,847],[15,852],[25,866],[30,875],[35,886]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
["12.7x99mm" , 892, 100, 0.0588284, -0.00058679, 3.81, 0, 2, 10, 120, 0, 0, 41.92, 12.7, 38.10, 0.670, 1, "ASM" , [[-15,873],[0,880],[10,887],[15,892],[25,906],[30,915],[35,926]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
|
||||
["12.7x54mm" , 299, 100, 0.3406920, -0.00019268, 3.81, 0, 2, 10, 120, 0, 0, 48.60, 12.7, 24.13, 1.050, 1, "ASM" , [[-15,297],[0,298],[10,299],[15,299],[25,301],[30,302],[35,303]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
["12.7x54mm" , 299, 100, 0.3406920, -0.00019568, 3.81, 0, 2, 10, 120, 0, 0, 48.60, 12.7, 24.13, 1.050, 1, "ASM" , [[-15,297],[0,298],[10,299],[15,299],[25,301],[30,302],[35,303]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
|
||||
[".50 Beowulf" , 562, 100, 0.1262000, -0.00202645, 3.81, 0, 2, 10, 120, 0, 0, 21.71, 12.7, 50.80, 0.210, 1, "ASM" , [[-15,560],[0,561],[10,562],[15,562],[25,564],[30,565],[35,566]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
[".50 Beowulf" , 562, 100, 0.1262000, -0.00205896, 3.81, 0, 2, 10, 120, 0, 0, 21.71, 12.7, 50.80, 0.210, 1, "ASM" , [[-15,560],[0,561],[10,562],[15,562],[25,564],[30,565],[35,566]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
|
||||
[".408 CheyTac 305gr", 1059, 100, 0.0482146, -0.00063655, 3.81, 0, 2, 10, 120, 0, 0, 19.76, 10.4, 33.02, 0.569, 1, "ICAO", [[-15,1040],[0,1047],[10,1054],[15,1059],[25,1073],[30,1082],[35,1093]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
[".408 CheyTac 419gr", 859, 100, 0.0611842, -0.00044958, 3.81, 0, 2, 10, 120, 0, 0, 27.15, 10.4, 33.02, 0.866, 1, "ICAO", [[-15,840],[0,847],[10,854],[15,859],[25,873],[30,882],[35,893]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
[".408 CheyTac 305gr", 1059, 100, 0.0482146, -0.00065414, 3.81, 0, 2, 10, 120, 0, 0, 19.76, 10.4, 33.02, 0.569, 1, "ICAO", [[-15,1040],[0,1047],[10,1054],[15,1059],[25,1073],[30,1082],[35,1093]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
[".408 CheyTac 419gr", 859, 100, 0.0611842, -0.00046249, 3.81, 0, 2, 10, 120, 0, 0, 27.15, 10.4, 33.02, 0.866, 1, "ICAO", [[-15,840],[0,847],[10,854],[15,859],[25,873],[30,882],[35,893]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
|
||||
["9.3×64mm" , 862, 100, 0.0627652, -0.00108571, 3.81, 0, 2, 10, 120, 0, 0, 14.90, 9.30, 35.56, 0.368, 1, "ASM" , [[-15,843],[0,850],[10,857],[15,862],[25,876],[30,885],[35,896]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
["9.3×64mm" , 862, 100, 0.0627652, -0.00110727, 3.81, 0, 2, 10, 120, 0, 0, 14.90, 9.30, 35.56, 0.368, 1, "ASM" , [[-15,843],[0,850],[10,857],[15,862],[25,876],[30,885],[35,896]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
|
||||
[".338LM 250gr" , 872, 100, 0.0604821, -0.00059133, 3.81, 0, 2, 10, 120, 0, 0, 16.20, 8.58, 25.40, 0.645, 1, "ICAO", [[-15,853],[0,860],[10,867],[15,872],[25,886],[30,895],[35,906]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
[".338LM 300gr" , 792, 100, 0.0685883, -0.00052190, 3.81, 0, 2, 10, 120, 0, 0, 19.44, 8.58, 25.40, 0.759, 1, "ICAO", [[-15,773],[0,780],[10,787],[15,792],[25,806],[30,815],[35,826]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
[".338LM API526" , 872, 100, 0.0602535, -0.00069611, 3.81, 0, 2, 10, 120, 0, 0, 16.39, 8.58, 25.40, 0.580, 1, "ICAO", [[-15,853],[0,860],[10,867],[15,872],[25,886],[30,895],[35,906]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
[".338LM 250gr" , 872, 100, 0.0604821, -0.00060841, 3.81, 0, 2, 10, 120, 0, 0, 16.20, 8.58, 25.40, 0.645, 1, "ICAO", [[-15,853],[0,860],[10,867],[15,872],[25,886],[30,895],[35,906]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
[".338LM 300gr" , 792, 100, 0.0685883, -0.00053585, 3.81, 0, 2, 10, 120, 0, 0, 19.44, 8.58, 25.40, 0.759, 1, "ICAO", [[-15,773],[0,780],[10,787],[15,792],[25,806],[30,815],[35,826]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
[".338LM API526" , 872, 100, 0.0602535, -0.00069220, 3.81, 0, 2, 10, 120, 0, 0, 16.39, 8.58, 25.40, 0.580, 1, "ICAO", [[-15,853],[0,860],[10,867],[15,872],[25,886],[30,895],[35,906]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
|
||||
[".300WM Mk248 Mod0" , 857, 100, 0.0621425, -0.00070530, 3.81, 0, 2, 10, 120, 0, 0, 12.31, 7.80, 25.40, 0.537, 1, "ICAO", [[-15,838],[0,845],[10,852],[15,857],[25,871],[30,880],[35,891]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
[".300WM Mk248 Mod1" , 839, 100, 0.0637038, -0.00061188, 3.81, 0, 2, 10, 120, 0, 0, 14.26, 7.80, 25.40, 0.619, 1, "ICAO", [[-15,820],[0,827],[10,834],[15,839],[25,853],[30,862],[35,873]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
[".300WM Berger OTM" , 792, 100, 0.0686968, -0.00053733, 3.81, 0, 2, 10, 120, 0, 0, 14.90, 7.80, 25.40, 0.715, 1, "ICAO", [[-15,773],[0,780],[10,787],[15,792],[25,806],[30,815],[35,826]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
[".300WM Mk248 Mod0" , 857, 100, 0.0621425, -0.00072468, 3.81, 0, 2, 10, 120, 0, 0, 12.31, 7.80, 25.40, 0.537, 1, "ICAO", [[-15,838],[0,845],[10,852],[15,857],[25,871],[30,880],[35,891]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
[".300WM Mk248 Mod1" , 839, 100, 0.0637038, -0.00063027, 3.81, 0, 2, 10, 120, 0, 0, 14.26, 7.80, 25.40, 0.619, 1, "ICAO", [[-15,820],[0,827],[10,834],[15,839],[25,853],[30,862],[35,873]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
[".300WM Berger OTM" , 792, 100, 0.0686968, -0.00055262, 3.81, 0, 2, 10, 120, 0, 0, 14.90, 7.80, 25.40, 0.715, 1, "ICAO", [[-15,773],[0,780],[10,787],[15,792],[25,806],[30,815],[35,826]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
|
||||
["7.62x54mmR" , 812, 100, 0.0678441, -0.00100023, 3.81, 0, 2, 10, 120, 0, 0, 9.849, 7.92, 24.13, 0.400, 1, "ICAO", [[-15,793],[0,800],[10,807],[15,812],[25,826],[30,835],[35,846]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
["7.62x54mmR" , 812, 100, 0.0678441, -0.00102329, 3.81, 0, 2, 10, 120, 0, 0, 9.849, 7.92, 24.13, 0.400, 1, "ICAO", [[-15,793],[0,800],[10,807],[15,812],[25,826],[30,835],[35,846]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
|
||||
["7.62x51mm M80" , 802, 100, 0.0690229, -0.00100957, 3.81, 0, 2, 10, 120, 0, 0, 9.461, 7.82, 25.40, 0.398, 1, "ICAO", [[-15,783],[0,790],[10,797],[15,802],[25,816],[30,825],[35,836]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
["7.62x51mm M118LR" , 757, 100, 0.0739989, -0.00082828, 3.81, 0, 2, 10, 120, 0, 0, 11.34, 7.82, 25.40, 0.482, 1, "ICAO", [[-15,738],[0,745],[10,752],[15,757],[25,771],[30,780],[35,791]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
["7.62x51mm Mk316" , 781, 100, 0.0709422, -0.00082029, 3.81, 0, 2, 10, 120, 0, 0, 11.34, 7.82, 25.40, 0.483, 1, "ICAO", [[-15,777],[0,778],[10,779],[15,781],[25,783],[30,785],[35,787]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
["7.62x51mm Mk319" , 900, 100, 0.0593025, -0.00102338, 3.81, 0, 2, 10, 120, 0, 0, 8.424, 7.82, 25.40, 0.377, 1, "ICAO", [[-15,898],[0,899],[10,900],[15,900],[25,902],[30,903],[35,904]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
["7.62x51mm M993" , 912, 100, 0.0585007, -0.00107148, 3.81, 0, 2, 10, 120, 0, 0, 8.230, 7.82, 25.40, 0.359, 1, "ICAO", [[-15,893],[0,900],[10,907],[15,912],[25,926],[30,935],[35,946]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
["7.62x51mm Subsonic", 314, 100, 0.3168140, -0.00049899, 3.81, 0, 2, 10, 120, 0, 0, 12.96, 7.82, 25.40, 0.502, 1, "ICAO", [[-15,312],[0,313],[10,314],[15,314],[25,316],[30,317],[35,318]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
["7.62x51mm M80" , 802, 100, 0.0690229, -0.00103711, 3.81, 0, 2, 10, 120, 0, 0, 9.461, 7.82, 25.40, 0.398, 1, "ICAO", [[-15,783],[0,790],[10,797],[15,802],[25,816],[30,825],[35,836]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
["7.62x51mm M118LR" , 757, 100, 0.0739989, -0.00085157, 3.81, 0, 2, 10, 120, 0, 0, 11.34, 7.82, 25.40, 0.482, 1, "ICAO", [[-15,738],[0,745],[10,752],[15,757],[25,771],[30,780],[35,791]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
["7.62x51mm Mk316" , 781, 100, 0.0709422, -0.00084311, 3.81, 0, 2, 10, 120, 0, 0, 11.34, 7.82, 25.40, 0.483, 1, "ICAO", [[-15,777],[0,778],[10,779],[15,781],[25,783],[30,785],[35,787]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
["7.62x51mm Mk319" , 900, 100, 0.0593025, -0.00104515, 3.81, 0, 2, 10, 120, 0, 0, 8.424, 7.82, 25.40, 0.377, 1, "ICAO", [[-15,898],[0,899],[10,900],[15,900],[25,902],[30,903],[35,904]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
["7.62x51mm M993" , 912, 100, 0.0585007, -0.00109390, 3.81, 0, 2, 10, 120, 0, 0, 8.230, 7.82, 25.40, 0.359, 1, "ICAO", [[-15,893],[0,900],[10,907],[15,912],[25,926],[30,935],[35,946]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
["7.62x51mm Subsonic", 314, 100, 0.3168140, -0.00060194, 3.81, 0, 2, 10, 120, 0, 0, 12.96, 7.82, 25.40, 0.502, 1, "ICAO", [[-15,312],[0,313],[10,314],[15,314],[25,316],[30,317],[35,318]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
|
||||
["7.62x39mm" , 708, 100, 0.0846559, -0.00151621, 3.81, 0, 2, 10, 120, 0, 0, 7.970, 7.82, 25.40, 0.275, 1, "ICAO", [[-15,689],[0,696],[10,703],[15,708],[25,722],[30,731],[35,742]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
["7.62x39mm" , 708, 100, 0.0846559, -0.00154815, 3.81, 0, 2, 10, 120, 0, 0, 7.970, 7.82, 25.40, 0.275, 1, "ICAO", [[-15,689],[0,696],[10,703],[15,708],[25,722],[30,731],[35,742]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
|
||||
["6.5x39mm" , 766, 100, 0.0725986, -0.00075308, 3.81, 0, 2, 10, 120, 0, 0, 7.970, 6.71, 22.86, 0.524, 1, "ICAO", [[-15,747],[0,754],[10,761],[15,766],[25,780],[30,789],[35,800]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
["6.5x47mm Lapua" , 767, 100, 0.0722256, -0.00067037, 3.81, 0, 2, 10, 120, 0, 0, 9.007, 6.71, 22.86, 0.577, 1, "ICAO", [[-15,748],[0,755],[10,762],[15,767],[25,781],[30,790],[35,801]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
["6.5mm Creedmor" , 822, 100, 0.0655022, -0.00060887, 3.81, 0, 2, 10, 120, 0, 0, 9.072, 6.71, 22.86, 0.632, 1, "ICAO", [[-15,803],[0,810],[10,817],[15,822],[25,836],[30,845],[35,856]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
["6.5x39mm" , 766, 100, 0.0725986, -0.00077363, 3.81, 0, 2, 10, 120, 0, 0, 7.970, 6.71, 22.86, 0.524, 1, "ICAO", [[-15,747],[0,754],[10,761],[15,766],[25,780],[30,789],[35,800]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
["6.5x47mm Lapua" , 767, 100, 0.0722256, -0.00069003, 3.81, 0, 2, 10, 120, 0, 0, 9.007, 6.71, 22.86, 0.577, 1, "ICAO", [[-15,748],[0,755],[10,762],[15,767],[25,781],[30,790],[35,801]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
["6.5mm Creedmor" , 822, 100, 0.0655022, -0.00062437, 3.81, 0, 2, 10, 120, 0, 0, 9.072, 6.71, 22.86, 0.632, 1, "ICAO", [[-15,803],[0,810],[10,817],[15,822],[25,836],[30,845],[35,856]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
|
||||
["5.8x42mm DBP87" , 942, 100, 0.0566639, -0.00117956, 3.81, 0, 2, 10, 120, 0, 0, 4.150, 5.99, 24.40, 0.313, 1, "ICAO", [[-15,923],[0,930],[10,937],[15,942],[25,956],[30,965],[35,976]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
["5.8x42mm DBP87" , 942, 100, 0.0566639, -0.00121087, 3.81, 0, 2, 10, 120, 0, 0, 4.150, 5.99, 24.40, 0.313, 1, "ICAO", [[-15,923],[0,930],[10,937],[15,942],[25,956],[30,965],[35,976]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
|
||||
["5.56x45mm M855" , 862, 100, 0.0635456, -0.00126466, 3.81, 0, 2, 10, 120, 0, 0, 4.018, 5.70, 17.78, 0.302, 1, "ASM" , [[-15,843],[0,849],[10,857],[15,862],[25,876],[30,885],[35,898]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
["5.56x45mm Mk262" , 812, 100, 0.0682606, -0.00109563, 3.81, 0, 2, 10, 120, 0, 0, 4.990, 5.70, 17.78, 0.361, 1, "ASM" , [[-15,793],[0,800],[10,807],[15,812],[25,826],[30,835],[35,846]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
["5.56x45mm Mk318" , 872, 100, 0.0624569, -0.00123318, 3.81, 0, 2, 10, 120, 0, 0, 4.018, 5.70, 17.78, 0.307, 1, "ASM" , [[-15,853],[0,860],[10,867],[15,872],[25,886],[30,895],[35,906]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
["5.56x45mm M995" , 861, 100, 0.0635355, -0.00123272, 3.81, 0, 2, 10, 120, 0, 0, 4.536, 5.70, 17.78, 0.310, 1, "ASM" , [[-15,842],[0,849],[10,856],[15,861],[25,875],[30,884],[35,895]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
["5.56x45mm M855" , 862, 100, 0.0635456, -0.00130094, 3.81, 0, 2, 10, 120, 0, 0, 4.018, 5.70, 17.78, 0.302, 1, "ASM" , [[-15,843],[0,849],[10,857],[15,862],[25,876],[30,885],[35,898]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
["5.56x45mm Mk262" , 812, 100, 0.0682606, -0.00111805, 3.81, 0, 2, 10, 120, 0, 0, 4.990, 5.70, 17.78, 0.361, 1, "ASM" , [[-15,793],[0,800],[10,807],[15,812],[25,826],[30,835],[35,846]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
["5.56x45mm Mk318" , 872, 100, 0.0624569, -0.00125880, 3.81, 0, 2, 10, 120, 0, 0, 4.018, 5.70, 17.78, 0.307, 1, "ASM" , [[-15,853],[0,860],[10,867],[15,872],[25,886],[30,895],[35,906]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
["5.56x45mm M995" , 861, 100, 0.0635355, -0.00126182, 3.81, 0, 2, 10, 120, 0, 0, 4.536, 5.70, 17.78, 0.310, 1, "ASM" , [[-15,842],[0,849],[10,856],[15,861],[25,875],[30,884],[35,895]] , [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true],
|
||||
|
||||
["5.45x39mm 7N6M" , 727, 100, 0.0801269, -0.00116278, 3.81, 0, 2, 10, 120, 0, 0, 3.428, 5.59, 16.00, 0.336, 1, "ICAO", [[-15,708],[0,715],[10,722],[15,727],[25,741],[30,750],[35,761]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true]];
|
||||
["5.45x39mm 7N6M" , 727, 100, 0.0801269, -0.00119458, 3.81, 0, 2, 10, 120, 0, 0, 3.428, 5.59, 16.00, 0.336, 1, "ICAO", [[-15,708],[0,715],[10,722],[15,727],[25,741],[30,750],[35,761]], [[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]], true]];
|
||||
|
||||
[] call FUNC(clear_user_data);
|
||||
profileNamespace setVariable ["ACE_ATragMX_gunList", GVAR(gunList)];
|
||||
|
@ -19,7 +19,7 @@ GVAR(atmosphereModeTBH) = true;
|
||||
GVAR(altitude) = 0;
|
||||
GVAR(temperature) = 15;
|
||||
GVAR(barometricPressure) = 1013.25;
|
||||
GVAR(relativeHumidity) = 0.5;
|
||||
GVAR(relativeHumidity) = 0.0;
|
||||
|
||||
[] call FUNC(update_atmo_selection);
|
||||
[] call FUNC(update_atmosphere);
|
||||
|
@ -23,7 +23,7 @@ GVAR(atmosphereModeTBH) = profileNamespace getVariable ["ACE_ATragMX_atmosphereM
|
||||
GVAR(altitude) = -1000 max (profileNamespace getVariable ["ACE_ATragMX_altitude", 0]) min 20000;
|
||||
GVAR(temperature) = -50 max (profileNamespace getVariable ["ACE_ATragMX_temperature", 15]) min 160;
|
||||
GVAR(barometricPressure) = 340 max (profileNamespace getVariable ["ACE_ATragMX_barometricPressure", 1013.25]) min 1350;
|
||||
GVAR(relativeHumidity) = 0 max (profileNamespace getVariable ["ACE_ATragMX_relativeHumidity", 0.5]) min 1;
|
||||
GVAR(relativeHumidity) = 0 max (profileNamespace getVariable ["ACE_ATragMX_relativeHumidity", 0.0]) min 1;
|
||||
|
||||
GVAR(showWind2) = profileNamespace getVariable ["ACE_ATragMX_showWind2", false];
|
||||
GVAR(showCoriolis) = profileNamespace getVariable ["ACE_ATragMX_showCoriolis", true];
|
||||
|
@ -16,4 +16,4 @@
|
||||
|
||||
#include "\z\ace\addons\main\script_macros.hpp"
|
||||
|
||||
#define ATRAGMX_PROFILE_NAMESPACE_VERSION 2.0
|
||||
#define ATRAGMX_PROFILE_NAMESPACE_VERSION 2.1
|
||||
|
@ -7,7 +7,7 @@ class CfgAmmo {
|
||||
};
|
||||
|
||||
class B_556x45_Ball : BulletBase {
|
||||
airFriction=-0.00126466;
|
||||
airFriction=-0.00130094;
|
||||
tracerScale = 1;
|
||||
tracerStartTime=0.073; // M856 tracer burns out to 800m
|
||||
tracerEndTime=1.57123; // Time in seconds calculated with ballistics calculator
|
||||
@ -23,7 +23,7 @@ class CfgAmmo {
|
||||
ACE_barrelLengths[]={210.82, 238.76, 269.24, 299.72, 330.2, 360.68, 391.16, 419.1, 449.58, 480.06, 508.0, 609.6};
|
||||
};
|
||||
class ACE_556x45_Ball_Mk262 : B_556x45_Ball {
|
||||
airFriction=-0.00109563;
|
||||
airFriction=-0.00111805;
|
||||
ACE_caliber=5.69;
|
||||
ACE_bulletLength=23.012;
|
||||
ACE_bulletMass=4.9896;
|
||||
@ -36,7 +36,7 @@ class CfgAmmo {
|
||||
ACE_barrelLengths[]={190.5, 368.3, 457.2, 508.0};
|
||||
};
|
||||
class ACE_556x45_Ball_Mk318 : B_556x45_Ball {
|
||||
airFriction=-0.00123318;
|
||||
airFriction=-0.0012588;
|
||||
ACE_caliber=5.69;
|
||||
ACE_bulletLength=23.012;
|
||||
ACE_bulletMass=4.0176;
|
||||
@ -49,7 +49,7 @@ class CfgAmmo {
|
||||
ACE_barrelLengths[]={254.0, 393.7, 508.0};
|
||||
};
|
||||
class ACE_556x45_Ball_M995_AP : B_556x45_Ball {
|
||||
airFriction=-0.00123272;
|
||||
airFriction=-0.00126182;
|
||||
caliber=1.6;
|
||||
ACE_caliber=5.69;
|
||||
ACE_bulletLength=23.012;
|
||||
@ -67,7 +67,7 @@ class CfgAmmo {
|
||||
nvgOnly = 1;
|
||||
};
|
||||
class B_545x39_Ball_F : BulletBase {
|
||||
airFriction=-0.00116278;
|
||||
airFriction=-0.00119458;
|
||||
ACE_caliber=5.588;
|
||||
ACE_bulletLength=21.59;
|
||||
ACE_bulletMass=3.42792;
|
||||
@ -83,7 +83,7 @@ class CfgAmmo {
|
||||
tracerScale = 0.5;
|
||||
};
|
||||
class B_580x42_Ball_F: BulletBase {
|
||||
airFriction=-0.00117956;
|
||||
airFriction=-0.00121087;
|
||||
ACE_caliber=5.9944;
|
||||
ACE_bulletLength=24.2;
|
||||
ACE_bulletMass=4.15;
|
||||
@ -96,7 +96,7 @@ class CfgAmmo {
|
||||
ACE_barrelLengths[]={369.0, 463.0, 600.0};
|
||||
};
|
||||
class B_65x39_Caseless : BulletBase {
|
||||
airFriction=-0.00075308;
|
||||
airFriction=-0.00077363;
|
||||
tracerScale = 1.1; //1.0;
|
||||
ACE_caliber=6.706;
|
||||
ACE_bulletLength=32.893;
|
||||
@ -118,7 +118,7 @@ class CfgAmmo {
|
||||
nvgOnly = 1;
|
||||
};
|
||||
class ACE_65x47_Ball_Scenar: B_65x39_Caseless {
|
||||
airFriction=-0.00067037;
|
||||
airFriction=-0.00069003;
|
||||
caliber=0.9;
|
||||
ACE_caliber=6.706;
|
||||
ACE_bulletLength=34.646;
|
||||
@ -132,7 +132,7 @@ class CfgAmmo {
|
||||
ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4};
|
||||
};
|
||||
class ACE_65_Creedmor_Ball: B_65x39_Caseless {
|
||||
airFriction=-0.00060887;
|
||||
airFriction=-0.00062437;
|
||||
caliber=1.1;
|
||||
ACE_caliber=6.706;
|
||||
ACE_bulletLength=36.22;
|
||||
@ -150,7 +150,7 @@ class CfgAmmo {
|
||||
tracerScale = 1.1; //1.0;
|
||||
};
|
||||
class B_762x51_Ball : BulletBase {
|
||||
airFriction=-0.00100957;
|
||||
airFriction=-0.00103711;
|
||||
tracerScale = 1.2; //0.6;
|
||||
tracerStartTime=0.073; // Based on the British L5A1 which burns out to 1000m
|
||||
tracerEndTime=2.15957; // Time in seconds calculated with ballistics calculator
|
||||
@ -170,7 +170,7 @@ class CfgAmmo {
|
||||
nvgOnly = 1;
|
||||
};
|
||||
class ACE_762x51_Ball_M118LR : B_762x51_Ball {
|
||||
airFriction=-0.00082828;
|
||||
airFriction=-0.00085157;
|
||||
caliber=1.8;
|
||||
hit=16;
|
||||
typicalSpeed=790;
|
||||
@ -186,7 +186,7 @@ class CfgAmmo {
|
||||
ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4};
|
||||
};
|
||||
class ACE_762x51_Ball_Mk316_Mod_0 : B_762x51_Ball {
|
||||
airFriction=-0.00082029;
|
||||
airFriction=-0.00084311;
|
||||
caliber=1.8;
|
||||
hit=16;
|
||||
typicalSpeed=790;
|
||||
@ -202,7 +202,7 @@ class CfgAmmo {
|
||||
ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4};
|
||||
};
|
||||
class ACE_762x51_Ball_Mk319_Mod_0 : B_762x51_Ball {
|
||||
airFriction=-0.00102338;
|
||||
airFriction=-0.00104515;
|
||||
caliber=1.5;
|
||||
hit=14;
|
||||
typicalSpeed=900;
|
||||
@ -218,7 +218,7 @@ class CfgAmmo {
|
||||
ACE_barrelLengths[]={330.2, 406.4, 508.0};
|
||||
};
|
||||
class ACE_762x51_Ball_M993_AP : B_762x51_Ball {
|
||||
airFriction=-0.00107148;
|
||||
airFriction=-0.0010939;
|
||||
caliber=2.2;
|
||||
hit=11;
|
||||
typicalSpeed=910;
|
||||
@ -234,7 +234,7 @@ class CfgAmmo {
|
||||
ACE_barrelLengths[]={330.2, 406.4, 508.0};
|
||||
};
|
||||
class ACE_762x51_Ball_Subsonic : B_762x51_Ball {
|
||||
airFriction=-0.00049899;
|
||||
airFriction=-0.00060194;
|
||||
caliber=1;
|
||||
hit=6;
|
||||
typicalSpeed=320;
|
||||
@ -250,7 +250,7 @@ class CfgAmmo {
|
||||
ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4};
|
||||
};
|
||||
class ACE_762x67_Ball_Mk248_Mod_0 : B_762x51_Ball {
|
||||
airFriction=-0.00070530;
|
||||
airFriction=-0.00072468;
|
||||
caliber=1.8;
|
||||
hit=17;
|
||||
typicalSpeed=900;
|
||||
@ -266,7 +266,7 @@ class CfgAmmo {
|
||||
ACE_barrelLengths[]={508.0, 609.6, 660.4};
|
||||
};
|
||||
class ACE_762x67_Ball_Mk248_Mod_1 : B_762x51_Ball {
|
||||
airFriction=-0.00061188;
|
||||
airFriction=-0.00063027;
|
||||
caliber=1.9;
|
||||
hit=18;
|
||||
typicalSpeed=867;
|
||||
@ -282,7 +282,7 @@ class CfgAmmo {
|
||||
ACE_barrelLengths[]={508.0, 609.6, 660.4};
|
||||
};
|
||||
class ACE_762x67_Ball_Berger_Hybrid_OTM : B_762x51_Ball {
|
||||
airFriction=-0.00053733;
|
||||
airFriction=-0.00055262;
|
||||
caliber=2.0;
|
||||
hit=19;
|
||||
typicalSpeed=853;
|
||||
@ -298,7 +298,7 @@ class CfgAmmo {
|
||||
ACE_barrelLengths[]={508.0, 609.6, 660.4};
|
||||
};
|
||||
class B_762x54_Ball: B_762x51_Ball {
|
||||
airFriction=-0.00100023;
|
||||
airFriction=-0.00102329;
|
||||
ACE_caliber=7.925;
|
||||
ACE_bulletLength=28.956;
|
||||
ACE_bulletMass=9.8496;
|
||||
@ -312,7 +312,7 @@ class CfgAmmo {
|
||||
};
|
||||
class B_762x54_Tracer_Green;
|
||||
class ACE_762x54_Ball_7T2 : B_762x54_Tracer_Green {
|
||||
airFriction=-0.00103989;
|
||||
airFriction=-0.00106104;
|
||||
typicalSpeed=800;
|
||||
tracerStartTime=0.073; // Based on the 7T2 which burns three seconds
|
||||
tracerEndTime=3;
|
||||
@ -328,7 +328,7 @@ class CfgAmmo {
|
||||
ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4};
|
||||
};
|
||||
class B_762x39_Ball_F : BulletBase {
|
||||
airFriction=-0.00151621;
|
||||
airFriction=-0.00154815;
|
||||
ACE_caliber=7.823;
|
||||
ACE_bulletLength=28.956;
|
||||
ACE_bulletMass=7.9704;
|
||||
@ -341,7 +341,7 @@ class CfgAmmo {
|
||||
ACE_barrelLengths[]={254.0, 414.02, 508.0};
|
||||
};
|
||||
class B_9x21_Ball : BulletBase {
|
||||
airFriction=-0.00208292;
|
||||
airFriction=-0.00211064;
|
||||
tracerScale = 0.5;
|
||||
ACE_caliber=9.042;
|
||||
ACE_bulletLength=15.494;
|
||||
@ -358,7 +358,7 @@ class CfgAmmo {
|
||||
tracerScale = 0.5;
|
||||
};
|
||||
class ACE_9x19_Ball : B_9x21_Ball {
|
||||
airFriction=-0.0019835;
|
||||
airFriction=-0.00201185;
|
||||
ACE_caliber=9.017;
|
||||
ACE_bulletLength=15.494;
|
||||
ACE_bulletMass=8.0352;
|
||||
@ -371,7 +371,7 @@ class CfgAmmo {
|
||||
ACE_barrelLengths[]={101.6, 127.0, 228.6};
|
||||
};
|
||||
class B_93x64_Ball : BulletBase {
|
||||
airFriction=-0.00108571;
|
||||
airFriction=-0.00110727;
|
||||
ACE_caliber=9.296;
|
||||
ACE_bulletLength=34.29;
|
||||
ACE_bulletMass=14.904;
|
||||
@ -385,7 +385,7 @@ class CfgAmmo {
|
||||
};
|
||||
class B_408_Ball : BulletBase {
|
||||
timeToLive=10;
|
||||
airFriction=-0.00044958;
|
||||
airFriction=-0.00046249;
|
||||
tracerScale = 1.3;
|
||||
ACE_caliber=10.363;
|
||||
ACE_bulletLength=55.1942;
|
||||
@ -401,7 +401,7 @@ class CfgAmmo {
|
||||
};
|
||||
class ACE_408_Ball : BulletBase {
|
||||
timeToLive=10;
|
||||
airFriction=-0.00063655;
|
||||
airFriction=-0.00065414;
|
||||
typicalSpeed=1067;
|
||||
tracerScale = 1.3;
|
||||
ACE_caliber=10.363;
|
||||
@ -418,7 +418,7 @@ class CfgAmmo {
|
||||
};
|
||||
class B_338_Ball : BulletBase {
|
||||
timeToLive=10;
|
||||
airFriction=-0.00059133;
|
||||
airFriction=-0.00060841;
|
||||
ACE_caliber=8.585;
|
||||
ACE_bulletLength=39.573;
|
||||
ACE_bulletMass=16.2;
|
||||
@ -431,7 +431,7 @@ class CfgAmmo {
|
||||
ACE_barrelLengths[]={508.0, 660.4, 711.2};
|
||||
};
|
||||
class B_338_NM_Ball : BulletBase {
|
||||
airFriction=-0.00052201;
|
||||
airFriction=-0.00053639;
|
||||
ACE_caliber=8.585;
|
||||
ACE_bulletLength=43.18;
|
||||
ACE_bulletMass=19.44;
|
||||
@ -445,7 +445,7 @@ class CfgAmmo {
|
||||
};
|
||||
class ACE_338_Ball : B_338_Ball {
|
||||
timeToLive=10;
|
||||
airFriction=-0.00052190;
|
||||
airFriction=-0.00053585;
|
||||
typicalSpeed=826;
|
||||
ACE_caliber=8.585;
|
||||
ACE_bulletLength=43.18;
|
||||
@ -460,7 +460,7 @@ class CfgAmmo {
|
||||
};
|
||||
class ACE_338_Ball_API526 : B_338_Ball {
|
||||
timeToLive=10;
|
||||
airFriction=-0.00069611;
|
||||
airFriction=-0.0006922;
|
||||
caliber=2.8;
|
||||
typicalSpeed=895;
|
||||
ACE_caliber=8.585;
|
||||
@ -478,7 +478,7 @@ class CfgAmmo {
|
||||
tracerScale = 1.3; //1.2;
|
||||
};
|
||||
class B_127x54_Ball : BulletBase {
|
||||
airFriction=-0.00019268;
|
||||
airFriction=-0.00019568;
|
||||
tracerScale = 1.3;//
|
||||
ACE_caliber=12.954;
|
||||
ACE_bulletLength=64.516;
|
||||
@ -493,7 +493,7 @@ class CfgAmmo {
|
||||
};
|
||||
class B_127x99_Ball : BulletBase {
|
||||
timeToLive=10;
|
||||
airFriction=-0.00057503;
|
||||
airFriction=-0.00058679;
|
||||
tracerScale = 1.3; //1.2;
|
||||
ACE_caliber=12.954;
|
||||
ACE_bulletLength=58.674;
|
||||
@ -508,7 +508,7 @@ class CfgAmmo {
|
||||
};
|
||||
class ACE_127x99_API : B_127x99_Ball {
|
||||
timeToLive=10;
|
||||
airFriction=-0.00057503;
|
||||
airFriction=-0.00058679;
|
||||
tracerScale = 1.3;//
|
||||
hit=25;
|
||||
caliber=4.0;
|
||||
@ -525,7 +525,7 @@ class CfgAmmo {
|
||||
};
|
||||
class ACE_127x99_Ball_AMAX : B_127x99_Ball {
|
||||
timeToLive=10;
|
||||
airFriction=-0.00036645;
|
||||
airFriction=-0.00037397;
|
||||
caliber=3.0;
|
||||
ACE_caliber=12.954;
|
||||
ACE_bulletLength=64.516;
|
||||
@ -540,7 +540,7 @@ class CfgAmmo {
|
||||
};
|
||||
class B_127x108_Ball : BulletBase {
|
||||
timeToLive=10;
|
||||
airFriction=-0.00063800;
|
||||
airFriction=-0.00065098;
|
||||
tracerScale = 1.3; //1.5;
|
||||
ACE_caliber=12.979;
|
||||
ACE_bulletLength=64.008;
|
||||
@ -554,7 +554,7 @@ class CfgAmmo {
|
||||
ACE_barrelLengths[]={728.98};
|
||||
};
|
||||
class B_45ACP_Ball : BulletBase {
|
||||
airFriction=-0.00081221;
|
||||
airFriction=-0.00082143;
|
||||
tracerScale = 0.6;
|
||||
ACE_caliber=11.481;
|
||||
ACE_bulletLength=17.272;
|
||||
@ -568,7 +568,7 @@ class CfgAmmo {
|
||||
ACE_barrelLengths[]={101.6, 127.0, 228.6};
|
||||
};
|
||||
class B_50BW_Ball_F : BulletBase {
|
||||
airFriction=-0.00202645;
|
||||
airFriction=-0.00205896;
|
||||
ACE_caliber=12.7;
|
||||
ACE_bulletLength=24.13;
|
||||
ACE_bulletMass=21.7076;
|
||||
|
@ -103,7 +103,7 @@ while {_TOF < 6 && (_bulletPos select 1) < _targetRange} do {
|
||||
_trueSpeed = vectorMagnitude _trueVelocity;
|
||||
|
||||
if (_useABConfig) then {
|
||||
private _drag = parseNumber(("ace_advanced_ballistics" callExtension format["retard:%1:%2:%3", _dragModel, _bc, _trueSpeed]));
|
||||
private _drag = parseNumber(("ace_advanced_ballistics" callExtension format["retard:%1:%2:%3:%4", _dragModel, _bc, _trueSpeed, _temperature]));
|
||||
_bulletAccel = (vectorNormalized _trueVelocity) vectorMultiply (-1 * _drag);
|
||||
} else {
|
||||
_bulletAccel = _trueVelocity vectorMultiply (_trueSpeed * _airFriction * _airFrictionCoef);
|
||||
|
@ -50,7 +50,7 @@ class ACE_Settings {
|
||||
};
|
||||
class GVAR(zeroReferenceHumidity) {
|
||||
typeName = "SCALAR";
|
||||
value = 0.5;
|
||||
value = 0.0;
|
||||
displayName = CSTRING(zeroReferenceHumidity_displayName);
|
||||
description = CSTRING(zeroReferenceHumidity_description);
|
||||
};
|
||||
|
@ -74,7 +74,7 @@ class CfgVehicles {
|
||||
displayName = CSTRING(zeroReferenceHumidity_DisplayName);
|
||||
description = CSTRING(zeroReferenceHumidity_Description);
|
||||
typeName = "NUMBER";
|
||||
defaultValue = 0.5;
|
||||
defaultValue = 0.0;
|
||||
};
|
||||
class deduceBarometricPressureFromTerrainAltitude {
|
||||
displayName = CSTRING(deduceBarometricPressureFromTerrainAltitude_DisplayName);
|
||||
|
@ -15,4 +15,4 @@
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
(331.3 + (0.6 * _this))
|
||||
(331.3 * sqrt(1 + (_this / 273.15)))
|
||||
|
@ -7,7 +7,6 @@
|
||||
#include <random>
|
||||
#include <cmath>
|
||||
|
||||
|
||||
#define DELTA_T 0.02f
|
||||
#define GRAVITY 9.80665f
|
||||
#define DEGREES(X) (X * 180 / M_PI)
|
||||
@ -21,6 +20,9 @@
|
||||
#define SPECIFIC_GAS_CONSTANT_DRY_AIR 287.058f
|
||||
#define STD_AIR_DENSITY_ICAO 1.22498f
|
||||
#define STD_AIR_DENSITY_ASM 1.20885f
|
||||
#define BC_CONVERSION_FACTOR 0.00068418f
|
||||
#define SPEED_OF_SOUND(t) (331.3 * std::sqrt(1 + t / 273.15f))
|
||||
#define SPEED_OF_SOUND_AT_15C 340.275
|
||||
|
||||
struct Bullet {
|
||||
double airFriction;
|
||||
@ -37,6 +39,7 @@ struct Bullet {
|
||||
double twistDirection;
|
||||
double transonicStabilityCoef;
|
||||
double muzzleVelocity;
|
||||
double bulletSpeed;
|
||||
std::vector<double> origin;
|
||||
double latitude;
|
||||
double temperature;
|
||||
@ -114,117 +117,35 @@ double calculateAtmosphericCorrection(double ballisticCoefficient, double temper
|
||||
}
|
||||
}
|
||||
|
||||
double calculateRetard(int DragFunction, double DragCoefficient, double Velocity) {
|
||||
double vel = Velocity * 3.2808399;
|
||||
double val = -1;
|
||||
double A = -1;
|
||||
double M = -1;
|
||||
// Drag Functions from: http://www.jbmballistics.com/ballistics/downloads/text/
|
||||
const std::vector<double> dragCoefficientsG1 = { 0.2629, 0.2558, 0.2487, 0.2413, 0.2344, 0.2278, 0.2214, 0.2155, 0.2104, 0.2061, 0.2032, 0.2020, 0.2034, 0.2165, 0.2230, 0.2313, 0.2417, 0.2546, 0.2706, 0.2901, 0.3136, 0.3415, 0.3734, 0.4084, 0.4448, 0.4805, 0.5136, 0.5427, 0.5677, 0.5883, 0.6053, 0.6191, 0.6393, 0.6518, 0.6589, 0.6621, 0.6625, 0.6607, 0.6573, 0.6528, 0.6474, 0.6413, 0.6347, 0.6280, 0.6210, 0.6141, 0.6072, 0.6003, 0.5934, 0.5867, 0.5804, 0.5743, 0.5685, 0.5630, 0.5577, 0.5527, 0.5481, 0.5438, 0.5397, 0.5325, 0.5264, 0.5211, 0.5168, 0.5133, 0.5105, 0.5084, 0.5067, 0.5054, 0.5040, 0.5030, 0.5022, 0.5016, 0.5010, 0.5006, 0.4998, 0.4995, 0.4992, 0.4990, 0.4988 };
|
||||
const std::vector<double> machNumbersG1 = { 0.00, 0.05, 0.10, 0.15, 0.20, 0.25, 0.30, 0.35, 0.40, 0.45, 0.50, 0.55, 0.60, 0.70, 0.725, 0.75, 0.775, 0.80, 0.825, 0.85, 0.875, 0.90, 0.925, 0.95, 0.975, 1.0, 1.025, 1.05, 1.075, 1.10, 1.125, 1.15, 1.20, 1.25, 1.30, 1.35, 1.40, 1.45, 1.50, 1.55, 1.60, 1.65, 1.70, 1.75, 1.80, 1.85, 1.90, 1.95, 2.00, 2.05, 2.10, 2.15, 2.20, 2.25, 2.30, 2.35, 2.40, 2.45, 2.50, 2.60, 2.70, 2.80, 2.90, 3.00, 3.10, 3.20, 3.30, 3.40, 3.50, 3.60, 3.70, 3.80, 3.90, 4.00, 4.20, 4.40, 4.60, 4.80, 5.00 };
|
||||
const std::vector<double> dragCoefficientsG2 = { 0.2303, 0.2298, 0.2287, 0.2271, 0.2251, 0.2227, 0.2196, 0.2156, 0.2107, 0.2048, 0.1980, 0.1905, 0.1828, 0.1758, 0.1702, 0.1669, 0.1664, 0.1667, 0.1682, 0.1711, 0.1761, 0.1831, 0.2004, 0.2589, 0.3492, 0.3983, 0.4075, 0.4103, 0.4114, 0.4106, 0.4089, 0.4068, 0.4046, 0.4021, 0.3966, 0.3904, 0.3835, 0.3759, 0.3678, 0.3594, 0.3512, 0.3432, 0.3356, 0.3282, 0.3213, 0.3149, 0.3089, 0.3033, 0.2982, 0.2933, 0.2889, 0.2846, 0.2806, 0.2768, 0.2731, 0.2696, 0.2663, 0.2632, 0.2602, 0.2572, 0.2543, 0.2515, 0.2487, 0.2460, 0.2433, 0.2408, 0.2382, 0.2357, 0.2333, 0.2309, 0.2262, 0.2217, 0.2173, 0.2132, 0.2091, 0.2052, 0.2014, 0.1978, 0.1944, 0.1912, 0.1851, 0.1794, 0.1741, 0.1693, 0.1648 };
|
||||
const std::vector<double> machNumbersG2 = { 0.00, 0.05, 0.10, 0.15, 0.20, 0.25, 0.30, 0.35, 0.40, 0.45, 0.50, 0.55, 0.60, 0.65, 0.70, 0.75, 0.775, 0.80, 0.825, 0.85, 0.875, 0.90, 0.925, 0.95, 0.975, 1.0, 1.025, 1.05, 1.075, 1.10, 1.125, 1.15, 1.175, 1.20, 1.25, 1.30, 1.35, 1.40, 1.45, 1.50, 1.55, 1.60, 1.65, 1.70, 1.75, 1.80, 1.85, 1.90, 1.95, 2.00, 2.05, 2.10, 2.15, 2.20, 2.25, 2.30, 2.35, 2.40, 2.45, 2.50, 2.55, 2.60, 2.65, 2.70, 2.75, 2.80, 2.85, 2.90, 2.95, 3.00, 3.10, 3.20, 3.30, 3.40, 3.50, 3.60, 3.70, 3.80, 3.90, 4.00, 4.20, 4.40, 4.60, 4.80, 5.00 };
|
||||
const std::vector<double> dragCoefficientsG5 = { 0.1710, 0.1719, 0.1727, 0.1732, 0.1734, 0.1730, 0.1718, 0.1696, 0.1668, 0.1637, 0.1603, 0.1566, 0.1529, 0.1497, 0.1473, 0.1463, 0.1489, 0.1583, 0.1672, 0.1815, 0.2051, 0.2413, 0.2884, 0.3379, 0.3785, 0.4032, 0.4147, 0.4201, 0.4278, 0.4338, 0.4373, 0.4392, 0.4403, 0.4406, 0.4401, 0.4386, 0.4362, 0.4328, 0.4286, 0.4237, 0.4182, 0.4121, 0.4057, 0.3991, 0.3926, 0.3861, 0.3800, 0.3741, 0.3684, 0.3630, 0.3578, 0.3529, 0.3481, 0.3435, 0.3391, 0.3349, 0.3269, 0.3194, 0.3125, 0.3060, 0.2999, 0.2942, 0.2889, 0.2838, 0.2790, 0.2745, 0.2703, 0.2662, 0.2624, 0.2588, 0.2553, 0.2488, 0.2429, 0.2376, 0.2326, 0.2280 };
|
||||
const std::vector<double> machNumbersG5 = { 0.00, 0.05, 0.10, 0.15, 0.20, 0.25, 0.30, 0.35, 0.40, 0.45, 0.50, 0.55, 0.60, 0.65, 0.70, 0.75, 0.80, 0.85, 0.875, 0.90, 0.925, 0.95, 0.975, 1.0, 1.025, 1.05, 1.075, 1.10, 1.15, 1.20, 1.25, 1.30, 1.35, 1.40, 1.45, 1.50, 1.55, 1.60, 1.65, 1.70, 1.75, 1.80, 1.85, 1.90, 1.95, 2.00, 2.05, 2.10, 2.15, 2.20, 2.25, 2.30, 2.35, 2.40, 2.45, 2.50, 2.60, 2.70, 2.80, 2.90, 3.00, 3.10, 3.20, 3.30, 3.40, 3.50, 3.60, 3.70, 3.80, 3.90, 4.00, 4.20, 4.40, 4.60, 4.80, 5.00 };
|
||||
const std::vector<double> dragCoefficientsG6 = { 0.2617, 0.2553, 0.2491, 0.2432, 0.2376, 0.2324, 0.2278, 0.2238, 0.2205, 0.2177, 0.2155, 0.2138, 0.2126, 0.2121, 0.2122, 0.2132, 0.2154, 0.2194, 0.2229, 0.2297, 0.2449, 0.2732, 0.3141, 0.3597, 0.3994, 0.4261, 0.4402, 0.4465, 0.4490, 0.4497, 0.4494, 0.4482, 0.4464, 0.4441, 0.4390, 0.4336, 0.4279, 0.4221, 0.4162, 0.4102, 0.4042, 0.3981, 0.3919, 0.3855, 0.3788, 0.3721, 0.3652, 0.3583, 0.3515, 0.3447, 0.3381, 0.3314, 0.3249, 0.3185, 0.3122, 0.3060, 0.3000, 0.2941, 0.2883, 0.2772, 0.2668, 0.2574, 0.2487, 0.2407, 0.2333, 0.2265, 0.2202, 0.2144, 0.2089, 0.2039, 0.1991, 0.1947, 0.1905, 0.1866, 0.1794, 0.1730, 0.1673, 0.1621, 0.1574 };
|
||||
const std::vector<double> machNumbersG6 = { 0.00, 0.05, 0.10, 0.15, 0.20, 0.25, 0.30, 0.35, 0.40, 0.45, 0.50, 0.55, 0.60, 0.65, 0.70, 0.75, 0.80, 0.85, 0.875, 0.90, 0.925, 0.95, 0.975, 1.0, 1.025, 1.05, 1.075, 1.10, 1.125, 1.15, 1.175, 1.20, 1.225, 1.25, 1.30, 1.35, 1.40, 1.45, 1.50, 1.55, 1.60, 1.65, 1.70, 1.75, 1.80, 1.85, 1.90, 1.95, 2.00, 2.05, 2.10, 2.15, 2.20, 2.25, 2.30, 2.35, 2.40, 2.45, 2.50, 2.60, 2.70, 2.80, 2.90, 3.00, 3.10, 3.20, 3.30, 3.40, 3.50, 3.60, 3.70, 3.80, 3.90, 4.00, 4.20, 4.40, 4.60, 4.80, 5.00 };
|
||||
const std::vector<double> dragCoefficientsG7 = { 0.1198, 0.1197, 0.1196, 0.1194, 0.1193, 0.1194, 0.1194, 0.1194, 0.1193, 0.1193, 0.1194, 0.1193, 0.1194, 0.1197, 0.1202, 0.1207, 0.1215, 0.1226, 0.1242, 0.1266, 0.1306, 0.1368, 0.1464, 0.1660, 0.2054, 0.2993, 0.3803, 0.4015, 0.4043, 0.4034, 0.4014, 0.3987, 0.3955, 0.3884, 0.3810, 0.3732, 0.3657, 0.3580, 0.3440, 0.3376, 0.3315, 0.3260, 0.3209, 0.3160, 0.3117, 0.3078, 0.3042, 0.3010, 0.2980, 0.2951, 0.2922, 0.2892, 0.2864, 0.2835, 0.2807, 0.2779, 0.2752, 0.2725, 0.2697, 0.2670, 0.2643, 0.2615, 0.2588, 0.2561, 0.2533, 0.2506, 0.2479, 0.2451, 0.2424, 0.2368, 0.2313, 0.2258, 0.2205, 0.2154, 0.2106, 0.2060, 0.2017, 0.1975, 0.1935, 0.1861, 0.1793, 0.1730, 0.1672, 0.1618 };
|
||||
const std::vector<double> machNumbersG7 = { 0.0, 0.05, 0.10, 0.15, 0.20, 0.25, 0.30, 0.35, 0.40, 0.45, 0.50, 0.55, 0.60, 0.65, 0.70, 0.725, 0.75, 0.775, 0.80, 0.825, 0.85, 0.875, 0.90, 0.925, 0.95, 0.975, 1.0, 1.025, 1.05, 1.075, 1.10, 1.125, 1.15, 1.20, 1.25, 1.30, 1.35, 1.40, 1.50, 1.55, 1.60, 1.65, 1.70, 1.75, 1.80, 1.85, 1.90, 1.95, 2.00, 2.05, 2.10, 2.15, 2.20, 2.25, 2.30, 2.35, 2.40, 2.45, 2.50, 2.55, 2.60, 2.65, 2.70, 2.75, 2.80, 2.85, 2.90, 2.95, 3.00, 3.10, 3.20, 3.30, 3.40, 3.50, 3.60, 3.70, 3.80, 3.90, 4.00, 4.20, 4.40, 4.60, 4.80, 5.00 };
|
||||
const std::vector<double> dragCoefficientsG8 = { 0.2105, 0.2105, 0.2104, 0.2104, 0.2103, 0.2103, 0.2103, 0.2103, 0.2103, 0.2102, 0.2102, 0.2102, 0.2102, 0.2102, 0.2103, 0.2103, 0.2104, 0.2104, 0.2105, 0.2106, 0.2109, 0.2183, 0.2571, 0.3358, 0.4068, 0.4378, 0.4476, 0.4493, 0.4477, 0.4450, 0.4419, 0.4353, 0.4283, 0.4208, 0.4133, 0.4059, 0.3986, 0.3915, 0.3845, 0.3777, 0.3710, 0.3645, 0.3581, 0.3519, 0.3458, 0.3400, 0.3343, 0.3288, 0.3234, 0.3182, 0.3131, 0.3081, 0.3032, 0.2983, 0.2937, 0.2891, 0.2845, 0.2802, 0.2720, 0.2642, 0.2569, 0.2499, 0.2432, 0.2368, 0.2308, 0.2251, 0.2197, 0.2147, 0.2101, 0.2058, 0.2019, 0.1983, 0.1950, 0.1890, 0.1837, 0.1791, 0.1750, 0.1713 };
|
||||
const std::vector<double> machNumbersG8 = { 0.00, 0.05, 0.10, 0.15, 0.20, 0.25, 0.30, 0.35, 0.40, 0.45, 0.50, 0.55, 0.60, 0.65, 0.70, 0.75, 0.80, 0.825, 0.85, 0.875, 0.90, 0.925, 0.95, 0.975, 1.0, 1.025, 1.05, 1.075, 1.10, 1.125, 1.15, 1.20, 1.25, 1.30, 1.35, 1.40, 1.45, 1.50, 1.55, 1.60, 1.65, 1.70, 1.75, 1.80, 1.85, 1.90, 1.95, 2.00, 2.05, 2.10, 2.15, 2.20, 2.25, 2.30, 2.35, 2.40, 2.45, 2.50, 2.60, 2.70, 2.80, 2.90, 3.00, 3.10, 3.20, 3.30, 3.40, 3.50, 3.60, 3.70, 3.80, 3.90, 4.00, 4.20, 4.40, 4.60, 4.80, 5.00 };
|
||||
|
||||
switch (DragFunction) {
|
||||
case 1:
|
||||
if (vel> 4230) { A = 1.477404177730177e-04; M = 1.9565; }
|
||||
else if (vel> 3680) { A = 1.920339268755614e-04; M = 1.925; }
|
||||
else if (vel> 3450) { A = 2.894751026819746e-04; M = 1.875; }
|
||||
else if (vel> 3295) { A = 4.349905111115636e-04; M = 1.825; }
|
||||
else if (vel> 3130) { A = 6.520421871892662e-04; M = 1.775; }
|
||||
else if (vel> 2960) { A = 9.748073694078696e-04; M = 1.725; }
|
||||
else if (vel> 2830) { A = 1.453721560187286e-03; M = 1.675; }
|
||||
else if (vel> 2680) { A = 2.162887202930376e-03; M = 1.625; }
|
||||
else if (vel> 2460) { A = 3.209559783129881e-03; M = 1.575; }
|
||||
else if (vel> 2225) { A = 3.904368218691249e-03; M = 1.55; }
|
||||
else if (vel> 2015) { A = 3.222942271262336e-03; M = 1.575; }
|
||||
else if (vel> 1890) { A = 2.203329542297809e-03; M = 1.625; }
|
||||
else if (vel> 1810) { A = 1.511001028891904e-03; M = 1.675; }
|
||||
else if (vel> 1730) { A = 8.609957592468259e-04; M = 1.75; }
|
||||
else if (vel> 1595) { A = 4.086146797305117e-04; M = 1.85; }
|
||||
else if (vel> 1520) { A = 1.954473210037398e-04; M = 1.95; }
|
||||
else if (vel> 1420) { A = 5.431896266462351e-05; M = 2.125; }
|
||||
else if (vel> 1360) { A = 8.847742581674416e-06; M = 2.375; }
|
||||
else if (vel> 1315) { A = 1.456922328720298e-06; M = 2.625; }
|
||||
else if (vel> 1280) { A = 2.419485191895565e-07; M = 2.875; }
|
||||
else if (vel> 1220) { A = 1.657956321067612e-08; M = 3.25; }
|
||||
else if (vel> 1185) { A = 4.745469537157371e-10; M = 3.75; }
|
||||
else if (vel> 1150) { A = 1.379746590025088e-11; M = 4.25; }
|
||||
else if (vel> 1100) { A = 4.070157961147882e-13; M = 4.75; }
|
||||
else if (vel> 1060) { A = 2.938236954847331e-14; M = 5.125; }
|
||||
else if (vel> 1025) { A = 1.228597370774746e-14; M = 5.25; }
|
||||
else if (vel> 980) { A = 2.916938264100495e-14; M = 5.125; }
|
||||
else if (vel> 945) { A = 3.855099424807451e-13; M = 4.75; }
|
||||
else if (vel> 905) { A = 1.185097045689854e-11; M = 4.25; }
|
||||
else if (vel> 860) { A = 3.566129470974951e-10; M = 3.75; }
|
||||
else if (vel> 810) { A = 1.045513263966272e-08; M = 3.25; }
|
||||
else if (vel> 780) { A = 1.291159200846216e-07; M = 2.875; }
|
||||
else if (vel> 750) { A = 6.824429329105383e-07; M = 2.625; }
|
||||
else if (vel> 700) { A = 3.569169672385163e-06; M = 2.375; }
|
||||
else if (vel> 640) { A = 1.839015095899579e-05; M = 2.125; }
|
||||
else if (vel> 600) { A = 5.71117468873424e-05; M = 1.950; }
|
||||
else if (vel> 550) { A = 9.226557091973427e-05; M = 1.875; }
|
||||
else if (vel> 250) { A = 9.337991957131389e-05; M = 1.875; }
|
||||
else if (vel> 100) { A = 7.225247327590413e-05; M = 1.925; }
|
||||
else if (vel> 65) { A = 5.792684957074546e-05; M = 1.975; }
|
||||
else if (vel> 0) { A = 5.206214107320588e-05; M = 2.000; }
|
||||
break;
|
||||
const std::vector<std::vector<double>> dragCoefficients = { {}, dragCoefficientsG1, dragCoefficientsG2, {}, {}, dragCoefficientsG5, dragCoefficientsG6, dragCoefficientsG7, dragCoefficientsG8, {} };
|
||||
const std::vector<std::vector<double>> machNumbers = { {}, machNumbersG1, machNumbersG2, {},{}, machNumbersG5, machNumbersG6, machNumbersG7, machNumbersG8,{} };
|
||||
|
||||
case 2:
|
||||
if (vel> 1674) { A = .0079470052136733; M = 1.36999902851493; }
|
||||
else if (vel> 1172) { A = 1.00419763721974e-03; M = 1.65392237010294; }
|
||||
else if (vel> 1060) { A = 7.15571228255369e-23; M = 7.91913562392361; }
|
||||
else if (vel> 949) { A = 1.39589807205091e-10; M = 3.81439537623717; }
|
||||
else if (vel> 670) { A = 2.34364342818625e-04; M = 1.71869536324748; }
|
||||
else if (vel> 335) { A = 1.77962438921838e-04; M = 1.76877550388679; }
|
||||
else if (vel> 0) { A = 5.18033561289704e-05; M = 1.98160270524632; }
|
||||
break;
|
||||
double calculateRetard(int DragFunction, double DragCoefficient, double Velocity, double Mach) {
|
||||
int idx = std::max(0, std::min(DragFunction, 9));
|
||||
double m = Velocity / Mach;
|
||||
|
||||
case 5:
|
||||
if (vel> 1730) { A = 7.24854775171929e-03; M = 1.41538574492812; }
|
||||
else if (vel> 1228) { A = 3.50563361516117e-05; M = 2.13077307854948; }
|
||||
else if (vel> 1116) { A = 1.84029481181151e-13; M = 4.81927320350395; }
|
||||
else if (vel> 1004) { A = 1.34713064017409e-22; M = 7.8100555281422; }
|
||||
else if (vel> 837) { A = 1.03965974081168e-07; M = 2.84204791809926; }
|
||||
else if (vel> 335) { A = 1.09301593869823e-04; M = 1.81096361579504; }
|
||||
else if (vel> 0) { A = 3.51963178524273e-05; M = 2.00477856801111; }
|
||||
break;
|
||||
|
||||
case 6:
|
||||
if (vel> 3236) { A = 0.0455384883480781; M = 1.15997674041274; }
|
||||
else if (vel> 2065) { A = 7.167261849653769e-02; M = 1.10704436538885; }
|
||||
else if (vel> 1311) { A = 1.66676386084348e-03; M = 1.60085100195952; }
|
||||
else if (vel> 1144) { A = 1.01482730119215e-07; M = 2.9569674731838; }
|
||||
else if (vel> 1004) { A = 4.31542773103552e-18; M = 6.34106317069757; }
|
||||
else if (vel> 670) { A = 2.04835650496866e-05; M = 2.11688446325998; }
|
||||
else if (vel> 0) { A = 7.50912466084823e-05; M = 1.92031057847052; }
|
||||
break;
|
||||
|
||||
case 7:
|
||||
if (vel> 4200) { A = 1.29081656775919e-09; M = 3.24121295355962; }
|
||||
else if (vel> 3000) { A = 0.0171422231434847; M = 1.27907168025204; }
|
||||
else if (vel> 1470) { A = 2.33355948302505e-03; M = 1.52693913274526; }
|
||||
else if (vel> 1260) { A = 7.97592111627665e-04; M = 1.67688974440324; }
|
||||
else if (vel> 1110) { A = 5.71086414289273e-12; M = 4.3212826264889; }
|
||||
else if (vel> 960) { A = 3.02865108244904e-17; M = 5.99074203776707; }
|
||||
else if (vel> 670) { A = 7.52285155782535e-06; M = 2.1738019851075; }
|
||||
else if (vel> 540) { A = 1.31766281225189e-05; M = 2.08774690257991; }
|
||||
else if (vel> 0) { A = 1.34504843776525e-05; M = 2.08702306738884; }
|
||||
break;
|
||||
|
||||
case 8:
|
||||
if (vel> 3571) { A = .0112263766252305; M = 1.33207346655961; }
|
||||
else if (vel> 1841) { A = .0167252613732636; M = 1.28662041261785; }
|
||||
else if (vel> 1120) { A = 2.20172456619625e-03; M = 1.55636358091189; }
|
||||
else if (vel> 1088) { A = 2.0538037167098e-16; M = 5.80410776994789; }
|
||||
else if (vel> 976) { A = 5.92182174254121e-12; M = 4.29275576134191; }
|
||||
else if (vel> 0) { A = 4.3917343795117e-05; M = 1.99978116283334; }
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
if (A != -1 && M != -1 && vel > 0 && vel < 10000) {
|
||||
val = A * pow(vel, M) / DragCoefficient;
|
||||
val = val / 3.2808399;
|
||||
return val;
|
||||
for (int i = 0; i < machNumbers[idx].size(); i++) {
|
||||
if (machNumbers[idx][i] >= m) {
|
||||
int previousIdx = std::max(0, i - 1);
|
||||
double previousDragCoefficient = dragCoefficients[idx][previousIdx];
|
||||
double previousMachNumber = machNumbers[idx][previousIdx];
|
||||
double cd = previousDragCoefficient + (dragCoefficients[idx][i] - previousDragCoefficient) * (m - previousMachNumber) / (machNumbers[idx][i] - previousMachNumber);
|
||||
return BC_CONVERSION_FACTOR * (cd / DragCoefficient) * std::pow(Velocity, 2);
|
||||
}
|
||||
}
|
||||
|
||||
return 0.0;
|
||||
@ -309,7 +230,7 @@ double calculateZeroAngle(double zeroRange, double muzzleVelocity, double boreHe
|
||||
|
||||
v = std::sqrt(vx*vx + vy*vy);
|
||||
|
||||
double retard = calculateRetard(dragModel, ballisticCoefficient, v);
|
||||
double retard = calculateRetard(dragModel, ballisticCoefficient, v, SPEED_OF_SOUND_AT_15C);
|
||||
double ax = vx / v * -retard;
|
||||
double ay = vy / v * -retard;
|
||||
ax += gx;
|
||||
@ -366,13 +287,15 @@ void __stdcall RVExtension(char *output, int outputSize, const char *function)
|
||||
double ballisticCoefficient = 1.0;
|
||||
int dragModel = 1;
|
||||
double velocity = 0.0;
|
||||
double temperature = 15.0;
|
||||
double retard = 0.0;
|
||||
|
||||
dragModel = strtol(strtok_s(NULL, ":", &next_token), NULL, 10);
|
||||
ballisticCoefficient = strtod(strtok_s(NULL, ":", &next_token), NULL);
|
||||
velocity = strtod(strtok_s(NULL, ":", &next_token), NULL);
|
||||
temperature = strtod(strtok_s(NULL, ":", &next_token), NULL);
|
||||
|
||||
retard = calculateRetard(dragModel, ballisticCoefficient, velocity);
|
||||
retard = calculateRetard(dragModel, ballisticCoefficient, velocity, SPEED_OF_SOUND(temperature));
|
||||
// int n = sprintf(output, "%f", retard);
|
||||
|
||||
outputStr << retard;
|
||||
@ -460,7 +383,6 @@ void __stdcall RVExtension(char *output, int outputSize, const char *function)
|
||||
humidity = strtod(strtok_s(NULL, ":", &next_token), NULL);
|
||||
overcast = strtod(strtok_s(NULL, ":", &next_token), NULL);
|
||||
tickTime = strtod(strtok_s(NULL, ":", &next_token), NULL);
|
||||
tickTime += strtod(strtok_s(NULL, ":", &next_token), NULL);
|
||||
|
||||
while (index >= bulletDatabase.size()) {
|
||||
Bullet bullet;
|
||||
@ -476,6 +398,7 @@ void __stdcall RVExtension(char *output, int outputSize, const char *function)
|
||||
bulletDatabase[index].twistDirection = twistDirection;
|
||||
bulletDatabase[index].transonicStabilityCoef = transonicStabilityCoef;
|
||||
bulletDatabase[index].muzzleVelocity = muzzleVelocity;
|
||||
bulletDatabase[index].bulletSpeed = muzzleVelocity;
|
||||
bulletDatabase[index].origin = origin;
|
||||
bulletDatabase[index].latitude = latitude / 180 * M_PI;
|
||||
bulletDatabase[index].temperature = temperature;
|
||||
@ -522,7 +445,6 @@ void __stdcall RVExtension(char *output, int outputSize, const char *function)
|
||||
wind[2] = strtod(strtok_s(NULL, ",", &token), NULL);
|
||||
heightAGL = strtod(strtok_s(NULL, ":", &next_token), NULL);
|
||||
tickTime = strtod(strtok_s(NULL, ":", &next_token), NULL);
|
||||
tickTime += strtod(strtok_s(NULL, ":", &next_token), NULL);
|
||||
|
||||
if (bulletDatabase[index].randSeed == 0) {
|
||||
int angle = (int)round(atan2(velocity[0], velocity[1]) * 360 / M_PI);
|
||||
@ -545,24 +467,18 @@ void __stdcall RVExtension(char *output, int outputSize, const char *function)
|
||||
double drag = 0.0;
|
||||
double accelRef[3] = { 0.0, 0.0, 0.0 };
|
||||
double accel[3] = { 0.0, 0.0, 0.0 };
|
||||
double TOF = 0.0;
|
||||
double deltaT = 0.0;
|
||||
double bulletSpeed;
|
||||
double TOF = tickTime - bulletDatabase[index].startTime;
|
||||
double deltaT = tickTime - bulletDatabase[index].lastFrame;
|
||||
double trueVelocity[3] = { 0.0, 0.0, 0.0 };
|
||||
double trueSpeed = 0.0;
|
||||
double temperature = 0.0;
|
||||
double pressure = 1013.25;
|
||||
double temperature = bulletDatabase[index].temperature - 0.0065 * position[2];
|
||||
double pressure = (1013.25 - 10 * bulletDatabase[index].overcast) * pow(1 - (0.0065 * (bulletDatabase[index].altitude + position[2])) / (KELVIN(temperature) + 0.0065 * bulletDatabase[index].altitude), 5.255754495);
|
||||
double windSpeed = 0.0;
|
||||
double windAttenuation = 1.0;
|
||||
double velocityOffset[3] = { 0.0, 0.0, 0.0 };
|
||||
|
||||
TOF = tickTime - bulletDatabase[index].startTime;
|
||||
|
||||
deltaT = tickTime - bulletDatabase[index].lastFrame;
|
||||
bulletDatabase[index].lastFrame = tickTime;
|
||||
|
||||
bulletSpeed = sqrt(pow(velocity[0], 2) + pow(velocity[1], 2) + pow(velocity[2], 2));
|
||||
|
||||
windSpeed = sqrt(pow(wind[0], 2) + pow(wind[1], 2) + pow(wind[2], 2));
|
||||
if (windSpeed > 0.1) {
|
||||
double windSourceTerrain[3];
|
||||
@ -610,9 +526,7 @@ void __stdcall RVExtension(char *output, int outputSize, const char *function)
|
||||
trueVelocity[2] = velocity[2] - wind[2];
|
||||
trueSpeed = sqrt(pow(trueVelocity[0], 2) + pow(trueVelocity[1], 2) + pow(trueVelocity[2], 2));
|
||||
|
||||
double speedOfSound = 331.3 + (0.6 * temperature);
|
||||
double transonicSpeed = 394 + (0.6 * temperature);
|
||||
if (bulletDatabase[index].transonicStabilityCoef < 1.0f && bulletSpeed < transonicSpeed && bulletSpeed > speedOfSound) {
|
||||
if (bulletDatabase[index].transonicStabilityCoef < 1.0f && trueSpeed - 60 < SPEED_OF_SOUND(temperature) && trueSpeed > SPEED_OF_SOUND(temperature)) {
|
||||
std::uniform_real_distribution<double> distribution(-10.0, 10.0);
|
||||
double coef = 1.0f - bulletDatabase[index].transonicStabilityCoef;
|
||||
|
||||
@ -628,15 +542,12 @@ void __stdcall RVExtension(char *output, int outputSize, const char *function)
|
||||
bulletDatabase[index].bcDegradation *= pow(0.993, coef);
|
||||
};
|
||||
|
||||
temperature = bulletDatabase[index].temperature - 0.0065 * position[2];
|
||||
pressure = (1013.25 - 10 * bulletDatabase[index].overcast) * pow(1 - (0.0065 * (bulletDatabase[index].altitude + position[2])) / (273.15 + temperature + 0.0065 * bulletDatabase[index].altitude), 5.255754495);
|
||||
|
||||
if (bulletDatabase[index].ballisticCoefficients.size() == bulletDatabase[index].velocityBoundaries.size() + 1) {
|
||||
dragRef = deltaT * bulletDatabase[index].airFriction * bulletSpeed * bulletSpeed;
|
||||
dragRef = deltaT * bulletDatabase[index].airFriction * bulletDatabase[index].bulletSpeed * bulletDatabase[index].bulletSpeed;
|
||||
|
||||
accelRef[0] = (velocity[0] / bulletSpeed) * dragRef;
|
||||
accelRef[1] = (velocity[1] / bulletSpeed) * dragRef;
|
||||
accelRef[2] = (velocity[2] / bulletSpeed) * dragRef;
|
||||
accelRef[0] = (velocity[0] / bulletDatabase[index].bulletSpeed) * dragRef;
|
||||
accelRef[1] = (velocity[1] / bulletDatabase[index].bulletSpeed) * dragRef;
|
||||
accelRef[2] = (velocity[2] / bulletDatabase[index].bulletSpeed) * dragRef;
|
||||
|
||||
velocityOffset[0] -= accelRef[0];
|
||||
velocityOffset[1] -= accelRef[1];
|
||||
@ -644,7 +555,7 @@ void __stdcall RVExtension(char *output, int outputSize, const char *function)
|
||||
|
||||
ballisticCoefficient = bulletDatabase[index].ballisticCoefficients[0];
|
||||
for (int i = (int)bulletDatabase[index].velocityBoundaries.size() - 1; i >= 0; i = i - 1) {
|
||||
if (bulletSpeed < bulletDatabase[index].velocityBoundaries[i]) {
|
||||
if (trueSpeed < bulletDatabase[index].velocityBoundaries[i]) {
|
||||
ballisticCoefficient = bulletDatabase[index].ballisticCoefficients[i + 1];
|
||||
break;
|
||||
}
|
||||
@ -652,7 +563,7 @@ void __stdcall RVExtension(char *output, int outputSize, const char *function)
|
||||
|
||||
ballisticCoefficient = calculateAtmosphericCorrection(ballisticCoefficient, temperature, pressure, bulletDatabase[index].humidity, bulletDatabase[index].atmosphereModel);
|
||||
ballisticCoefficient *= bulletDatabase[index].bcDegradation;
|
||||
drag = deltaT * calculateRetard(bulletDatabase[index].dragModel, ballisticCoefficient, trueSpeed);
|
||||
drag = deltaT * calculateRetard(bulletDatabase[index].dragModel, ballisticCoefficient, trueSpeed, SPEED_OF_SOUND(temperature));
|
||||
accel[0] = (trueVelocity[0] / trueSpeed) * drag;
|
||||
accel[1] = (trueVelocity[1] / trueSpeed) * drag;
|
||||
accel[2] = (trueVelocity[2] / trueSpeed) * drag;
|
||||
@ -665,11 +576,11 @@ void __stdcall RVExtension(char *output, int outputSize, const char *function)
|
||||
double airFriction = bulletDatabase[index].airFriction * airDensity / STD_AIR_DENSITY_ICAO;
|
||||
|
||||
if (airFriction != bulletDatabase[index].airFriction || windSpeed > 0) {
|
||||
dragRef = deltaT * bulletDatabase[index].airFriction * bulletSpeed * bulletSpeed;
|
||||
dragRef = deltaT * bulletDatabase[index].airFriction * bulletDatabase[index].bulletSpeed * bulletDatabase[index].bulletSpeed;
|
||||
|
||||
accelRef[0] = (velocity[0] / bulletSpeed) * dragRef;
|
||||
accelRef[1] = (velocity[1] / bulletSpeed) * dragRef;
|
||||
accelRef[2] = (velocity[2] / bulletSpeed) * dragRef;
|
||||
accelRef[0] = (velocity[0] / bulletDatabase[index].bulletSpeed) * dragRef;
|
||||
accelRef[1] = (velocity[1] / bulletDatabase[index].bulletSpeed) * dragRef;
|
||||
accelRef[2] = (velocity[2] / bulletDatabase[index].bulletSpeed) * dragRef;
|
||||
|
||||
velocityOffset[0] -= accelRef[0];
|
||||
velocityOffset[1] -= accelRef[1];
|
||||
@ -688,11 +599,11 @@ void __stdcall RVExtension(char *output, int outputSize, const char *function)
|
||||
|
||||
if (TOF > 0) {
|
||||
double bulletDir = atan2(velocity[0], velocity[1]);
|
||||
double r1 = pow(TOF - deltaT, 0.17);
|
||||
double r2 = pow(TOF, 0.17);
|
||||
double spinAccel = bulletDatabase[index].twistDirection * (0.0482251 * (bulletDatabase[index].stabilityFactor + 1.2)) / ((r1 + r2) / 2.0f);
|
||||
velocityOffset[0] += sin(bulletDir + M_PI / 2) * spinAccel * deltaT;
|
||||
velocityOffset[1] += cos(bulletDir + M_PI / 2) * spinAccel * deltaT;
|
||||
double driftAccel = bulletDatabase[index].twistDirection * (0.0482251 * (bulletDatabase[index].stabilityFactor + 1.2)) / pow(TOF, 0.17);
|
||||
double driftVelocity = 0.0581025 *(bulletDatabase[index].stabilityFactor + 1.2) * pow(TOF, 0.83);
|
||||
double dragCorrection = (driftVelocity / trueSpeed) * drag;
|
||||
velocityOffset[0] += sin(bulletDir + M_PI / 2) * (driftAccel * deltaT + dragCorrection);
|
||||
velocityOffset[1] += cos(bulletDir + M_PI / 2) * (driftAccel * deltaT + dragCorrection);
|
||||
}
|
||||
|
||||
double lat = bulletDatabase[index].latitude;
|
||||
@ -704,6 +615,11 @@ void __stdcall RVExtension(char *output, int outputSize, const char *function)
|
||||
velocityOffset[1] += accel[1] * deltaT;
|
||||
velocityOffset[2] += accel[2] * deltaT;
|
||||
|
||||
velocity[0] += velocityOffset[0];
|
||||
velocity[1] += velocityOffset[1];
|
||||
velocity[2] += velocityOffset[2];
|
||||
bulletDatabase[index].bulletSpeed = sqrt(pow(velocity[0], 2) + pow(velocity[1], 2) + pow(velocity[2], 2));
|
||||
|
||||
outputStr << "[" << velocityOffset[0] << "," << velocityOffset[1] << "," << velocityOffset[2] << "]";
|
||||
strncpy_s(output, outputSize, outputStr.str().c_str(), _TRUNCATE);
|
||||
EXTENSION_RETURN();
|
||||
|
@ -2,359 +2,359 @@
|
||||
Ammo Class: B_556x45_Ball
|
||||
MaxRanges (m): [300, 500, 500]
|
||||
MuzzleVelocities (m/s): [750, 870, 910]
|
||||
Max. velocity difference (m/s): 25.51
|
||||
Max. drop difference (cm): 2.05
|
||||
Max. tof difference (ms): 10.0
|
||||
Optimal airFriction: 0.00126466
|
||||
Max. Velocity diff (m/s): 26.68
|
||||
Max. Drop diff (cm): 1.98
|
||||
Max. Tof diff (ms): 10.5
|
||||
Optimal airFriction: 0.00130094
|
||||
##########################################
|
||||
Ammo Class: ACE_556x45_Ball_Mk262
|
||||
MaxRanges (m): [600, 600]
|
||||
MuzzleVelocities (m/s): [810, 840]
|
||||
Max. velocity difference (m/s): 14.9
|
||||
Max. drop difference (cm): 2.67
|
||||
Max. tof difference (ms): 10.0
|
||||
Optimal airFriction: 0.00109563
|
||||
Max. Velocity diff (m/s): 14.67
|
||||
Max. Drop diff (cm): 2.58
|
||||
Max. Tof diff (ms): 10.5
|
||||
Optimal airFriction: 0.00111805
|
||||
##########################################
|
||||
Ammo Class: ACE_556x45_Ball_Mk318
|
||||
MaxRanges (m): [300, 500, 500]
|
||||
MuzzleVelocities (m/s): [780, 880, 950]
|
||||
Max. velocity difference (m/s): 20.86
|
||||
Max. drop difference (cm): 2.29
|
||||
Max. tof difference (ms): 9.0
|
||||
Optimal airFriction: 0.00123318
|
||||
Max. Velocity diff (m/s): 21.13
|
||||
Max. Drop diff (cm): 2.06
|
||||
Max. Tof diff (ms): 9.5
|
||||
Optimal airFriction: 0.0012588
|
||||
##########################################
|
||||
Ammo Class: ACE_556x45_Ball_M995_AP
|
||||
MaxRanges (m): [400, 500]
|
||||
MuzzleVelocities (m/s): [820, 880]
|
||||
Max. velocity difference (m/s): 17.92
|
||||
Max. drop difference (cm): 1.25
|
||||
Max. tof difference (ms): 7.0
|
||||
Optimal airFriction: 0.00123272
|
||||
Max. Velocity diff (m/s): 17.28
|
||||
Max. Drop diff (cm): 1.04
|
||||
Max. Tof diff (ms): 6.0
|
||||
Optimal airFriction: 0.00126182
|
||||
##########################################
|
||||
Ammo Class: B_545x39_Ball_F
|
||||
MaxRanges (m): [400, 500]
|
||||
MuzzleVelocities (m/s): [735, 892]
|
||||
Max. velocity difference (m/s): 23.07
|
||||
Max. drop difference (cm): 3.76
|
||||
Max. tof difference (ms): 12.0
|
||||
Optimal airFriction: 0.00116278
|
||||
Max. Velocity diff (m/s): 23.85
|
||||
Max. Drop diff (cm): 3.61
|
||||
Max. Tof diff (ms): 12.0
|
||||
Optimal airFriction: 0.00119458
|
||||
##########################################
|
||||
Ammo Class: B_580x42_Ball_F
|
||||
MaxRanges (m): [500, 500]
|
||||
MuzzleVelocities (m/s): [930, 970]
|
||||
Max. velocity difference (m/s): 24.7
|
||||
Max. drop difference (cm): 1.51
|
||||
Max. tof difference (ms): 8.0
|
||||
Optimal airFriction: 0.00117956
|
||||
Max. Velocity diff (m/s): 25.65
|
||||
Max. Drop diff (cm): 1.46
|
||||
Max. Tof diff (ms): 8.5
|
||||
Optimal airFriction: 0.00121087
|
||||
##########################################
|
||||
Ammo Class: B_65x39_Caseless
|
||||
MaxRanges (m): [400, 800, 800]
|
||||
MuzzleVelocities (m/s): [730, 800, 830]
|
||||
Max. velocity difference (m/s): 22.17
|
||||
Max. drop difference (cm): 4.83
|
||||
Max. tof difference (ms): 16.0
|
||||
Optimal airFriction: 0.00075308
|
||||
Max. Velocity diff (m/s): 23.49
|
||||
Max. Drop diff (cm): 4.59
|
||||
Max. Tof diff (ms): 16.5
|
||||
Optimal airFriction: 0.00077363
|
||||
##########################################
|
||||
Ammo Class: ACE_65x47_Ball_Scenar
|
||||
MaxRanges (m): [500, 800]
|
||||
MuzzleVelocities (m/s): [730, 830]
|
||||
Max. velocity difference (m/s): 16.94
|
||||
Max. drop difference (cm): 2.67
|
||||
Max. tof difference (ms): 9.0
|
||||
Optimal airFriction: 0.00067037
|
||||
Max. Velocity diff (m/s): 17.09
|
||||
Max. Drop diff (cm): 2.41
|
||||
Max. Tof diff (ms): 8.0
|
||||
Optimal airFriction: 0.00069003
|
||||
##########################################
|
||||
Ammo Class: ACE_65_Creedmor_Ball
|
||||
MaxRanges (m): [600, 1000]
|
||||
MuzzleVelocities (m/s): [750, 860]
|
||||
Max. velocity difference (m/s): 21.08
|
||||
Max. drop difference (cm): 4.29
|
||||
Max. tof difference (ms): 14.0
|
||||
Optimal airFriction: 0.00060887
|
||||
Max. Velocity diff (m/s): 22.99
|
||||
Max. Drop diff (cm): 3.82
|
||||
Max. Tof diff (ms): 16.0
|
||||
Optimal airFriction: 0.00062437
|
||||
##########################################
|
||||
Ammo Class: B_762x51_Ball
|
||||
MaxRanges (m): [500, 800]
|
||||
MuzzleVelocities (m/s): [700, 833]
|
||||
Max. velocity difference (m/s): 27.7
|
||||
Max. drop difference (cm): 6.71
|
||||
Max. tof difference (ms): 23.0
|
||||
Optimal airFriction: 0.00100957
|
||||
Max. Velocity diff (m/s): 29.78
|
||||
Max. Drop diff (cm): 6.24
|
||||
Max. Tof diff (ms): 26.0
|
||||
Optimal airFriction: 0.00103711
|
||||
##########################################
|
||||
Ammo Class: ACE_762x51_Ball_M118LR
|
||||
MaxRanges (m): [600, 800]
|
||||
MuzzleVelocities (m/s): [750, 795]
|
||||
Max. velocity difference (m/s): 23.28
|
||||
Max. drop difference (cm): 3.65
|
||||
Max. tof difference (ms): 17.0
|
||||
Optimal airFriction: 0.00082828
|
||||
Max. Velocity diff (m/s): 24.95
|
||||
Max. Drop diff (cm): 3.64
|
||||
Max. Tof diff (ms): 18.0
|
||||
Optimal airFriction: 0.00085157
|
||||
##########################################
|
||||
Ammo Class: ACE_762x51_Ball_Mk316_Mod_0
|
||||
MaxRanges (m): [600, 800]
|
||||
MuzzleVelocities (m/s): [780, 810]
|
||||
Max. velocity difference (m/s): 23.39
|
||||
Max. drop difference (cm): 3.25
|
||||
Max. tof difference (ms): 16.0
|
||||
Optimal airFriction: 0.00082029
|
||||
Max. Velocity diff (m/s): 25.0
|
||||
Max. Drop diff (cm): 3.31
|
||||
Max. Tof diff (ms): 17.0
|
||||
Optimal airFriction: 0.00084311
|
||||
##########################################
|
||||
Ammo Class: ACE_762x51_Ball_Mk319_Mod_0
|
||||
MaxRanges (m): [600, 800]
|
||||
MuzzleVelocities (m/s): [840, 910]
|
||||
Max. velocity difference (m/s): 19.18
|
||||
Max. drop difference (cm): 3.9
|
||||
Max. tof difference (ms): 17.0
|
||||
Optimal airFriction: 0.00102338
|
||||
Max. Velocity diff (m/s): 18.56
|
||||
Max. Drop diff (cm): 3.74
|
||||
Max. Tof diff (ms): 17.0
|
||||
Optimal airFriction: 0.00104515
|
||||
##########################################
|
||||
Ammo Class: ACE_762x51_Ball_M993_AP
|
||||
MaxRanges (m): [600, 800]
|
||||
MuzzleVelocities (m/s): [875, 930]
|
||||
Max. velocity difference (m/s): 19.39
|
||||
Max. drop difference (cm): 4.08
|
||||
Max. tof difference (ms): 18.0
|
||||
Optimal airFriction: 0.00107148
|
||||
Max. Velocity diff (m/s): 18.62
|
||||
Max. Drop diff (cm): 4.03
|
||||
Max. Tof diff (ms): 18.0
|
||||
Optimal airFriction: 0.0010939
|
||||
##########################################
|
||||
Ammo Class: ACE_30_06_M1_Ball
|
||||
MaxRanges (m): [600, 800, 900]
|
||||
MuzzleVelocities (m/s): [700, 800, 840]
|
||||
Max. velocity difference (m/s): 14.56
|
||||
Max. drop difference (cm): 7.89
|
||||
Max. tof difference (ms): 15.0
|
||||
Optimal airFriction: 0.000809
|
||||
Max. Velocity diff (m/s): 14.2
|
||||
Max. Drop diff (cm): 7.95
|
||||
Max. Tof diff (ms): 15.0
|
||||
Optimal airFriction: 0.00082645
|
||||
##########################################
|
||||
Ammo Class: ACE_7_Remington_Magnum_Ball
|
||||
MaxRanges (m): [600, 800, 1000]
|
||||
MuzzleVelocities (m/s): [720, 812, 830]
|
||||
Max. velocity difference (m/s): 17.47
|
||||
Max. drop difference (cm): 4.54
|
||||
Max. tof difference (ms): 11.0
|
||||
Optimal airFriction: 0.00056738
|
||||
Max. Velocity diff (m/s): 18.9
|
||||
Max. Drop diff (cm): 4.03
|
||||
Max. Tof diff (ms): 11.5
|
||||
Optimal airFriction: 0.00058198
|
||||
##########################################
|
||||
Ammo Class: ACE_243_Winchester_Ball
|
||||
MaxRanges (m): [700, 900, 900]
|
||||
MuzzleVelocities (m/s): [830, 900, 920]
|
||||
Max. velocity difference (m/s): 22.55
|
||||
Max. drop difference (cm): 4.78
|
||||
Max. tof difference (ms): 13.0
|
||||
Optimal airFriction: 0.00067875
|
||||
Max. Velocity diff (m/s): 23.53
|
||||
Max. Drop diff (cm): 4.62
|
||||
Max. Tof diff (ms): 13.5
|
||||
Optimal airFriction: 0.00069778
|
||||
##########################################
|
||||
Ammo Class: ACE_762x67_Ball_Mk248_Mod_0
|
||||
MaxRanges (m): [800, 900, 900]
|
||||
MuzzleVelocities (m/s): [865, 900, 924]
|
||||
Max. velocity difference (m/s): 24.43
|
||||
Max. drop difference (cm): 5.17
|
||||
Max. tof difference (ms): 15.0
|
||||
Optimal airFriction: 0.0007053
|
||||
Max. Velocity diff (m/s): 25.84
|
||||
Max. Drop diff (cm): 5.03
|
||||
Max. Tof diff (ms): 16.0
|
||||
Optimal airFriction: 0.00072468
|
||||
##########################################
|
||||
Ammo Class: ACE_762x67_Ball_Mk248_Mod_1
|
||||
MaxRanges (m): [800, 900, 900]
|
||||
MuzzleVelocities (m/s): [847, 867, 877]
|
||||
Max. velocity difference (m/s): 20.16
|
||||
Max. drop difference (cm): 2.99
|
||||
Max. tof difference (ms): 12.0
|
||||
Optimal airFriction: 0.00061188
|
||||
Max. Velocity diff (m/s): 20.18
|
||||
Max. Drop diff (cm): 2.7
|
||||
Max. Tof diff (ms): 11.5
|
||||
Optimal airFriction: 0.00063027
|
||||
##########################################
|
||||
Ammo Class: ACE_762x67_Ball_Berger_Hybrid_OTM
|
||||
MaxRanges (m): [900, 1000, 1000]
|
||||
MuzzleVelocities (m/s): [800, 853, 884]
|
||||
Max. velocity difference (m/s): 19.65
|
||||
Max. drop difference (cm): 8.25
|
||||
Max. tof difference (ms): 16.0
|
||||
Optimal airFriction: 0.00053733
|
||||
Max. Velocity diff (m/s): 19.94
|
||||
Max. Drop diff (cm): 8.04
|
||||
Max. Tof diff (ms): 16.0
|
||||
Optimal airFriction: 0.00055262
|
||||
##########################################
|
||||
Ammo Class: B_762x54_Ball
|
||||
MaxRanges (m): [500, 800, 800]
|
||||
MuzzleVelocities (m/s): [700, 820, 833]
|
||||
Max. velocity difference (m/s): 14.61
|
||||
Max. drop difference (cm): 5.74
|
||||
Max. tof difference (ms): 15.0
|
||||
Optimal airFriction: 0.00100023
|
||||
Max. Velocity diff (m/s): 13.84
|
||||
Max. Drop diff (cm): 5.42
|
||||
Max. Tof diff (ms): 12.5
|
||||
Optimal airFriction: 0.00102329
|
||||
##########################################
|
||||
Ammo Class: ACE_762x35_Ball
|
||||
MaxRanges (m): [400, 500]
|
||||
MuzzleVelocities (m/s): [620, 675]
|
||||
Max. velocity difference (m/s): 4.17
|
||||
Max. drop difference (cm): 1.71
|
||||
Max. tof difference (ms): 4.0
|
||||
Optimal airFriction: 0.00128942
|
||||
Max. Velocity diff (m/s): 3.68
|
||||
Max. Drop diff (cm): 1.54
|
||||
Max. Tof diff (ms): 3.5
|
||||
Optimal airFriction: 0.00131689
|
||||
##########################################
|
||||
Ammo Class: ACE_762x39_Ball
|
||||
MaxRanges (m): [400, 600]
|
||||
MuzzleVelocities (m/s): [650, 750]
|
||||
Max. velocity difference (m/s): 13.0
|
||||
Max. drop difference (cm): 3.78
|
||||
Max. tof difference (ms): 8.0
|
||||
Optimal airFriction: 0.00151621
|
||||
Max. Velocity diff (m/s): 15.54
|
||||
Max. Drop diff (cm): 3.92
|
||||
Max. Tof diff (ms): 8.5
|
||||
Optimal airFriction: 0.00154815
|
||||
##########################################
|
||||
Ammo Class: ACE_762x54_Ball_7T2
|
||||
MaxRanges (m): [500, 800, 800]
|
||||
MuzzleVelocities (m/s): [680, 750, 800]
|
||||
Max. velocity difference (m/s): 9.79
|
||||
Max. drop difference (cm): 7.89
|
||||
Max. tof difference (ms): 11.0
|
||||
Optimal airFriction: 0.00103989
|
||||
Max. Velocity diff (m/s): 9.37
|
||||
Max. Drop diff (cm): 7.72
|
||||
Max. Tof diff (ms): 9.5
|
||||
Optimal airFriction: 0.00106104
|
||||
##########################################
|
||||
Ammo Class: ACE_303_Ball
|
||||
MaxRanges (m): [900, 1000]
|
||||
MuzzleVelocities (m/s): [748, 765]
|
||||
Max. velocity difference (m/s): 7.24
|
||||
Max. drop difference (cm): 5.65
|
||||
Max. tof difference (ms): 11.0
|
||||
Optimal airFriction: 0.0008349
|
||||
Max. Velocity diff (m/s): 6.94
|
||||
Max. Drop diff (cm): 5.32
|
||||
Max. Tof diff (ms): 10.5
|
||||
Optimal airFriction: 0.00085117
|
||||
##########################################
|
||||
Ammo Class: B_93x64_Ball
|
||||
MaxRanges (m): [900, 1000]
|
||||
MuzzleVelocities (m/s): [850, 880]
|
||||
Max. velocity difference (m/s): 11.18
|
||||
Max. drop difference (cm): 9.08
|
||||
Max. tof difference (ms): 15.0
|
||||
Optimal airFriction: 0.00108571
|
||||
Max. Velocity diff (m/s): 12.89
|
||||
Max. Drop diff (cm): 8.75
|
||||
Max. Tof diff (ms): 13.5
|
||||
Optimal airFriction: 0.00110727
|
||||
##########################################
|
||||
Ammo Class: B_408_Ball
|
||||
MaxRanges (m): [1600, 1600]
|
||||
MuzzleVelocities (m/s): [862, 872]
|
||||
Max. velocity difference (m/s): 28.15
|
||||
Max. drop difference (cm): 15.97
|
||||
Max. tof difference (ms): 77.0
|
||||
Optimal airFriction: 0.00044958
|
||||
Max. Velocity diff (m/s): 29.95
|
||||
Max. Drop diff (cm): 17.04
|
||||
Max. Tof diff (ms): 41.5
|
||||
Optimal airFriction: 0.00046249
|
||||
##########################################
|
||||
Ammo Class: ACE_408_Ball
|
||||
MaxRanges (m): [1200, 1200]
|
||||
MuzzleVelocities (m/s): [1057, 1067]
|
||||
Max. velocity difference (m/s): 37.45
|
||||
Max. drop difference (cm): 7.45
|
||||
Max. tof difference (ms): 56.0
|
||||
Optimal airFriction: 0.00063655
|
||||
Max. Velocity diff (m/s): 39.19
|
||||
Max. Drop diff (cm): 7.92
|
||||
Max. Tof diff (ms): 30.0
|
||||
Optimal airFriction: 0.00065414
|
||||
##########################################
|
||||
Ammo Class: ACE_106x83mm_Ball
|
||||
MaxRanges (m): [1400, 1400]
|
||||
MaxRanges (m): [1500, 1500]
|
||||
MuzzleVelocities (m/s): [955, 965]
|
||||
Max. velocity difference (m/s): 23.44
|
||||
Max. drop difference (cm): 8.93
|
||||
Max. tof difference (ms): 25.0
|
||||
Optimal airFriction: 0.00052047
|
||||
Max. Velocity diff (m/s): 23.14
|
||||
Max. Drop diff (cm): 12.44
|
||||
Max. Tof diff (ms): 31.5
|
||||
Optimal airFriction: 0.0005354
|
||||
##########################################
|
||||
Ammo Class: B_338_Ball
|
||||
MaxRanges (m): [1100, 1300]
|
||||
MuzzleVelocities (m/s): [880, 925]
|
||||
Max. velocity difference (m/s): 31.95
|
||||
Max. drop difference (cm): 9.97
|
||||
Max. tof difference (ms): 33.0
|
||||
Optimal airFriction: 0.00059133
|
||||
Max. Velocity diff (m/s): 33.76
|
||||
Max. Drop diff (cm): 10.17
|
||||
Max. Tof diff (ms): 35.0
|
||||
Optimal airFriction: 0.00060841
|
||||
##########################################
|
||||
Ammo Class: B_338_NM_Ball
|
||||
MaxRanges (m): [1100, 1300]
|
||||
MuzzleVelocities (m/s): [790, 820]
|
||||
Max. velocity difference (m/s): 24.5
|
||||
Max. drop difference (cm): 8.87
|
||||
Max. tof difference (ms): 27.0
|
||||
Optimal airFriction: 0.00052201
|
||||
Max. Velocity diff (m/s): 26.43
|
||||
Max. Drop diff (cm): 9.16
|
||||
Max. Tof diff (ms): 30.0
|
||||
Optimal airFriction: 0.00053639
|
||||
##########################################
|
||||
Ammo Class: ACE_338_Ball
|
||||
MaxRanges (m): [1200, 1300]
|
||||
MuzzleVelocities (m/s): [800, 830]
|
||||
Max. velocity difference (m/s): 23.06
|
||||
Max. drop difference (cm): 11.27
|
||||
Max. tof difference (ms): 25.0
|
||||
Optimal airFriction: 0.0005219
|
||||
Max. Velocity diff (m/s): 24.93
|
||||
Max. Drop diff (cm): 10.92
|
||||
Max. Tof diff (ms): 27.0
|
||||
Optimal airFriction: 0.00053585
|
||||
##########################################
|
||||
Ammo Class: ACE_338_Ball_API526
|
||||
MaxRanges (m): [1200, 1300]
|
||||
MuzzleVelocities (m/s): [880, 920]
|
||||
Max. velocity difference (m/s): 17.05
|
||||
Max. drop difference (cm): 14.52
|
||||
Max. tof difference (ms): 29.0
|
||||
Optimal airFriction: 0.00069611
|
||||
Max. Velocity diff (m/s): 36.03
|
||||
Max. Drop diff (cm): 18.88
|
||||
Max. Tof diff (ms): 46.0
|
||||
Optimal airFriction: 0.0006922
|
||||
##########################################
|
||||
Ammo Class: B_50BW_Ball_F
|
||||
MaxRanges (m): [300, 400]
|
||||
MuzzleVelocities (m/s): [510, 596]
|
||||
Max. velocity difference (m/s): 29.6
|
||||
Max. drop difference (cm): 2.19
|
||||
Max. tof difference (ms): 18.0
|
||||
Optimal airFriction: 0.00202645
|
||||
Max. Velocity diff (m/s): 30.87
|
||||
Max. Drop diff (cm): 2.32
|
||||
Max. Tof diff (ms): 19.0
|
||||
Optimal airFriction: 0.00205896
|
||||
##########################################
|
||||
Ammo Class: B_127x99_Ball
|
||||
MaxRanges (m): [1300, 1300]
|
||||
MuzzleVelocities (m/s): [895, 905]
|
||||
Max. velocity difference (m/s): 19.44
|
||||
Max. drop difference (cm): 9.36
|
||||
Max. tof difference (ms): 24.0
|
||||
Optimal airFriction: 0.00057503
|
||||
Max. Velocity diff (m/s): 19.23
|
||||
Max. Drop diff (cm): 9.4
|
||||
Max. Tof diff (ms): 25.0
|
||||
Optimal airFriction: 0.00058679
|
||||
##########################################
|
||||
Ammo Class: ACE_127x99_Ball_AMAX
|
||||
MaxRanges (m): [1600, 1600]
|
||||
MuzzleVelocities (m/s): [855, 865]
|
||||
Max. velocity difference (m/s): 16.61
|
||||
Max. drop difference (cm): 9.1
|
||||
Max. tof difference (ms): 20.0
|
||||
Optimal airFriction: 0.00036645
|
||||
Max. Velocity diff (m/s): 16.89
|
||||
Max. Drop diff (cm): 8.95
|
||||
Max. Tof diff (ms): 21.0
|
||||
Optimal airFriction: 0.00037397
|
||||
##########################################
|
||||
Ammo Class: B_127x108_Ball
|
||||
MaxRanges (m): [1300, 1300]
|
||||
MuzzleVelocities (m/s): [815, 825]
|
||||
Max. velocity difference (m/s): 10.66
|
||||
Max. drop difference (cm): 11.74
|
||||
Max. tof difference (ms): 22.0
|
||||
Optimal airFriction: 0.000638
|
||||
Max. Velocity diff (m/s): 10.11
|
||||
Max. Drop diff (cm): 11.57
|
||||
Max. Tof diff (ms): 21.0
|
||||
Optimal airFriction: 0.00065098
|
||||
##########################################
|
||||
Ammo Class: ACE_762x51_Ball_Subsonic
|
||||
MaxRanges (m): [200, 300]
|
||||
MuzzleVelocities (m/s): [305, 340]
|
||||
Max. velocity difference (m/s): 7.92
|
||||
Max. drop difference (cm): 3.77
|
||||
Max. tof difference (ms): 9.0
|
||||
Optimal airFriction: 0.00049899
|
||||
Max. Velocity diff (m/s): 11.63
|
||||
Max. Drop diff (cm): 6.03
|
||||
Max. Tof diff (ms): 14.0
|
||||
Optimal airFriction: 0.00060194
|
||||
##########################################
|
||||
Ammo Class: B_9x21_Ball
|
||||
MaxRanges (m): [200, 300]
|
||||
MuzzleVelocities (m/s): [380, 420]
|
||||
Max. velocity difference (m/s): 34.77
|
||||
Max. drop difference (cm): 4.7
|
||||
Max. tof difference (ms): 31.0
|
||||
Optimal airFriction: 0.00208292
|
||||
Max. Velocity diff (m/s): 35.22
|
||||
Max. Drop diff (cm): 4.66
|
||||
Max. Tof diff (ms): 32.5
|
||||
Optimal airFriction: 0.00211064
|
||||
##########################################
|
||||
Ammo Class: ACE_9x18_Ball_57N181S
|
||||
MaxRanges (m): [100, 200, 200]
|
||||
MuzzleVelocities (m/s): [298, 330, 350]
|
||||
Max. velocity difference (m/s): 18.03
|
||||
Max. drop difference (cm): 4.41
|
||||
Max. tof difference (ms): 17.0
|
||||
Optimal airFriction: 0.00190333
|
||||
Max. Velocity diff (m/s): 17.52
|
||||
Max. Drop diff (cm): 4.38
|
||||
Max. Tof diff (ms): 16.5
|
||||
Optimal airFriction: 0.0019192
|
||||
##########################################
|
||||
Ammo Class: ACE_9x19_Ball
|
||||
MaxRanges (m): [100, 200, 200]
|
||||
MuzzleVelocities (m/s): [340, 370, 400]
|
||||
Max. velocity difference (m/s): 23.95
|
||||
Max. drop difference (cm): 3.75
|
||||
Max. tof difference (ms): 17.0
|
||||
Optimal airFriction: 0.0019835
|
||||
Max. Velocity diff (m/s): 24.28
|
||||
Max. Drop diff (cm): 3.82
|
||||
Max. Tof diff (ms): 17.5
|
||||
Optimal airFriction: 0.00201185
|
||||
##########################################
|
||||
Ammo Class: ACE_10x25_Ball
|
||||
MaxRanges (m): [200, 300, 300]
|
||||
MuzzleVelocities (m/s): [360, 400, 430]
|
||||
Max. velocity difference (m/s): 32.8
|
||||
Max. drop difference (cm): 8.8
|
||||
Max. tof difference (ms): 34.0
|
||||
Optimal airFriction: 0.00181928
|
||||
Max. Velocity diff (m/s): 33.1
|
||||
Max. Drop diff (cm): 8.72
|
||||
Max. Tof diff (ms): 34.5
|
||||
Optimal airFriction: 0.00184252
|
||||
##########################################
|
||||
Ammo Class: ACE_765x17_Ball
|
||||
MaxRanges (m): [100, 200, 200]
|
||||
MuzzleVelocities (m/s): [282, 300, 320]
|
||||
Max. velocity difference (m/s): 11.18
|
||||
Max. drop difference (cm): 4.3
|
||||
Max. tof difference (ms): 13.0
|
||||
Optimal airFriction: 0.00163356
|
||||
Max. Velocity diff (m/s): 10.61
|
||||
Max. Drop diff (cm): 4.08
|
||||
Max. Tof diff (ms): 12.5
|
||||
Optimal airFriction: 0.00165214
|
||||
##########################################
|
||||
Ammo Class: B_127x54_Ball
|
||||
MaxRanges (m): [500, 500]
|
||||
MuzzleVelocities (m/s): [295, 305]
|
||||
Max. velocity difference (m/s): 2.28
|
||||
Max. drop difference (cm): 4.52
|
||||
Max. tof difference (ms): 5.0
|
||||
Optimal airFriction: 0.00019268
|
||||
Max. Velocity diff (m/s): 2.24
|
||||
Max. Drop diff (cm): 4.31
|
||||
Max. Tof diff (ms): 5.0
|
||||
Optimal airFriction: 0.00019568
|
||||
##########################################
|
||||
Ammo Class: B_45ACP_Ball
|
||||
MaxRanges (m): [100, 200, 200]
|
||||
MuzzleVelocities (m/s): [230, 250, 285]
|
||||
Max. velocity difference (m/s): 3.5
|
||||
Max. drop difference (cm): 2.99
|
||||
Max. tof difference (ms): 6.0
|
||||
Optimal airFriction: 0.00081221
|
||||
Max. Velocity diff (m/s): 2.9
|
||||
Max. Drop diff (cm): 2.87
|
||||
Max. Tof diff (ms): 5.5
|
||||
Optimal airFriction: 0.00082143
|
||||
|
Loading…
Reference in New Issue
Block a user