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"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
private _aceTimeSecond = floor CBA_missionTime;
|
|
||||||
|
|
||||||
{
|
{
|
||||||
_x params ["_bullet","_caliber","_bulletTraceVisible","_index"];
|
_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,"","",""];
|
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
|
nil
|
||||||
} count +GVAR(allBullets);
|
} count +GVAR(allBullets);
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
TRACE_10("firedEH:",_unit, _weapon, _muzzle, _mode, _ammo, _magazine, _projectile, _vehicle, _gunner, _turret);
|
TRACE_10("firedEH:",_unit, _weapon, _muzzle, _mode, _ammo, _magazine, _projectile, _vehicle, _gunner, _turret);
|
||||||
|
|
||||||
// Parameterization
|
// 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;
|
_abort = false;
|
||||||
|
|
||||||
@ -113,8 +113,7 @@ if (_caliber > 0 && _bulletLength > 0 && _bulletMass > 0 && _barrelTwist > 0) th
|
|||||||
|
|
||||||
GVAR(currentbulletID) = (GVAR(currentbulletID) + 1) % 10000;
|
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, CBA_missionTime toFixed 6];
|
||||||
"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];
|
|
||||||
|
|
||||||
GVAR(allBullets) pushBack [_projectile, _caliber, _bulletTraceVisible, GVAR(currentbulletID)];
|
GVAR(allBullets) pushBack [_projectile, _caliber, _bulletTraceVisible, GVAR(currentbulletID)];
|
||||||
|
|
||||||
|
@ -29,7 +29,8 @@ private _distance = 0;
|
|||||||
while {_velocity > _thresholdVelocity} do {
|
while {_velocity > _thresholdVelocity} do {
|
||||||
private _bc = GVAR(targetSolutionInput) select 14;
|
private _bc = GVAR(targetSolutionInput) select 14;
|
||||||
private _dragModel = GVAR(targetSolutionInput) select 15;
|
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;
|
_distance = _distance + _velocity * __DELTA_T;
|
||||||
_velocity = _velocity - (_drag * __DELTA_T);
|
_velocity = _velocity - (_drag * __DELTA_T);
|
||||||
};
|
};
|
||||||
|
@ -118,7 +118,7 @@ while {_TOF < 15 && (_bulletPos select 1) < _targetRange} do {
|
|||||||
_trueSpeed = vectorMagnitude _trueVelocity;
|
_trueSpeed = vectorMagnitude _trueVelocity;
|
||||||
|
|
||||||
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
|
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);
|
_bulletAccel = (vectorNormalized _trueVelocity) vectorMultiply (-1 * _drag);
|
||||||
} else {
|
} else {
|
||||||
_bulletAccel = _trueVelocity vectorMultiply (_trueSpeed * _airFriction);
|
_bulletAccel = _trueVelocity vectorMultiply (_trueSpeed * _airFriction);
|
||||||
|
@ -51,7 +51,7 @@ GVAR(atmosphereModeTBH) = true;
|
|||||||
GVAR(altitude) = 0;
|
GVAR(altitude) = 0;
|
||||||
GVAR(temperature) = 15;
|
GVAR(temperature) = 15;
|
||||||
GVAR(barometricPressure) = 1013.25;
|
GVAR(barometricPressure) = 1013.25;
|
||||||
GVAR(relativeHumidity) = 0.5;
|
GVAR(relativeHumidity) = 0.0;
|
||||||
|
|
||||||
GVAR(latitude) = [38, 38, 38, 38];
|
GVAR(latitude) = [38, 38, 38, 38];
|
||||||
GVAR(directionOfFire) = [0, 0, 0, 0];
|
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
|
// 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],
|
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 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.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" , 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 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.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 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 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.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 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.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 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 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.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 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.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 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 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.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 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.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 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.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 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.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 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.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 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.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.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.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.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.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 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.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 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.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 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.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 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);
|
[] call FUNC(clear_user_data);
|
||||||
profileNamespace setVariable ["ACE_ATragMX_gunList", GVAR(gunList)];
|
profileNamespace setVariable ["ACE_ATragMX_gunList", GVAR(gunList)];
|
||||||
|
@ -19,7 +19,7 @@ GVAR(atmosphereModeTBH) = true;
|
|||||||
GVAR(altitude) = 0;
|
GVAR(altitude) = 0;
|
||||||
GVAR(temperature) = 15;
|
GVAR(temperature) = 15;
|
||||||
GVAR(barometricPressure) = 1013.25;
|
GVAR(barometricPressure) = 1013.25;
|
||||||
GVAR(relativeHumidity) = 0.5;
|
GVAR(relativeHumidity) = 0.0;
|
||||||
|
|
||||||
[] call FUNC(update_atmo_selection);
|
[] call FUNC(update_atmo_selection);
|
||||||
[] call FUNC(update_atmosphere);
|
[] 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(altitude) = -1000 max (profileNamespace getVariable ["ACE_ATragMX_altitude", 0]) min 20000;
|
||||||
GVAR(temperature) = -50 max (profileNamespace getVariable ["ACE_ATragMX_temperature", 15]) min 160;
|
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(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(showWind2) = profileNamespace getVariable ["ACE_ATragMX_showWind2", false];
|
||||||
GVAR(showCoriolis) = profileNamespace getVariable ["ACE_ATragMX_showCoriolis", true];
|
GVAR(showCoriolis) = profileNamespace getVariable ["ACE_ATragMX_showCoriolis", true];
|
||||||
|
@ -16,4 +16,4 @@
|
|||||||
|
|
||||||
#include "\z\ace\addons\main\script_macros.hpp"
|
#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 {
|
class B_556x45_Ball : BulletBase {
|
||||||
airFriction=-0.00126466;
|
airFriction=-0.00130094;
|
||||||
tracerScale = 1;
|
tracerScale = 1;
|
||||||
tracerStartTime=0.073; // M856 tracer burns out to 800m
|
tracerStartTime=0.073; // M856 tracer burns out to 800m
|
||||||
tracerEndTime=1.57123; // Time in seconds calculated with ballistics calculator
|
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};
|
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 {
|
class ACE_556x45_Ball_Mk262 : B_556x45_Ball {
|
||||||
airFriction=-0.00109563;
|
airFriction=-0.00111805;
|
||||||
ACE_caliber=5.69;
|
ACE_caliber=5.69;
|
||||||
ACE_bulletLength=23.012;
|
ACE_bulletLength=23.012;
|
||||||
ACE_bulletMass=4.9896;
|
ACE_bulletMass=4.9896;
|
||||||
@ -36,7 +36,7 @@ class CfgAmmo {
|
|||||||
ACE_barrelLengths[]={190.5, 368.3, 457.2, 508.0};
|
ACE_barrelLengths[]={190.5, 368.3, 457.2, 508.0};
|
||||||
};
|
};
|
||||||
class ACE_556x45_Ball_Mk318 : B_556x45_Ball {
|
class ACE_556x45_Ball_Mk318 : B_556x45_Ball {
|
||||||
airFriction=-0.00123318;
|
airFriction=-0.0012588;
|
||||||
ACE_caliber=5.69;
|
ACE_caliber=5.69;
|
||||||
ACE_bulletLength=23.012;
|
ACE_bulletLength=23.012;
|
||||||
ACE_bulletMass=4.0176;
|
ACE_bulletMass=4.0176;
|
||||||
@ -49,7 +49,7 @@ class CfgAmmo {
|
|||||||
ACE_barrelLengths[]={254.0, 393.7, 508.0};
|
ACE_barrelLengths[]={254.0, 393.7, 508.0};
|
||||||
};
|
};
|
||||||
class ACE_556x45_Ball_M995_AP : B_556x45_Ball {
|
class ACE_556x45_Ball_M995_AP : B_556x45_Ball {
|
||||||
airFriction=-0.00123272;
|
airFriction=-0.00126182;
|
||||||
caliber=1.6;
|
caliber=1.6;
|
||||||
ACE_caliber=5.69;
|
ACE_caliber=5.69;
|
||||||
ACE_bulletLength=23.012;
|
ACE_bulletLength=23.012;
|
||||||
@ -67,7 +67,7 @@ class CfgAmmo {
|
|||||||
nvgOnly = 1;
|
nvgOnly = 1;
|
||||||
};
|
};
|
||||||
class B_545x39_Ball_F : BulletBase {
|
class B_545x39_Ball_F : BulletBase {
|
||||||
airFriction=-0.00116278;
|
airFriction=-0.00119458;
|
||||||
ACE_caliber=5.588;
|
ACE_caliber=5.588;
|
||||||
ACE_bulletLength=21.59;
|
ACE_bulletLength=21.59;
|
||||||
ACE_bulletMass=3.42792;
|
ACE_bulletMass=3.42792;
|
||||||
@ -83,7 +83,7 @@ class CfgAmmo {
|
|||||||
tracerScale = 0.5;
|
tracerScale = 0.5;
|
||||||
};
|
};
|
||||||
class B_580x42_Ball_F: BulletBase {
|
class B_580x42_Ball_F: BulletBase {
|
||||||
airFriction=-0.00117956;
|
airFriction=-0.00121087;
|
||||||
ACE_caliber=5.9944;
|
ACE_caliber=5.9944;
|
||||||
ACE_bulletLength=24.2;
|
ACE_bulletLength=24.2;
|
||||||
ACE_bulletMass=4.15;
|
ACE_bulletMass=4.15;
|
||||||
@ -96,7 +96,7 @@ class CfgAmmo {
|
|||||||
ACE_barrelLengths[]={369.0, 463.0, 600.0};
|
ACE_barrelLengths[]={369.0, 463.0, 600.0};
|
||||||
};
|
};
|
||||||
class B_65x39_Caseless : BulletBase {
|
class B_65x39_Caseless : BulletBase {
|
||||||
airFriction=-0.00075308;
|
airFriction=-0.00077363;
|
||||||
tracerScale = 1.1; //1.0;
|
tracerScale = 1.1; //1.0;
|
||||||
ACE_caliber=6.706;
|
ACE_caliber=6.706;
|
||||||
ACE_bulletLength=32.893;
|
ACE_bulletLength=32.893;
|
||||||
@ -118,7 +118,7 @@ class CfgAmmo {
|
|||||||
nvgOnly = 1;
|
nvgOnly = 1;
|
||||||
};
|
};
|
||||||
class ACE_65x47_Ball_Scenar: B_65x39_Caseless {
|
class ACE_65x47_Ball_Scenar: B_65x39_Caseless {
|
||||||
airFriction=-0.00067037;
|
airFriction=-0.00069003;
|
||||||
caliber=0.9;
|
caliber=0.9;
|
||||||
ACE_caliber=6.706;
|
ACE_caliber=6.706;
|
||||||
ACE_bulletLength=34.646;
|
ACE_bulletLength=34.646;
|
||||||
@ -132,7 +132,7 @@ class CfgAmmo {
|
|||||||
ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4};
|
ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4};
|
||||||
};
|
};
|
||||||
class ACE_65_Creedmor_Ball: B_65x39_Caseless {
|
class ACE_65_Creedmor_Ball: B_65x39_Caseless {
|
||||||
airFriction=-0.00060887;
|
airFriction=-0.00062437;
|
||||||
caliber=1.1;
|
caliber=1.1;
|
||||||
ACE_caliber=6.706;
|
ACE_caliber=6.706;
|
||||||
ACE_bulletLength=36.22;
|
ACE_bulletLength=36.22;
|
||||||
@ -150,7 +150,7 @@ class CfgAmmo {
|
|||||||
tracerScale = 1.1; //1.0;
|
tracerScale = 1.1; //1.0;
|
||||||
};
|
};
|
||||||
class B_762x51_Ball : BulletBase {
|
class B_762x51_Ball : BulletBase {
|
||||||
airFriction=-0.00100957;
|
airFriction=-0.00103711;
|
||||||
tracerScale = 1.2; //0.6;
|
tracerScale = 1.2; //0.6;
|
||||||
tracerStartTime=0.073; // Based on the British L5A1 which burns out to 1000m
|
tracerStartTime=0.073; // Based on the British L5A1 which burns out to 1000m
|
||||||
tracerEndTime=2.15957; // Time in seconds calculated with ballistics calculator
|
tracerEndTime=2.15957; // Time in seconds calculated with ballistics calculator
|
||||||
@ -170,7 +170,7 @@ class CfgAmmo {
|
|||||||
nvgOnly = 1;
|
nvgOnly = 1;
|
||||||
};
|
};
|
||||||
class ACE_762x51_Ball_M118LR : B_762x51_Ball {
|
class ACE_762x51_Ball_M118LR : B_762x51_Ball {
|
||||||
airFriction=-0.00082828;
|
airFriction=-0.00085157;
|
||||||
caliber=1.8;
|
caliber=1.8;
|
||||||
hit=16;
|
hit=16;
|
||||||
typicalSpeed=790;
|
typicalSpeed=790;
|
||||||
@ -186,7 +186,7 @@ class CfgAmmo {
|
|||||||
ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4};
|
ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4};
|
||||||
};
|
};
|
||||||
class ACE_762x51_Ball_Mk316_Mod_0 : B_762x51_Ball {
|
class ACE_762x51_Ball_Mk316_Mod_0 : B_762x51_Ball {
|
||||||
airFriction=-0.00082029;
|
airFriction=-0.00084311;
|
||||||
caliber=1.8;
|
caliber=1.8;
|
||||||
hit=16;
|
hit=16;
|
||||||
typicalSpeed=790;
|
typicalSpeed=790;
|
||||||
@ -202,7 +202,7 @@ class CfgAmmo {
|
|||||||
ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4};
|
ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4};
|
||||||
};
|
};
|
||||||
class ACE_762x51_Ball_Mk319_Mod_0 : B_762x51_Ball {
|
class ACE_762x51_Ball_Mk319_Mod_0 : B_762x51_Ball {
|
||||||
airFriction=-0.00102338;
|
airFriction=-0.00104515;
|
||||||
caliber=1.5;
|
caliber=1.5;
|
||||||
hit=14;
|
hit=14;
|
||||||
typicalSpeed=900;
|
typicalSpeed=900;
|
||||||
@ -218,7 +218,7 @@ class CfgAmmo {
|
|||||||
ACE_barrelLengths[]={330.2, 406.4, 508.0};
|
ACE_barrelLengths[]={330.2, 406.4, 508.0};
|
||||||
};
|
};
|
||||||
class ACE_762x51_Ball_M993_AP : B_762x51_Ball {
|
class ACE_762x51_Ball_M993_AP : B_762x51_Ball {
|
||||||
airFriction=-0.00107148;
|
airFriction=-0.0010939;
|
||||||
caliber=2.2;
|
caliber=2.2;
|
||||||
hit=11;
|
hit=11;
|
||||||
typicalSpeed=910;
|
typicalSpeed=910;
|
||||||
@ -234,7 +234,7 @@ class CfgAmmo {
|
|||||||
ACE_barrelLengths[]={330.2, 406.4, 508.0};
|
ACE_barrelLengths[]={330.2, 406.4, 508.0};
|
||||||
};
|
};
|
||||||
class ACE_762x51_Ball_Subsonic : B_762x51_Ball {
|
class ACE_762x51_Ball_Subsonic : B_762x51_Ball {
|
||||||
airFriction=-0.00049899;
|
airFriction=-0.00060194;
|
||||||
caliber=1;
|
caliber=1;
|
||||||
hit=6;
|
hit=6;
|
||||||
typicalSpeed=320;
|
typicalSpeed=320;
|
||||||
@ -250,7 +250,7 @@ class CfgAmmo {
|
|||||||
ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4};
|
ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4};
|
||||||
};
|
};
|
||||||
class ACE_762x67_Ball_Mk248_Mod_0 : B_762x51_Ball {
|
class ACE_762x67_Ball_Mk248_Mod_0 : B_762x51_Ball {
|
||||||
airFriction=-0.00070530;
|
airFriction=-0.00072468;
|
||||||
caliber=1.8;
|
caliber=1.8;
|
||||||
hit=17;
|
hit=17;
|
||||||
typicalSpeed=900;
|
typicalSpeed=900;
|
||||||
@ -266,7 +266,7 @@ class CfgAmmo {
|
|||||||
ACE_barrelLengths[]={508.0, 609.6, 660.4};
|
ACE_barrelLengths[]={508.0, 609.6, 660.4};
|
||||||
};
|
};
|
||||||
class ACE_762x67_Ball_Mk248_Mod_1 : B_762x51_Ball {
|
class ACE_762x67_Ball_Mk248_Mod_1 : B_762x51_Ball {
|
||||||
airFriction=-0.00061188;
|
airFriction=-0.00063027;
|
||||||
caliber=1.9;
|
caliber=1.9;
|
||||||
hit=18;
|
hit=18;
|
||||||
typicalSpeed=867;
|
typicalSpeed=867;
|
||||||
@ -282,7 +282,7 @@ class CfgAmmo {
|
|||||||
ACE_barrelLengths[]={508.0, 609.6, 660.4};
|
ACE_barrelLengths[]={508.0, 609.6, 660.4};
|
||||||
};
|
};
|
||||||
class ACE_762x67_Ball_Berger_Hybrid_OTM : B_762x51_Ball {
|
class ACE_762x67_Ball_Berger_Hybrid_OTM : B_762x51_Ball {
|
||||||
airFriction=-0.00053733;
|
airFriction=-0.00055262;
|
||||||
caliber=2.0;
|
caliber=2.0;
|
||||||
hit=19;
|
hit=19;
|
||||||
typicalSpeed=853;
|
typicalSpeed=853;
|
||||||
@ -298,7 +298,7 @@ class CfgAmmo {
|
|||||||
ACE_barrelLengths[]={508.0, 609.6, 660.4};
|
ACE_barrelLengths[]={508.0, 609.6, 660.4};
|
||||||
};
|
};
|
||||||
class B_762x54_Ball: B_762x51_Ball {
|
class B_762x54_Ball: B_762x51_Ball {
|
||||||
airFriction=-0.00100023;
|
airFriction=-0.00102329;
|
||||||
ACE_caliber=7.925;
|
ACE_caliber=7.925;
|
||||||
ACE_bulletLength=28.956;
|
ACE_bulletLength=28.956;
|
||||||
ACE_bulletMass=9.8496;
|
ACE_bulletMass=9.8496;
|
||||||
@ -312,7 +312,7 @@ class CfgAmmo {
|
|||||||
};
|
};
|
||||||
class B_762x54_Tracer_Green;
|
class B_762x54_Tracer_Green;
|
||||||
class ACE_762x54_Ball_7T2 : B_762x54_Tracer_Green {
|
class ACE_762x54_Ball_7T2 : B_762x54_Tracer_Green {
|
||||||
airFriction=-0.00103989;
|
airFriction=-0.00106104;
|
||||||
typicalSpeed=800;
|
typicalSpeed=800;
|
||||||
tracerStartTime=0.073; // Based on the 7T2 which burns three seconds
|
tracerStartTime=0.073; // Based on the 7T2 which burns three seconds
|
||||||
tracerEndTime=3;
|
tracerEndTime=3;
|
||||||
@ -328,7 +328,7 @@ class CfgAmmo {
|
|||||||
ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4};
|
ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4};
|
||||||
};
|
};
|
||||||
class B_762x39_Ball_F : BulletBase {
|
class B_762x39_Ball_F : BulletBase {
|
||||||
airFriction=-0.00151621;
|
airFriction=-0.00154815;
|
||||||
ACE_caliber=7.823;
|
ACE_caliber=7.823;
|
||||||
ACE_bulletLength=28.956;
|
ACE_bulletLength=28.956;
|
||||||
ACE_bulletMass=7.9704;
|
ACE_bulletMass=7.9704;
|
||||||
@ -341,7 +341,7 @@ class CfgAmmo {
|
|||||||
ACE_barrelLengths[]={254.0, 414.02, 508.0};
|
ACE_barrelLengths[]={254.0, 414.02, 508.0};
|
||||||
};
|
};
|
||||||
class B_9x21_Ball : BulletBase {
|
class B_9x21_Ball : BulletBase {
|
||||||
airFriction=-0.00208292;
|
airFriction=-0.00211064;
|
||||||
tracerScale = 0.5;
|
tracerScale = 0.5;
|
||||||
ACE_caliber=9.042;
|
ACE_caliber=9.042;
|
||||||
ACE_bulletLength=15.494;
|
ACE_bulletLength=15.494;
|
||||||
@ -358,7 +358,7 @@ class CfgAmmo {
|
|||||||
tracerScale = 0.5;
|
tracerScale = 0.5;
|
||||||
};
|
};
|
||||||
class ACE_9x19_Ball : B_9x21_Ball {
|
class ACE_9x19_Ball : B_9x21_Ball {
|
||||||
airFriction=-0.0019835;
|
airFriction=-0.00201185;
|
||||||
ACE_caliber=9.017;
|
ACE_caliber=9.017;
|
||||||
ACE_bulletLength=15.494;
|
ACE_bulletLength=15.494;
|
||||||
ACE_bulletMass=8.0352;
|
ACE_bulletMass=8.0352;
|
||||||
@ -371,7 +371,7 @@ class CfgAmmo {
|
|||||||
ACE_barrelLengths[]={101.6, 127.0, 228.6};
|
ACE_barrelLengths[]={101.6, 127.0, 228.6};
|
||||||
};
|
};
|
||||||
class B_93x64_Ball : BulletBase {
|
class B_93x64_Ball : BulletBase {
|
||||||
airFriction=-0.00108571;
|
airFriction=-0.00110727;
|
||||||
ACE_caliber=9.296;
|
ACE_caliber=9.296;
|
||||||
ACE_bulletLength=34.29;
|
ACE_bulletLength=34.29;
|
||||||
ACE_bulletMass=14.904;
|
ACE_bulletMass=14.904;
|
||||||
@ -385,7 +385,7 @@ class CfgAmmo {
|
|||||||
};
|
};
|
||||||
class B_408_Ball : BulletBase {
|
class B_408_Ball : BulletBase {
|
||||||
timeToLive=10;
|
timeToLive=10;
|
||||||
airFriction=-0.00044958;
|
airFriction=-0.00046249;
|
||||||
tracerScale = 1.3;
|
tracerScale = 1.3;
|
||||||
ACE_caliber=10.363;
|
ACE_caliber=10.363;
|
||||||
ACE_bulletLength=55.1942;
|
ACE_bulletLength=55.1942;
|
||||||
@ -401,7 +401,7 @@ class CfgAmmo {
|
|||||||
};
|
};
|
||||||
class ACE_408_Ball : BulletBase {
|
class ACE_408_Ball : BulletBase {
|
||||||
timeToLive=10;
|
timeToLive=10;
|
||||||
airFriction=-0.00063655;
|
airFriction=-0.00065414;
|
||||||
typicalSpeed=1067;
|
typicalSpeed=1067;
|
||||||
tracerScale = 1.3;
|
tracerScale = 1.3;
|
||||||
ACE_caliber=10.363;
|
ACE_caliber=10.363;
|
||||||
@ -418,7 +418,7 @@ class CfgAmmo {
|
|||||||
};
|
};
|
||||||
class B_338_Ball : BulletBase {
|
class B_338_Ball : BulletBase {
|
||||||
timeToLive=10;
|
timeToLive=10;
|
||||||
airFriction=-0.00059133;
|
airFriction=-0.00060841;
|
||||||
ACE_caliber=8.585;
|
ACE_caliber=8.585;
|
||||||
ACE_bulletLength=39.573;
|
ACE_bulletLength=39.573;
|
||||||
ACE_bulletMass=16.2;
|
ACE_bulletMass=16.2;
|
||||||
@ -431,7 +431,7 @@ class CfgAmmo {
|
|||||||
ACE_barrelLengths[]={508.0, 660.4, 711.2};
|
ACE_barrelLengths[]={508.0, 660.4, 711.2};
|
||||||
};
|
};
|
||||||
class B_338_NM_Ball : BulletBase {
|
class B_338_NM_Ball : BulletBase {
|
||||||
airFriction=-0.00052201;
|
airFriction=-0.00053639;
|
||||||
ACE_caliber=8.585;
|
ACE_caliber=8.585;
|
||||||
ACE_bulletLength=43.18;
|
ACE_bulletLength=43.18;
|
||||||
ACE_bulletMass=19.44;
|
ACE_bulletMass=19.44;
|
||||||
@ -445,7 +445,7 @@ class CfgAmmo {
|
|||||||
};
|
};
|
||||||
class ACE_338_Ball : B_338_Ball {
|
class ACE_338_Ball : B_338_Ball {
|
||||||
timeToLive=10;
|
timeToLive=10;
|
||||||
airFriction=-0.00052190;
|
airFriction=-0.00053585;
|
||||||
typicalSpeed=826;
|
typicalSpeed=826;
|
||||||
ACE_caliber=8.585;
|
ACE_caliber=8.585;
|
||||||
ACE_bulletLength=43.18;
|
ACE_bulletLength=43.18;
|
||||||
@ -460,7 +460,7 @@ class CfgAmmo {
|
|||||||
};
|
};
|
||||||
class ACE_338_Ball_API526 : B_338_Ball {
|
class ACE_338_Ball_API526 : B_338_Ball {
|
||||||
timeToLive=10;
|
timeToLive=10;
|
||||||
airFriction=-0.00069611;
|
airFriction=-0.0006922;
|
||||||
caliber=2.8;
|
caliber=2.8;
|
||||||
typicalSpeed=895;
|
typicalSpeed=895;
|
||||||
ACE_caliber=8.585;
|
ACE_caliber=8.585;
|
||||||
@ -478,7 +478,7 @@ class CfgAmmo {
|
|||||||
tracerScale = 1.3; //1.2;
|
tracerScale = 1.3; //1.2;
|
||||||
};
|
};
|
||||||
class B_127x54_Ball : BulletBase {
|
class B_127x54_Ball : BulletBase {
|
||||||
airFriction=-0.00019268;
|
airFriction=-0.00019568;
|
||||||
tracerScale = 1.3;//
|
tracerScale = 1.3;//
|
||||||
ACE_caliber=12.954;
|
ACE_caliber=12.954;
|
||||||
ACE_bulletLength=64.516;
|
ACE_bulletLength=64.516;
|
||||||
@ -493,7 +493,7 @@ class CfgAmmo {
|
|||||||
};
|
};
|
||||||
class B_127x99_Ball : BulletBase {
|
class B_127x99_Ball : BulletBase {
|
||||||
timeToLive=10;
|
timeToLive=10;
|
||||||
airFriction=-0.00057503;
|
airFriction=-0.00058679;
|
||||||
tracerScale = 1.3; //1.2;
|
tracerScale = 1.3; //1.2;
|
||||||
ACE_caliber=12.954;
|
ACE_caliber=12.954;
|
||||||
ACE_bulletLength=58.674;
|
ACE_bulletLength=58.674;
|
||||||
@ -508,7 +508,7 @@ class CfgAmmo {
|
|||||||
};
|
};
|
||||||
class ACE_127x99_API : B_127x99_Ball {
|
class ACE_127x99_API : B_127x99_Ball {
|
||||||
timeToLive=10;
|
timeToLive=10;
|
||||||
airFriction=-0.00057503;
|
airFriction=-0.00058679;
|
||||||
tracerScale = 1.3;//
|
tracerScale = 1.3;//
|
||||||
hit=25;
|
hit=25;
|
||||||
caliber=4.0;
|
caliber=4.0;
|
||||||
@ -525,7 +525,7 @@ class CfgAmmo {
|
|||||||
};
|
};
|
||||||
class ACE_127x99_Ball_AMAX : B_127x99_Ball {
|
class ACE_127x99_Ball_AMAX : B_127x99_Ball {
|
||||||
timeToLive=10;
|
timeToLive=10;
|
||||||
airFriction=-0.00036645;
|
airFriction=-0.00037397;
|
||||||
caliber=3.0;
|
caliber=3.0;
|
||||||
ACE_caliber=12.954;
|
ACE_caliber=12.954;
|
||||||
ACE_bulletLength=64.516;
|
ACE_bulletLength=64.516;
|
||||||
@ -540,7 +540,7 @@ class CfgAmmo {
|
|||||||
};
|
};
|
||||||
class B_127x108_Ball : BulletBase {
|
class B_127x108_Ball : BulletBase {
|
||||||
timeToLive=10;
|
timeToLive=10;
|
||||||
airFriction=-0.00063800;
|
airFriction=-0.00065098;
|
||||||
tracerScale = 1.3; //1.5;
|
tracerScale = 1.3; //1.5;
|
||||||
ACE_caliber=12.979;
|
ACE_caliber=12.979;
|
||||||
ACE_bulletLength=64.008;
|
ACE_bulletLength=64.008;
|
||||||
@ -554,7 +554,7 @@ class CfgAmmo {
|
|||||||
ACE_barrelLengths[]={728.98};
|
ACE_barrelLengths[]={728.98};
|
||||||
};
|
};
|
||||||
class B_45ACP_Ball : BulletBase {
|
class B_45ACP_Ball : BulletBase {
|
||||||
airFriction=-0.00081221;
|
airFriction=-0.00082143;
|
||||||
tracerScale = 0.6;
|
tracerScale = 0.6;
|
||||||
ACE_caliber=11.481;
|
ACE_caliber=11.481;
|
||||||
ACE_bulletLength=17.272;
|
ACE_bulletLength=17.272;
|
||||||
@ -568,7 +568,7 @@ class CfgAmmo {
|
|||||||
ACE_barrelLengths[]={101.6, 127.0, 228.6};
|
ACE_barrelLengths[]={101.6, 127.0, 228.6};
|
||||||
};
|
};
|
||||||
class B_50BW_Ball_F : BulletBase {
|
class B_50BW_Ball_F : BulletBase {
|
||||||
airFriction=-0.00202645;
|
airFriction=-0.00205896;
|
||||||
ACE_caliber=12.7;
|
ACE_caliber=12.7;
|
||||||
ACE_bulletLength=24.13;
|
ACE_bulletLength=24.13;
|
||||||
ACE_bulletMass=21.7076;
|
ACE_bulletMass=21.7076;
|
||||||
|
@ -103,7 +103,7 @@ while {_TOF < 6 && (_bulletPos select 1) < _targetRange} do {
|
|||||||
_trueSpeed = vectorMagnitude _trueVelocity;
|
_trueSpeed = vectorMagnitude _trueVelocity;
|
||||||
|
|
||||||
if (_useABConfig) then {
|
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);
|
_bulletAccel = (vectorNormalized _trueVelocity) vectorMultiply (-1 * _drag);
|
||||||
} else {
|
} else {
|
||||||
_bulletAccel = _trueVelocity vectorMultiply (_trueSpeed * _airFriction * _airFrictionCoef);
|
_bulletAccel = _trueVelocity vectorMultiply (_trueSpeed * _airFriction * _airFrictionCoef);
|
||||||
|
@ -50,7 +50,7 @@ class ACE_Settings {
|
|||||||
};
|
};
|
||||||
class GVAR(zeroReferenceHumidity) {
|
class GVAR(zeroReferenceHumidity) {
|
||||||
typeName = "SCALAR";
|
typeName = "SCALAR";
|
||||||
value = 0.5;
|
value = 0.0;
|
||||||
displayName = CSTRING(zeroReferenceHumidity_displayName);
|
displayName = CSTRING(zeroReferenceHumidity_displayName);
|
||||||
description = CSTRING(zeroReferenceHumidity_description);
|
description = CSTRING(zeroReferenceHumidity_description);
|
||||||
};
|
};
|
||||||
|
@ -74,7 +74,7 @@ class CfgVehicles {
|
|||||||
displayName = CSTRING(zeroReferenceHumidity_DisplayName);
|
displayName = CSTRING(zeroReferenceHumidity_DisplayName);
|
||||||
description = CSTRING(zeroReferenceHumidity_Description);
|
description = CSTRING(zeroReferenceHumidity_Description);
|
||||||
typeName = "NUMBER";
|
typeName = "NUMBER";
|
||||||
defaultValue = 0.5;
|
defaultValue = 0.0;
|
||||||
};
|
};
|
||||||
class deduceBarometricPressureFromTerrainAltitude {
|
class deduceBarometricPressureFromTerrainAltitude {
|
||||||
displayName = CSTRING(deduceBarometricPressureFromTerrainAltitude_DisplayName);
|
displayName = CSTRING(deduceBarometricPressureFromTerrainAltitude_DisplayName);
|
||||||
|
@ -15,4 +15,4 @@
|
|||||||
*/
|
*/
|
||||||
#include "script_component.hpp"
|
#include "script_component.hpp"
|
||||||
|
|
||||||
(331.3 + (0.6 * _this))
|
(331.3 * sqrt(1 + (_this / 273.15)))
|
||||||
|
@ -7,7 +7,6 @@
|
|||||||
#include <random>
|
#include <random>
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
|
||||||
|
|
||||||
#define DELTA_T 0.02f
|
#define DELTA_T 0.02f
|
||||||
#define GRAVITY 9.80665f
|
#define GRAVITY 9.80665f
|
||||||
#define DEGREES(X) (X * 180 / M_PI)
|
#define DEGREES(X) (X * 180 / M_PI)
|
||||||
@ -21,6 +20,9 @@
|
|||||||
#define SPECIFIC_GAS_CONSTANT_DRY_AIR 287.058f
|
#define SPECIFIC_GAS_CONSTANT_DRY_AIR 287.058f
|
||||||
#define STD_AIR_DENSITY_ICAO 1.22498f
|
#define STD_AIR_DENSITY_ICAO 1.22498f
|
||||||
#define STD_AIR_DENSITY_ASM 1.20885f
|
#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 {
|
struct Bullet {
|
||||||
double airFriction;
|
double airFriction;
|
||||||
@ -37,6 +39,7 @@ struct Bullet {
|
|||||||
double twistDirection;
|
double twistDirection;
|
||||||
double transonicStabilityCoef;
|
double transonicStabilityCoef;
|
||||||
double muzzleVelocity;
|
double muzzleVelocity;
|
||||||
|
double bulletSpeed;
|
||||||
std::vector<double> origin;
|
std::vector<double> origin;
|
||||||
double latitude;
|
double latitude;
|
||||||
double temperature;
|
double temperature;
|
||||||
@ -114,117 +117,35 @@ double calculateAtmosphericCorrection(double ballisticCoefficient, double temper
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
double calculateRetard(int DragFunction, double DragCoefficient, double Velocity) {
|
// Drag Functions from: http://www.jbmballistics.com/ballistics/downloads/text/
|
||||||
double vel = Velocity * 3.2808399;
|
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 };
|
||||||
double val = -1;
|
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 };
|
||||||
double A = -1;
|
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 };
|
||||||
double M = -1;
|
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) {
|
const std::vector<std::vector<double>> dragCoefficients = { {}, dragCoefficientsG1, dragCoefficientsG2, {}, {}, dragCoefficientsG5, dragCoefficientsG6, dragCoefficientsG7, dragCoefficientsG8, {} };
|
||||||
case 1:
|
const std::vector<std::vector<double>> machNumbers = { {}, machNumbersG1, machNumbersG2, {},{}, machNumbersG5, machNumbersG6, machNumbersG7, machNumbersG8,{} };
|
||||||
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;
|
|
||||||
|
|
||||||
case 2:
|
double calculateRetard(int DragFunction, double DragCoefficient, double Velocity, double Mach) {
|
||||||
if (vel> 1674) { A = .0079470052136733; M = 1.36999902851493; }
|
int idx = std::max(0, std::min(DragFunction, 9));
|
||||||
else if (vel> 1172) { A = 1.00419763721974e-03; M = 1.65392237010294; }
|
double m = Velocity / Mach;
|
||||||
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;
|
|
||||||
|
|
||||||
case 5:
|
for (int i = 0; i < machNumbers[idx].size(); i++) {
|
||||||
if (vel> 1730) { A = 7.24854775171929e-03; M = 1.41538574492812; }
|
if (machNumbers[idx][i] >= m) {
|
||||||
else if (vel> 1228) { A = 3.50563361516117e-05; M = 2.13077307854948; }
|
int previousIdx = std::max(0, i - 1);
|
||||||
else if (vel> 1116) { A = 1.84029481181151e-13; M = 4.81927320350395; }
|
double previousDragCoefficient = dragCoefficients[idx][previousIdx];
|
||||||
else if (vel> 1004) { A = 1.34713064017409e-22; M = 7.8100555281422; }
|
double previousMachNumber = machNumbers[idx][previousIdx];
|
||||||
else if (vel> 837) { A = 1.03965974081168e-07; M = 2.84204791809926; }
|
double cd = previousDragCoefficient + (dragCoefficients[idx][i] - previousDragCoefficient) * (m - previousMachNumber) / (machNumbers[idx][i] - previousMachNumber);
|
||||||
else if (vel> 335) { A = 1.09301593869823e-04; M = 1.81096361579504; }
|
return BC_CONVERSION_FACTOR * (cd / DragCoefficient) * std::pow(Velocity, 2);
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0.0;
|
return 0.0;
|
||||||
@ -309,7 +230,7 @@ double calculateZeroAngle(double zeroRange, double muzzleVelocity, double boreHe
|
|||||||
|
|
||||||
v = std::sqrt(vx*vx + vy*vy);
|
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 ax = vx / v * -retard;
|
||||||
double ay = vy / v * -retard;
|
double ay = vy / v * -retard;
|
||||||
ax += gx;
|
ax += gx;
|
||||||
@ -366,13 +287,15 @@ void __stdcall RVExtension(char *output, int outputSize, const char *function)
|
|||||||
double ballisticCoefficient = 1.0;
|
double ballisticCoefficient = 1.0;
|
||||||
int dragModel = 1;
|
int dragModel = 1;
|
||||||
double velocity = 0.0;
|
double velocity = 0.0;
|
||||||
|
double temperature = 15.0;
|
||||||
double retard = 0.0;
|
double retard = 0.0;
|
||||||
|
|
||||||
dragModel = strtol(strtok_s(NULL, ":", &next_token), NULL, 10);
|
dragModel = strtol(strtok_s(NULL, ":", &next_token), NULL, 10);
|
||||||
ballisticCoefficient = strtod(strtok_s(NULL, ":", &next_token), NULL);
|
ballisticCoefficient = strtod(strtok_s(NULL, ":", &next_token), NULL);
|
||||||
velocity = 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);
|
// int n = sprintf(output, "%f", retard);
|
||||||
|
|
||||||
outputStr << 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);
|
humidity = strtod(strtok_s(NULL, ":", &next_token), NULL);
|
||||||
overcast = 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);
|
||||||
tickTime += strtod(strtok_s(NULL, ":", &next_token), NULL);
|
|
||||||
|
|
||||||
while (index >= bulletDatabase.size()) {
|
while (index >= bulletDatabase.size()) {
|
||||||
Bullet bullet;
|
Bullet bullet;
|
||||||
@ -476,6 +398,7 @@ void __stdcall RVExtension(char *output, int outputSize, const char *function)
|
|||||||
bulletDatabase[index].twistDirection = twistDirection;
|
bulletDatabase[index].twistDirection = twistDirection;
|
||||||
bulletDatabase[index].transonicStabilityCoef = transonicStabilityCoef;
|
bulletDatabase[index].transonicStabilityCoef = transonicStabilityCoef;
|
||||||
bulletDatabase[index].muzzleVelocity = muzzleVelocity;
|
bulletDatabase[index].muzzleVelocity = muzzleVelocity;
|
||||||
|
bulletDatabase[index].bulletSpeed = muzzleVelocity;
|
||||||
bulletDatabase[index].origin = origin;
|
bulletDatabase[index].origin = origin;
|
||||||
bulletDatabase[index].latitude = latitude / 180 * M_PI;
|
bulletDatabase[index].latitude = latitude / 180 * M_PI;
|
||||||
bulletDatabase[index].temperature = temperature;
|
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);
|
wind[2] = strtod(strtok_s(NULL, ",", &token), NULL);
|
||||||
heightAGL = strtod(strtok_s(NULL, ":", &next_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);
|
||||||
tickTime += strtod(strtok_s(NULL, ":", &next_token), NULL);
|
|
||||||
|
|
||||||
if (bulletDatabase[index].randSeed == 0) {
|
if (bulletDatabase[index].randSeed == 0) {
|
||||||
int angle = (int)round(atan2(velocity[0], velocity[1]) * 360 / M_PI);
|
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 drag = 0.0;
|
||||||
double accelRef[3] = { 0.0, 0.0, 0.0 };
|
double accelRef[3] = { 0.0, 0.0, 0.0 };
|
||||||
double accel[3] = { 0.0, 0.0, 0.0 };
|
double accel[3] = { 0.0, 0.0, 0.0 };
|
||||||
double TOF = 0.0;
|
double TOF = tickTime - bulletDatabase[index].startTime;
|
||||||
double deltaT = 0.0;
|
double deltaT = tickTime - bulletDatabase[index].lastFrame;
|
||||||
double bulletSpeed;
|
|
||||||
double trueVelocity[3] = { 0.0, 0.0, 0.0 };
|
double trueVelocity[3] = { 0.0, 0.0, 0.0 };
|
||||||
double trueSpeed = 0.0;
|
double trueSpeed = 0.0;
|
||||||
double temperature = 0.0;
|
double temperature = bulletDatabase[index].temperature - 0.0065 * position[2];
|
||||||
double pressure = 1013.25;
|
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 windSpeed = 0.0;
|
||||||
double windAttenuation = 1.0;
|
double windAttenuation = 1.0;
|
||||||
double velocityOffset[3] = { 0.0, 0.0, 0.0 };
|
double velocityOffset[3] = { 0.0, 0.0, 0.0 };
|
||||||
|
|
||||||
TOF = tickTime - bulletDatabase[index].startTime;
|
|
||||||
|
|
||||||
deltaT = tickTime - bulletDatabase[index].lastFrame;
|
|
||||||
bulletDatabase[index].lastFrame = tickTime;
|
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));
|
windSpeed = sqrt(pow(wind[0], 2) + pow(wind[1], 2) + pow(wind[2], 2));
|
||||||
if (windSpeed > 0.1) {
|
if (windSpeed > 0.1) {
|
||||||
double windSourceTerrain[3];
|
double windSourceTerrain[3];
|
||||||
@ -610,9 +526,7 @@ void __stdcall RVExtension(char *output, int outputSize, const char *function)
|
|||||||
trueVelocity[2] = velocity[2] - wind[2];
|
trueVelocity[2] = velocity[2] - wind[2];
|
||||||
trueSpeed = sqrt(pow(trueVelocity[0], 2) + pow(trueVelocity[1], 2) + pow(trueVelocity[2], 2));
|
trueSpeed = sqrt(pow(trueVelocity[0], 2) + pow(trueVelocity[1], 2) + pow(trueVelocity[2], 2));
|
||||||
|
|
||||||
double speedOfSound = 331.3 + (0.6 * temperature);
|
if (bulletDatabase[index].transonicStabilityCoef < 1.0f && trueSpeed - 60 < SPEED_OF_SOUND(temperature) && trueSpeed > SPEED_OF_SOUND(temperature)) {
|
||||||
double transonicSpeed = 394 + (0.6 * temperature);
|
|
||||||
if (bulletDatabase[index].transonicStabilityCoef < 1.0f && bulletSpeed < transonicSpeed && bulletSpeed > speedOfSound) {
|
|
||||||
std::uniform_real_distribution<double> distribution(-10.0, 10.0);
|
std::uniform_real_distribution<double> distribution(-10.0, 10.0);
|
||||||
double coef = 1.0f - bulletDatabase[index].transonicStabilityCoef;
|
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);
|
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) {
|
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[0] = (velocity[0] / bulletDatabase[index].bulletSpeed) * dragRef;
|
||||||
accelRef[1] = (velocity[1] / bulletSpeed) * dragRef;
|
accelRef[1] = (velocity[1] / bulletDatabase[index].bulletSpeed) * dragRef;
|
||||||
accelRef[2] = (velocity[2] / bulletSpeed) * dragRef;
|
accelRef[2] = (velocity[2] / bulletDatabase[index].bulletSpeed) * dragRef;
|
||||||
|
|
||||||
velocityOffset[0] -= accelRef[0];
|
velocityOffset[0] -= accelRef[0];
|
||||||
velocityOffset[1] -= accelRef[1];
|
velocityOffset[1] -= accelRef[1];
|
||||||
@ -644,7 +555,7 @@ void __stdcall RVExtension(char *output, int outputSize, const char *function)
|
|||||||
|
|
||||||
ballisticCoefficient = bulletDatabase[index].ballisticCoefficients[0];
|
ballisticCoefficient = bulletDatabase[index].ballisticCoefficients[0];
|
||||||
for (int i = (int)bulletDatabase[index].velocityBoundaries.size() - 1; i >= 0; i = i - 1) {
|
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];
|
ballisticCoefficient = bulletDatabase[index].ballisticCoefficients[i + 1];
|
||||||
break;
|
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 = calculateAtmosphericCorrection(ballisticCoefficient, temperature, pressure, bulletDatabase[index].humidity, bulletDatabase[index].atmosphereModel);
|
||||||
ballisticCoefficient *= bulletDatabase[index].bcDegradation;
|
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[0] = (trueVelocity[0] / trueSpeed) * drag;
|
||||||
accel[1] = (trueVelocity[1] / trueSpeed) * drag;
|
accel[1] = (trueVelocity[1] / trueSpeed) * drag;
|
||||||
accel[2] = (trueVelocity[2] / 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;
|
double airFriction = bulletDatabase[index].airFriction * airDensity / STD_AIR_DENSITY_ICAO;
|
||||||
|
|
||||||
if (airFriction != bulletDatabase[index].airFriction || windSpeed > 0) {
|
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[0] = (velocity[0] / bulletDatabase[index].bulletSpeed) * dragRef;
|
||||||
accelRef[1] = (velocity[1] / bulletSpeed) * dragRef;
|
accelRef[1] = (velocity[1] / bulletDatabase[index].bulletSpeed) * dragRef;
|
||||||
accelRef[2] = (velocity[2] / bulletSpeed) * dragRef;
|
accelRef[2] = (velocity[2] / bulletDatabase[index].bulletSpeed) * dragRef;
|
||||||
|
|
||||||
velocityOffset[0] -= accelRef[0];
|
velocityOffset[0] -= accelRef[0];
|
||||||
velocityOffset[1] -= accelRef[1];
|
velocityOffset[1] -= accelRef[1];
|
||||||
@ -688,11 +599,11 @@ void __stdcall RVExtension(char *output, int outputSize, const char *function)
|
|||||||
|
|
||||||
if (TOF > 0) {
|
if (TOF > 0) {
|
||||||
double bulletDir = atan2(velocity[0], velocity[1]);
|
double bulletDir = atan2(velocity[0], velocity[1]);
|
||||||
double r1 = pow(TOF - deltaT, 0.17);
|
double driftAccel = bulletDatabase[index].twistDirection * (0.0482251 * (bulletDatabase[index].stabilityFactor + 1.2)) / pow(TOF, 0.17);
|
||||||
double r2 = pow(TOF, 0.17);
|
double driftVelocity = 0.0581025 *(bulletDatabase[index].stabilityFactor + 1.2) * pow(TOF, 0.83);
|
||||||
double spinAccel = bulletDatabase[index].twistDirection * (0.0482251 * (bulletDatabase[index].stabilityFactor + 1.2)) / ((r1 + r2) / 2.0f);
|
double dragCorrection = (driftVelocity / trueSpeed) * drag;
|
||||||
velocityOffset[0] += sin(bulletDir + M_PI / 2) * spinAccel * deltaT;
|
velocityOffset[0] += sin(bulletDir + M_PI / 2) * (driftAccel * deltaT + dragCorrection);
|
||||||
velocityOffset[1] += cos(bulletDir + M_PI / 2) * spinAccel * deltaT;
|
velocityOffset[1] += cos(bulletDir + M_PI / 2) * (driftAccel * deltaT + dragCorrection);
|
||||||
}
|
}
|
||||||
|
|
||||||
double lat = bulletDatabase[index].latitude;
|
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[1] += accel[1] * deltaT;
|
||||||
velocityOffset[2] += accel[2] * 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] << "]";
|
outputStr << "[" << velocityOffset[0] << "," << velocityOffset[1] << "," << velocityOffset[2] << "]";
|
||||||
strncpy_s(output, outputSize, outputStr.str().c_str(), _TRUNCATE);
|
strncpy_s(output, outputSize, outputStr.str().c_str(), _TRUNCATE);
|
||||||
EXTENSION_RETURN();
|
EXTENSION_RETURN();
|
||||||
|
@ -2,359 +2,359 @@
|
|||||||
Ammo Class: B_556x45_Ball
|
Ammo Class: B_556x45_Ball
|
||||||
MaxRanges (m): [300, 500, 500]
|
MaxRanges (m): [300, 500, 500]
|
||||||
MuzzleVelocities (m/s): [750, 870, 910]
|
MuzzleVelocities (m/s): [750, 870, 910]
|
||||||
Max. velocity difference (m/s): 25.51
|
Max. Velocity diff (m/s): 26.68
|
||||||
Max. drop difference (cm): 2.05
|
Max. Drop diff (cm): 1.98
|
||||||
Max. tof difference (ms): 10.0
|
Max. Tof diff (ms): 10.5
|
||||||
Optimal airFriction: 0.00126466
|
Optimal airFriction: 0.00130094
|
||||||
##########################################
|
##########################################
|
||||||
Ammo Class: ACE_556x45_Ball_Mk262
|
Ammo Class: ACE_556x45_Ball_Mk262
|
||||||
MaxRanges (m): [600, 600]
|
MaxRanges (m): [600, 600]
|
||||||
MuzzleVelocities (m/s): [810, 840]
|
MuzzleVelocities (m/s): [810, 840]
|
||||||
Max. velocity difference (m/s): 14.9
|
Max. Velocity diff (m/s): 14.67
|
||||||
Max. drop difference (cm): 2.67
|
Max. Drop diff (cm): 2.58
|
||||||
Max. tof difference (ms): 10.0
|
Max. Tof diff (ms): 10.5
|
||||||
Optimal airFriction: 0.00109563
|
Optimal airFriction: 0.00111805
|
||||||
##########################################
|
##########################################
|
||||||
Ammo Class: ACE_556x45_Ball_Mk318
|
Ammo Class: ACE_556x45_Ball_Mk318
|
||||||
MaxRanges (m): [300, 500, 500]
|
MaxRanges (m): [300, 500, 500]
|
||||||
MuzzleVelocities (m/s): [780, 880, 950]
|
MuzzleVelocities (m/s): [780, 880, 950]
|
||||||
Max. velocity difference (m/s): 20.86
|
Max. Velocity diff (m/s): 21.13
|
||||||
Max. drop difference (cm): 2.29
|
Max. Drop diff (cm): 2.06
|
||||||
Max. tof difference (ms): 9.0
|
Max. Tof diff (ms): 9.5
|
||||||
Optimal airFriction: 0.00123318
|
Optimal airFriction: 0.0012588
|
||||||
##########################################
|
##########################################
|
||||||
Ammo Class: ACE_556x45_Ball_M995_AP
|
Ammo Class: ACE_556x45_Ball_M995_AP
|
||||||
MaxRanges (m): [400, 500]
|
MaxRanges (m): [400, 500]
|
||||||
MuzzleVelocities (m/s): [820, 880]
|
MuzzleVelocities (m/s): [820, 880]
|
||||||
Max. velocity difference (m/s): 17.92
|
Max. Velocity diff (m/s): 17.28
|
||||||
Max. drop difference (cm): 1.25
|
Max. Drop diff (cm): 1.04
|
||||||
Max. tof difference (ms): 7.0
|
Max. Tof diff (ms): 6.0
|
||||||
Optimal airFriction: 0.00123272
|
Optimal airFriction: 0.00126182
|
||||||
##########################################
|
##########################################
|
||||||
Ammo Class: B_545x39_Ball_F
|
Ammo Class: B_545x39_Ball_F
|
||||||
MaxRanges (m): [400, 500]
|
MaxRanges (m): [400, 500]
|
||||||
MuzzleVelocities (m/s): [735, 892]
|
MuzzleVelocities (m/s): [735, 892]
|
||||||
Max. velocity difference (m/s): 23.07
|
Max. Velocity diff (m/s): 23.85
|
||||||
Max. drop difference (cm): 3.76
|
Max. Drop diff (cm): 3.61
|
||||||
Max. tof difference (ms): 12.0
|
Max. Tof diff (ms): 12.0
|
||||||
Optimal airFriction: 0.00116278
|
Optimal airFriction: 0.00119458
|
||||||
##########################################
|
##########################################
|
||||||
Ammo Class: B_580x42_Ball_F
|
Ammo Class: B_580x42_Ball_F
|
||||||
MaxRanges (m): [500, 500]
|
MaxRanges (m): [500, 500]
|
||||||
MuzzleVelocities (m/s): [930, 970]
|
MuzzleVelocities (m/s): [930, 970]
|
||||||
Max. velocity difference (m/s): 24.7
|
Max. Velocity diff (m/s): 25.65
|
||||||
Max. drop difference (cm): 1.51
|
Max. Drop diff (cm): 1.46
|
||||||
Max. tof difference (ms): 8.0
|
Max. Tof diff (ms): 8.5
|
||||||
Optimal airFriction: 0.00117956
|
Optimal airFriction: 0.00121087
|
||||||
##########################################
|
##########################################
|
||||||
Ammo Class: B_65x39_Caseless
|
Ammo Class: B_65x39_Caseless
|
||||||
MaxRanges (m): [400, 800, 800]
|
MaxRanges (m): [400, 800, 800]
|
||||||
MuzzleVelocities (m/s): [730, 800, 830]
|
MuzzleVelocities (m/s): [730, 800, 830]
|
||||||
Max. velocity difference (m/s): 22.17
|
Max. Velocity diff (m/s): 23.49
|
||||||
Max. drop difference (cm): 4.83
|
Max. Drop diff (cm): 4.59
|
||||||
Max. tof difference (ms): 16.0
|
Max. Tof diff (ms): 16.5
|
||||||
Optimal airFriction: 0.00075308
|
Optimal airFriction: 0.00077363
|
||||||
##########################################
|
##########################################
|
||||||
Ammo Class: ACE_65x47_Ball_Scenar
|
Ammo Class: ACE_65x47_Ball_Scenar
|
||||||
MaxRanges (m): [500, 800]
|
MaxRanges (m): [500, 800]
|
||||||
MuzzleVelocities (m/s): [730, 830]
|
MuzzleVelocities (m/s): [730, 830]
|
||||||
Max. velocity difference (m/s): 16.94
|
Max. Velocity diff (m/s): 17.09
|
||||||
Max. drop difference (cm): 2.67
|
Max. Drop diff (cm): 2.41
|
||||||
Max. tof difference (ms): 9.0
|
Max. Tof diff (ms): 8.0
|
||||||
Optimal airFriction: 0.00067037
|
Optimal airFriction: 0.00069003
|
||||||
##########################################
|
##########################################
|
||||||
Ammo Class: ACE_65_Creedmor_Ball
|
Ammo Class: ACE_65_Creedmor_Ball
|
||||||
MaxRanges (m): [600, 1000]
|
MaxRanges (m): [600, 1000]
|
||||||
MuzzleVelocities (m/s): [750, 860]
|
MuzzleVelocities (m/s): [750, 860]
|
||||||
Max. velocity difference (m/s): 21.08
|
Max. Velocity diff (m/s): 22.99
|
||||||
Max. drop difference (cm): 4.29
|
Max. Drop diff (cm): 3.82
|
||||||
Max. tof difference (ms): 14.0
|
Max. Tof diff (ms): 16.0
|
||||||
Optimal airFriction: 0.00060887
|
Optimal airFriction: 0.00062437
|
||||||
##########################################
|
##########################################
|
||||||
Ammo Class: B_762x51_Ball
|
Ammo Class: B_762x51_Ball
|
||||||
MaxRanges (m): [500, 800]
|
MaxRanges (m): [500, 800]
|
||||||
MuzzleVelocities (m/s): [700, 833]
|
MuzzleVelocities (m/s): [700, 833]
|
||||||
Max. velocity difference (m/s): 27.7
|
Max. Velocity diff (m/s): 29.78
|
||||||
Max. drop difference (cm): 6.71
|
Max. Drop diff (cm): 6.24
|
||||||
Max. tof difference (ms): 23.0
|
Max. Tof diff (ms): 26.0
|
||||||
Optimal airFriction: 0.00100957
|
Optimal airFriction: 0.00103711
|
||||||
##########################################
|
##########################################
|
||||||
Ammo Class: ACE_762x51_Ball_M118LR
|
Ammo Class: ACE_762x51_Ball_M118LR
|
||||||
MaxRanges (m): [600, 800]
|
MaxRanges (m): [600, 800]
|
||||||
MuzzleVelocities (m/s): [750, 795]
|
MuzzleVelocities (m/s): [750, 795]
|
||||||
Max. velocity difference (m/s): 23.28
|
Max. Velocity diff (m/s): 24.95
|
||||||
Max. drop difference (cm): 3.65
|
Max. Drop diff (cm): 3.64
|
||||||
Max. tof difference (ms): 17.0
|
Max. Tof diff (ms): 18.0
|
||||||
Optimal airFriction: 0.00082828
|
Optimal airFriction: 0.00085157
|
||||||
##########################################
|
##########################################
|
||||||
Ammo Class: ACE_762x51_Ball_Mk316_Mod_0
|
Ammo Class: ACE_762x51_Ball_Mk316_Mod_0
|
||||||
MaxRanges (m): [600, 800]
|
MaxRanges (m): [600, 800]
|
||||||
MuzzleVelocities (m/s): [780, 810]
|
MuzzleVelocities (m/s): [780, 810]
|
||||||
Max. velocity difference (m/s): 23.39
|
Max. Velocity diff (m/s): 25.0
|
||||||
Max. drop difference (cm): 3.25
|
Max. Drop diff (cm): 3.31
|
||||||
Max. tof difference (ms): 16.0
|
Max. Tof diff (ms): 17.0
|
||||||
Optimal airFriction: 0.00082029
|
Optimal airFriction: 0.00084311
|
||||||
##########################################
|
##########################################
|
||||||
Ammo Class: ACE_762x51_Ball_Mk319_Mod_0
|
Ammo Class: ACE_762x51_Ball_Mk319_Mod_0
|
||||||
MaxRanges (m): [600, 800]
|
MaxRanges (m): [600, 800]
|
||||||
MuzzleVelocities (m/s): [840, 910]
|
MuzzleVelocities (m/s): [840, 910]
|
||||||
Max. velocity difference (m/s): 19.18
|
Max. Velocity diff (m/s): 18.56
|
||||||
Max. drop difference (cm): 3.9
|
Max. Drop diff (cm): 3.74
|
||||||
Max. tof difference (ms): 17.0
|
Max. Tof diff (ms): 17.0
|
||||||
Optimal airFriction: 0.00102338
|
Optimal airFriction: 0.00104515
|
||||||
##########################################
|
##########################################
|
||||||
Ammo Class: ACE_762x51_Ball_M993_AP
|
Ammo Class: ACE_762x51_Ball_M993_AP
|
||||||
MaxRanges (m): [600, 800]
|
MaxRanges (m): [600, 800]
|
||||||
MuzzleVelocities (m/s): [875, 930]
|
MuzzleVelocities (m/s): [875, 930]
|
||||||
Max. velocity difference (m/s): 19.39
|
Max. Velocity diff (m/s): 18.62
|
||||||
Max. drop difference (cm): 4.08
|
Max. Drop diff (cm): 4.03
|
||||||
Max. tof difference (ms): 18.0
|
Max. Tof diff (ms): 18.0
|
||||||
Optimal airFriction: 0.00107148
|
Optimal airFriction: 0.0010939
|
||||||
##########################################
|
##########################################
|
||||||
Ammo Class: ACE_30_06_M1_Ball
|
Ammo Class: ACE_30_06_M1_Ball
|
||||||
MaxRanges (m): [600, 800, 900]
|
MaxRanges (m): [600, 800, 900]
|
||||||
MuzzleVelocities (m/s): [700, 800, 840]
|
MuzzleVelocities (m/s): [700, 800, 840]
|
||||||
Max. velocity difference (m/s): 14.56
|
Max. Velocity diff (m/s): 14.2
|
||||||
Max. drop difference (cm): 7.89
|
Max. Drop diff (cm): 7.95
|
||||||
Max. tof difference (ms): 15.0
|
Max. Tof diff (ms): 15.0
|
||||||
Optimal airFriction: 0.000809
|
Optimal airFriction: 0.00082645
|
||||||
##########################################
|
##########################################
|
||||||
Ammo Class: ACE_7_Remington_Magnum_Ball
|
Ammo Class: ACE_7_Remington_Magnum_Ball
|
||||||
MaxRanges (m): [600, 800, 1000]
|
MaxRanges (m): [600, 800, 1000]
|
||||||
MuzzleVelocities (m/s): [720, 812, 830]
|
MuzzleVelocities (m/s): [720, 812, 830]
|
||||||
Max. velocity difference (m/s): 17.47
|
Max. Velocity diff (m/s): 18.9
|
||||||
Max. drop difference (cm): 4.54
|
Max. Drop diff (cm): 4.03
|
||||||
Max. tof difference (ms): 11.0
|
Max. Tof diff (ms): 11.5
|
||||||
Optimal airFriction: 0.00056738
|
Optimal airFriction: 0.00058198
|
||||||
##########################################
|
##########################################
|
||||||
Ammo Class: ACE_243_Winchester_Ball
|
Ammo Class: ACE_243_Winchester_Ball
|
||||||
MaxRanges (m): [700, 900, 900]
|
MaxRanges (m): [700, 900, 900]
|
||||||
MuzzleVelocities (m/s): [830, 900, 920]
|
MuzzleVelocities (m/s): [830, 900, 920]
|
||||||
Max. velocity difference (m/s): 22.55
|
Max. Velocity diff (m/s): 23.53
|
||||||
Max. drop difference (cm): 4.78
|
Max. Drop diff (cm): 4.62
|
||||||
Max. tof difference (ms): 13.0
|
Max. Tof diff (ms): 13.5
|
||||||
Optimal airFriction: 0.00067875
|
Optimal airFriction: 0.00069778
|
||||||
##########################################
|
##########################################
|
||||||
Ammo Class: ACE_762x67_Ball_Mk248_Mod_0
|
Ammo Class: ACE_762x67_Ball_Mk248_Mod_0
|
||||||
MaxRanges (m): [800, 900, 900]
|
MaxRanges (m): [800, 900, 900]
|
||||||
MuzzleVelocities (m/s): [865, 900, 924]
|
MuzzleVelocities (m/s): [865, 900, 924]
|
||||||
Max. velocity difference (m/s): 24.43
|
Max. Velocity diff (m/s): 25.84
|
||||||
Max. drop difference (cm): 5.17
|
Max. Drop diff (cm): 5.03
|
||||||
Max. tof difference (ms): 15.0
|
Max. Tof diff (ms): 16.0
|
||||||
Optimal airFriction: 0.0007053
|
Optimal airFriction: 0.00072468
|
||||||
##########################################
|
##########################################
|
||||||
Ammo Class: ACE_762x67_Ball_Mk248_Mod_1
|
Ammo Class: ACE_762x67_Ball_Mk248_Mod_1
|
||||||
MaxRanges (m): [800, 900, 900]
|
MaxRanges (m): [800, 900, 900]
|
||||||
MuzzleVelocities (m/s): [847, 867, 877]
|
MuzzleVelocities (m/s): [847, 867, 877]
|
||||||
Max. velocity difference (m/s): 20.16
|
Max. Velocity diff (m/s): 20.18
|
||||||
Max. drop difference (cm): 2.99
|
Max. Drop diff (cm): 2.7
|
||||||
Max. tof difference (ms): 12.0
|
Max. Tof diff (ms): 11.5
|
||||||
Optimal airFriction: 0.00061188
|
Optimal airFriction: 0.00063027
|
||||||
##########################################
|
##########################################
|
||||||
Ammo Class: ACE_762x67_Ball_Berger_Hybrid_OTM
|
Ammo Class: ACE_762x67_Ball_Berger_Hybrid_OTM
|
||||||
MaxRanges (m): [900, 1000, 1000]
|
MaxRanges (m): [900, 1000, 1000]
|
||||||
MuzzleVelocities (m/s): [800, 853, 884]
|
MuzzleVelocities (m/s): [800, 853, 884]
|
||||||
Max. velocity difference (m/s): 19.65
|
Max. Velocity diff (m/s): 19.94
|
||||||
Max. drop difference (cm): 8.25
|
Max. Drop diff (cm): 8.04
|
||||||
Max. tof difference (ms): 16.0
|
Max. Tof diff (ms): 16.0
|
||||||
Optimal airFriction: 0.00053733
|
Optimal airFriction: 0.00055262
|
||||||
##########################################
|
##########################################
|
||||||
Ammo Class: B_762x54_Ball
|
Ammo Class: B_762x54_Ball
|
||||||
MaxRanges (m): [500, 800, 800]
|
MaxRanges (m): [500, 800, 800]
|
||||||
MuzzleVelocities (m/s): [700, 820, 833]
|
MuzzleVelocities (m/s): [700, 820, 833]
|
||||||
Max. velocity difference (m/s): 14.61
|
Max. Velocity diff (m/s): 13.84
|
||||||
Max. drop difference (cm): 5.74
|
Max. Drop diff (cm): 5.42
|
||||||
Max. tof difference (ms): 15.0
|
Max. Tof diff (ms): 12.5
|
||||||
Optimal airFriction: 0.00100023
|
Optimal airFriction: 0.00102329
|
||||||
##########################################
|
##########################################
|
||||||
Ammo Class: ACE_762x35_Ball
|
Ammo Class: ACE_762x35_Ball
|
||||||
MaxRanges (m): [400, 500]
|
MaxRanges (m): [400, 500]
|
||||||
MuzzleVelocities (m/s): [620, 675]
|
MuzzleVelocities (m/s): [620, 675]
|
||||||
Max. velocity difference (m/s): 4.17
|
Max. Velocity diff (m/s): 3.68
|
||||||
Max. drop difference (cm): 1.71
|
Max. Drop diff (cm): 1.54
|
||||||
Max. tof difference (ms): 4.0
|
Max. Tof diff (ms): 3.5
|
||||||
Optimal airFriction: 0.00128942
|
Optimal airFriction: 0.00131689
|
||||||
##########################################
|
##########################################
|
||||||
Ammo Class: ACE_762x39_Ball
|
Ammo Class: ACE_762x39_Ball
|
||||||
MaxRanges (m): [400, 600]
|
MaxRanges (m): [400, 600]
|
||||||
MuzzleVelocities (m/s): [650, 750]
|
MuzzleVelocities (m/s): [650, 750]
|
||||||
Max. velocity difference (m/s): 13.0
|
Max. Velocity diff (m/s): 15.54
|
||||||
Max. drop difference (cm): 3.78
|
Max. Drop diff (cm): 3.92
|
||||||
Max. tof difference (ms): 8.0
|
Max. Tof diff (ms): 8.5
|
||||||
Optimal airFriction: 0.00151621
|
Optimal airFriction: 0.00154815
|
||||||
##########################################
|
##########################################
|
||||||
Ammo Class: ACE_762x54_Ball_7T2
|
Ammo Class: ACE_762x54_Ball_7T2
|
||||||
MaxRanges (m): [500, 800, 800]
|
MaxRanges (m): [500, 800, 800]
|
||||||
MuzzleVelocities (m/s): [680, 750, 800]
|
MuzzleVelocities (m/s): [680, 750, 800]
|
||||||
Max. velocity difference (m/s): 9.79
|
Max. Velocity diff (m/s): 9.37
|
||||||
Max. drop difference (cm): 7.89
|
Max. Drop diff (cm): 7.72
|
||||||
Max. tof difference (ms): 11.0
|
Max. Tof diff (ms): 9.5
|
||||||
Optimal airFriction: 0.00103989
|
Optimal airFriction: 0.00106104
|
||||||
##########################################
|
##########################################
|
||||||
Ammo Class: ACE_303_Ball
|
Ammo Class: ACE_303_Ball
|
||||||
MaxRanges (m): [900, 1000]
|
MaxRanges (m): [900, 1000]
|
||||||
MuzzleVelocities (m/s): [748, 765]
|
MuzzleVelocities (m/s): [748, 765]
|
||||||
Max. velocity difference (m/s): 7.24
|
Max. Velocity diff (m/s): 6.94
|
||||||
Max. drop difference (cm): 5.65
|
Max. Drop diff (cm): 5.32
|
||||||
Max. tof difference (ms): 11.0
|
Max. Tof diff (ms): 10.5
|
||||||
Optimal airFriction: 0.0008349
|
Optimal airFriction: 0.00085117
|
||||||
##########################################
|
##########################################
|
||||||
Ammo Class: B_93x64_Ball
|
Ammo Class: B_93x64_Ball
|
||||||
MaxRanges (m): [900, 1000]
|
MaxRanges (m): [900, 1000]
|
||||||
MuzzleVelocities (m/s): [850, 880]
|
MuzzleVelocities (m/s): [850, 880]
|
||||||
Max. velocity difference (m/s): 11.18
|
Max. Velocity diff (m/s): 12.89
|
||||||
Max. drop difference (cm): 9.08
|
Max. Drop diff (cm): 8.75
|
||||||
Max. tof difference (ms): 15.0
|
Max. Tof diff (ms): 13.5
|
||||||
Optimal airFriction: 0.00108571
|
Optimal airFriction: 0.00110727
|
||||||
##########################################
|
##########################################
|
||||||
Ammo Class: B_408_Ball
|
Ammo Class: B_408_Ball
|
||||||
MaxRanges (m): [1600, 1600]
|
MaxRanges (m): [1600, 1600]
|
||||||
MuzzleVelocities (m/s): [862, 872]
|
MuzzleVelocities (m/s): [862, 872]
|
||||||
Max. velocity difference (m/s): 28.15
|
Max. Velocity diff (m/s): 29.95
|
||||||
Max. drop difference (cm): 15.97
|
Max. Drop diff (cm): 17.04
|
||||||
Max. tof difference (ms): 77.0
|
Max. Tof diff (ms): 41.5
|
||||||
Optimal airFriction: 0.00044958
|
Optimal airFriction: 0.00046249
|
||||||
##########################################
|
##########################################
|
||||||
Ammo Class: ACE_408_Ball
|
Ammo Class: ACE_408_Ball
|
||||||
MaxRanges (m): [1200, 1200]
|
MaxRanges (m): [1200, 1200]
|
||||||
MuzzleVelocities (m/s): [1057, 1067]
|
MuzzleVelocities (m/s): [1057, 1067]
|
||||||
Max. velocity difference (m/s): 37.45
|
Max. Velocity diff (m/s): 39.19
|
||||||
Max. drop difference (cm): 7.45
|
Max. Drop diff (cm): 7.92
|
||||||
Max. tof difference (ms): 56.0
|
Max. Tof diff (ms): 30.0
|
||||||
Optimal airFriction: 0.00063655
|
Optimal airFriction: 0.00065414
|
||||||
##########################################
|
##########################################
|
||||||
Ammo Class: ACE_106x83mm_Ball
|
Ammo Class: ACE_106x83mm_Ball
|
||||||
MaxRanges (m): [1400, 1400]
|
MaxRanges (m): [1500, 1500]
|
||||||
MuzzleVelocities (m/s): [955, 965]
|
MuzzleVelocities (m/s): [955, 965]
|
||||||
Max. velocity difference (m/s): 23.44
|
Max. Velocity diff (m/s): 23.14
|
||||||
Max. drop difference (cm): 8.93
|
Max. Drop diff (cm): 12.44
|
||||||
Max. tof difference (ms): 25.0
|
Max. Tof diff (ms): 31.5
|
||||||
Optimal airFriction: 0.00052047
|
Optimal airFriction: 0.0005354
|
||||||
##########################################
|
##########################################
|
||||||
Ammo Class: B_338_Ball
|
Ammo Class: B_338_Ball
|
||||||
MaxRanges (m): [1100, 1300]
|
MaxRanges (m): [1100, 1300]
|
||||||
MuzzleVelocities (m/s): [880, 925]
|
MuzzleVelocities (m/s): [880, 925]
|
||||||
Max. velocity difference (m/s): 31.95
|
Max. Velocity diff (m/s): 33.76
|
||||||
Max. drop difference (cm): 9.97
|
Max. Drop diff (cm): 10.17
|
||||||
Max. tof difference (ms): 33.0
|
Max. Tof diff (ms): 35.0
|
||||||
Optimal airFriction: 0.00059133
|
Optimal airFriction: 0.00060841
|
||||||
##########################################
|
##########################################
|
||||||
Ammo Class: B_338_NM_Ball
|
Ammo Class: B_338_NM_Ball
|
||||||
MaxRanges (m): [1100, 1300]
|
MaxRanges (m): [1100, 1300]
|
||||||
MuzzleVelocities (m/s): [790, 820]
|
MuzzleVelocities (m/s): [790, 820]
|
||||||
Max. velocity difference (m/s): 24.5
|
Max. Velocity diff (m/s): 26.43
|
||||||
Max. drop difference (cm): 8.87
|
Max. Drop diff (cm): 9.16
|
||||||
Max. tof difference (ms): 27.0
|
Max. Tof diff (ms): 30.0
|
||||||
Optimal airFriction: 0.00052201
|
Optimal airFriction: 0.00053639
|
||||||
##########################################
|
##########################################
|
||||||
Ammo Class: ACE_338_Ball
|
Ammo Class: ACE_338_Ball
|
||||||
MaxRanges (m): [1200, 1300]
|
MaxRanges (m): [1200, 1300]
|
||||||
MuzzleVelocities (m/s): [800, 830]
|
MuzzleVelocities (m/s): [800, 830]
|
||||||
Max. velocity difference (m/s): 23.06
|
Max. Velocity diff (m/s): 24.93
|
||||||
Max. drop difference (cm): 11.27
|
Max. Drop diff (cm): 10.92
|
||||||
Max. tof difference (ms): 25.0
|
Max. Tof diff (ms): 27.0
|
||||||
Optimal airFriction: 0.0005219
|
Optimal airFriction: 0.00053585
|
||||||
##########################################
|
##########################################
|
||||||
Ammo Class: ACE_338_Ball_API526
|
Ammo Class: ACE_338_Ball_API526
|
||||||
MaxRanges (m): [1200, 1300]
|
MaxRanges (m): [1200, 1300]
|
||||||
MuzzleVelocities (m/s): [880, 920]
|
MuzzleVelocities (m/s): [880, 920]
|
||||||
Max. velocity difference (m/s): 17.05
|
Max. Velocity diff (m/s): 36.03
|
||||||
Max. drop difference (cm): 14.52
|
Max. Drop diff (cm): 18.88
|
||||||
Max. tof difference (ms): 29.0
|
Max. Tof diff (ms): 46.0
|
||||||
Optimal airFriction: 0.00069611
|
Optimal airFriction: 0.0006922
|
||||||
##########################################
|
##########################################
|
||||||
Ammo Class: B_50BW_Ball_F
|
Ammo Class: B_50BW_Ball_F
|
||||||
MaxRanges (m): [300, 400]
|
MaxRanges (m): [300, 400]
|
||||||
MuzzleVelocities (m/s): [510, 596]
|
MuzzleVelocities (m/s): [510, 596]
|
||||||
Max. velocity difference (m/s): 29.6
|
Max. Velocity diff (m/s): 30.87
|
||||||
Max. drop difference (cm): 2.19
|
Max. Drop diff (cm): 2.32
|
||||||
Max. tof difference (ms): 18.0
|
Max. Tof diff (ms): 19.0
|
||||||
Optimal airFriction: 0.00202645
|
Optimal airFriction: 0.00205896
|
||||||
##########################################
|
##########################################
|
||||||
Ammo Class: B_127x99_Ball
|
Ammo Class: B_127x99_Ball
|
||||||
MaxRanges (m): [1300, 1300]
|
MaxRanges (m): [1300, 1300]
|
||||||
MuzzleVelocities (m/s): [895, 905]
|
MuzzleVelocities (m/s): [895, 905]
|
||||||
Max. velocity difference (m/s): 19.44
|
Max. Velocity diff (m/s): 19.23
|
||||||
Max. drop difference (cm): 9.36
|
Max. Drop diff (cm): 9.4
|
||||||
Max. tof difference (ms): 24.0
|
Max. Tof diff (ms): 25.0
|
||||||
Optimal airFriction: 0.00057503
|
Optimal airFriction: 0.00058679
|
||||||
##########################################
|
##########################################
|
||||||
Ammo Class: ACE_127x99_Ball_AMAX
|
Ammo Class: ACE_127x99_Ball_AMAX
|
||||||
MaxRanges (m): [1600, 1600]
|
MaxRanges (m): [1600, 1600]
|
||||||
MuzzleVelocities (m/s): [855, 865]
|
MuzzleVelocities (m/s): [855, 865]
|
||||||
Max. velocity difference (m/s): 16.61
|
Max. Velocity diff (m/s): 16.89
|
||||||
Max. drop difference (cm): 9.1
|
Max. Drop diff (cm): 8.95
|
||||||
Max. tof difference (ms): 20.0
|
Max. Tof diff (ms): 21.0
|
||||||
Optimal airFriction: 0.00036645
|
Optimal airFriction: 0.00037397
|
||||||
##########################################
|
##########################################
|
||||||
Ammo Class: B_127x108_Ball
|
Ammo Class: B_127x108_Ball
|
||||||
MaxRanges (m): [1300, 1300]
|
MaxRanges (m): [1300, 1300]
|
||||||
MuzzleVelocities (m/s): [815, 825]
|
MuzzleVelocities (m/s): [815, 825]
|
||||||
Max. velocity difference (m/s): 10.66
|
Max. Velocity diff (m/s): 10.11
|
||||||
Max. drop difference (cm): 11.74
|
Max. Drop diff (cm): 11.57
|
||||||
Max. tof difference (ms): 22.0
|
Max. Tof diff (ms): 21.0
|
||||||
Optimal airFriction: 0.000638
|
Optimal airFriction: 0.00065098
|
||||||
##########################################
|
##########################################
|
||||||
Ammo Class: ACE_762x51_Ball_Subsonic
|
Ammo Class: ACE_762x51_Ball_Subsonic
|
||||||
MaxRanges (m): [200, 300]
|
MaxRanges (m): [200, 300]
|
||||||
MuzzleVelocities (m/s): [305, 340]
|
MuzzleVelocities (m/s): [305, 340]
|
||||||
Max. velocity difference (m/s): 7.92
|
Max. Velocity diff (m/s): 11.63
|
||||||
Max. drop difference (cm): 3.77
|
Max. Drop diff (cm): 6.03
|
||||||
Max. tof difference (ms): 9.0
|
Max. Tof diff (ms): 14.0
|
||||||
Optimal airFriction: 0.00049899
|
Optimal airFriction: 0.00060194
|
||||||
##########################################
|
##########################################
|
||||||
Ammo Class: B_9x21_Ball
|
Ammo Class: B_9x21_Ball
|
||||||
MaxRanges (m): [200, 300]
|
MaxRanges (m): [200, 300]
|
||||||
MuzzleVelocities (m/s): [380, 420]
|
MuzzleVelocities (m/s): [380, 420]
|
||||||
Max. velocity difference (m/s): 34.77
|
Max. Velocity diff (m/s): 35.22
|
||||||
Max. drop difference (cm): 4.7
|
Max. Drop diff (cm): 4.66
|
||||||
Max. tof difference (ms): 31.0
|
Max. Tof diff (ms): 32.5
|
||||||
Optimal airFriction: 0.00208292
|
Optimal airFriction: 0.00211064
|
||||||
##########################################
|
##########################################
|
||||||
Ammo Class: ACE_9x18_Ball_57N181S
|
Ammo Class: ACE_9x18_Ball_57N181S
|
||||||
MaxRanges (m): [100, 200, 200]
|
MaxRanges (m): [100, 200, 200]
|
||||||
MuzzleVelocities (m/s): [298, 330, 350]
|
MuzzleVelocities (m/s): [298, 330, 350]
|
||||||
Max. velocity difference (m/s): 18.03
|
Max. Velocity diff (m/s): 17.52
|
||||||
Max. drop difference (cm): 4.41
|
Max. Drop diff (cm): 4.38
|
||||||
Max. tof difference (ms): 17.0
|
Max. Tof diff (ms): 16.5
|
||||||
Optimal airFriction: 0.00190333
|
Optimal airFriction: 0.0019192
|
||||||
##########################################
|
##########################################
|
||||||
Ammo Class: ACE_9x19_Ball
|
Ammo Class: ACE_9x19_Ball
|
||||||
MaxRanges (m): [100, 200, 200]
|
MaxRanges (m): [100, 200, 200]
|
||||||
MuzzleVelocities (m/s): [340, 370, 400]
|
MuzzleVelocities (m/s): [340, 370, 400]
|
||||||
Max. velocity difference (m/s): 23.95
|
Max. Velocity diff (m/s): 24.28
|
||||||
Max. drop difference (cm): 3.75
|
Max. Drop diff (cm): 3.82
|
||||||
Max. tof difference (ms): 17.0
|
Max. Tof diff (ms): 17.5
|
||||||
Optimal airFriction: 0.0019835
|
Optimal airFriction: 0.00201185
|
||||||
##########################################
|
##########################################
|
||||||
Ammo Class: ACE_10x25_Ball
|
Ammo Class: ACE_10x25_Ball
|
||||||
MaxRanges (m): [200, 300, 300]
|
MaxRanges (m): [200, 300, 300]
|
||||||
MuzzleVelocities (m/s): [360, 400, 430]
|
MuzzleVelocities (m/s): [360, 400, 430]
|
||||||
Max. velocity difference (m/s): 32.8
|
Max. Velocity diff (m/s): 33.1
|
||||||
Max. drop difference (cm): 8.8
|
Max. Drop diff (cm): 8.72
|
||||||
Max. tof difference (ms): 34.0
|
Max. Tof diff (ms): 34.5
|
||||||
Optimal airFriction: 0.00181928
|
Optimal airFriction: 0.00184252
|
||||||
##########################################
|
##########################################
|
||||||
Ammo Class: ACE_765x17_Ball
|
Ammo Class: ACE_765x17_Ball
|
||||||
MaxRanges (m): [100, 200, 200]
|
MaxRanges (m): [100, 200, 200]
|
||||||
MuzzleVelocities (m/s): [282, 300, 320]
|
MuzzleVelocities (m/s): [282, 300, 320]
|
||||||
Max. velocity difference (m/s): 11.18
|
Max. Velocity diff (m/s): 10.61
|
||||||
Max. drop difference (cm): 4.3
|
Max. Drop diff (cm): 4.08
|
||||||
Max. tof difference (ms): 13.0
|
Max. Tof diff (ms): 12.5
|
||||||
Optimal airFriction: 0.00163356
|
Optimal airFriction: 0.00165214
|
||||||
##########################################
|
##########################################
|
||||||
Ammo Class: B_127x54_Ball
|
Ammo Class: B_127x54_Ball
|
||||||
MaxRanges (m): [500, 500]
|
MaxRanges (m): [500, 500]
|
||||||
MuzzleVelocities (m/s): [295, 305]
|
MuzzleVelocities (m/s): [295, 305]
|
||||||
Max. velocity difference (m/s): 2.28
|
Max. Velocity diff (m/s): 2.24
|
||||||
Max. drop difference (cm): 4.52
|
Max. Drop diff (cm): 4.31
|
||||||
Max. tof difference (ms): 5.0
|
Max. Tof diff (ms): 5.0
|
||||||
Optimal airFriction: 0.00019268
|
Optimal airFriction: 0.00019568
|
||||||
##########################################
|
##########################################
|
||||||
Ammo Class: B_45ACP_Ball
|
Ammo Class: B_45ACP_Ball
|
||||||
MaxRanges (m): [100, 200, 200]
|
MaxRanges (m): [100, 200, 200]
|
||||||
MuzzleVelocities (m/s): [230, 250, 285]
|
MuzzleVelocities (m/s): [230, 250, 285]
|
||||||
Max. velocity difference (m/s): 3.5
|
Max. Velocity diff (m/s): 2.9
|
||||||
Max. drop difference (cm): 2.99
|
Max. Drop diff (cm): 2.87
|
||||||
Max. tof difference (ms): 6.0
|
Max. Tof diff (ms): 5.5
|
||||||
Optimal airFriction: 0.00081221
|
Optimal airFriction: 0.00082143
|
||||||
|
Loading…
Reference in New Issue
Block a user