Initial commit

This commit is contained in:
torsten committed 2026-08-13 18:33:10 +02:00
commit b7d90b9afe
16245 files changed
+3396666

No files matched your search

@@ -0,0 +1,47 @@
#
# monitoring of the target areas
# $Id$
# $HeadURL$
# $Author$
#
SET(SRCS
plugin.cpp
plugin.h
handler_geopairing.cpp
handler_geopairing.h
settings.cpp
settings.h
GeoPairing/GeoPairing.cpp
GeoPairing/GeoPairing.hpp
logger.cpp
logger.h
)
# 22.11.2024, Norbert Thoden
# cesPluginGeoPairing is a MODULE; not a SHARED
# So NGL_ADD_LIBRARY2 SHARED with would create ./Plugins/GeoPairing/cesplugingeopairing_export.h,
# but not with MODULE.
# But is an export macro realy needed? -> No
NGL_ADD_LIBRARY(AAR SV cesPluginGeoPairing MODULE ${SRCS})
NGL_TARGET_LINK_LIBRARIES(cesPluginGeoPairing
Qt5::Network
Qt5::Widgets
cesPluginInterface
ngldb
svcCesDDSCommon
# GeoParing stuff
GBL_Types
GBL_ConfigSystem
FW_Ballistic
svcCesGeoPairingImpl
${SCHUSSTAFEL_LIBRARY}
)
NGL_INSTALL_TARGET(cesPluginGeoPairing)
ADD_SUBDIRECTORY(GBL_Global)
ADD_SUBDIRECTORY(GBL_ConfigSystem)
ADD_SUBDIRECTORY(GBL_Types)
ADD_SUBDIRECTORY(FW_Ballistic)
ADD_SUBDIRECTORY(GeoPairingImpl)
ADD_SUBDIRECTORY(GeoPairing)
@@ -0,0 +1,84 @@
#pragma once
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
#include <GBL_Global/Types.hpp>
#include <QString>
#include "DiscreteType.hpp"
#include "PolygonParamType.hpp"
#include "CWParamType.hpp"
#include "StandardType.hpp"
namespace N_Ballistic
{
/**
* This is the container class for ammunitions
*
* @author Daniel.Schmid
* @version 1.0
* @created 10-Aug-2009 11:04:46
*/
struct Ammunition
{
public:
/**
* @author Daniel.Schmid
* @version 1.0
* @created 10-Aug-2009 11:10:21
*/
struct AmmunInfoType
{
QString m_Name;
/**
* Caliber of the ammunition, usually the diameter
*/
Float64 m_Caliber = 0.0;
/**
* The nominal shooting range
*/
Float64 m_Range = 0.0;
/**
* The initial velocity
*/
Float64 m_Speed = 0.0;
Float64 m_TimeOut = 0.0;
/**
* The calculation algorithm, can be "Generic", "PitonBressant" or "DAntonio"
*/
QString m_Algorithm;
/**
* Can be "OnTimer" or "OnDetonate"
*/
QString m_ReasonToDetonate;
/**
* This is the value of devivation of the ammunition (impact position variance)
*/
Float64 m_Deviation = 0.0;
/**
* This is the value of derivation of the ammunition (impact position right drift)
*/
Float64 m_Derivation = 0.0;
};
DiscreteType m_DiscreteParams;
PolygonParamType m_PolygonParams;
Ammunition::AmmunInfoType m_AmmunInfo;
StandardType m_StandardParams;
CWParamType m_CWParams;
};
}
@@ -0,0 +1,64 @@
/**
* @RDE_HEADER@
* Service Base
* $Id$
* $HeadURL$
* $Author$
*/
#pragma once
namespace N_Ballistic
{
// siehe SF_munitionsart_et
/*
enum ammunitionTypeIndirectFire {
UNKNOWN = 0,
STEILFEUER_HE_AZ = 1,
STEILFEUER_HE_DZ = 2,
STEILFEUER_BOMBLET = 3,
STEILFEUER_SM_ART = 4,
NEBEL = 5,
MOERSER = 9,
MOERSER_AZ = 10,
MOERSER_ANNZ = 11,
FLAEFLU_BK = 20,
FLAEFLU_RAKETE = 21,
FLAEFLU_BOMBLET = 22,
FLAEFLU_SB = 23,
IGLA = 25,
MK19_M430 = 111,
MK19_M385 = 112
};*/
enum ammunitionTypeIndirectFire { // TODO clarify values
UNKNOWN = 0,
STEILFEUER_HE_AZ = 371,
STEILFEUER_HE_DZ = 372,
STEILFEUER_BOMBLET = 373,
STEILFEUER_SM_ART = 374,
NEBEL = 385,
MOERSER = 381,
MOERSER_AZ = 381,
MOERSER_ANNZ = 381,
FLAEFLU_BK = 471,
FLAEFLU_RAKETE = 472,
FLAEFLU_BOMBLET = 473,
FLAEFLU_SB = 474,
IGLA = 25,
MK19_M430 = 27,
MK19_M385 = 26
};
enum ammunitionTypeOSAG {
UNKNOWN_OSAG = 0,
MK19_M385_OSAG = 26,
MK19_M430_OSAG = 27,
M1A2_PRC_OSAG = 30,
M1A2_PRX_OSAG = 31,
VLAP_PRC_OSAG = 32,
VLAP_PRX_OSAG = 33,
SMK_OSAG = 34,
CLUSTER_OSAG = 35,
MORTAR_PRC_OSAG = 217,
MORTAR_PRX_OSAG = 218
};
}
@@ -0,0 +1,219 @@
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
// manual class headers
#include "BallisticService.hpp"
// from cpp_includes
#include "FireControlPiton.hpp"
#include "TrajectoryDiscrete.hpp"
#include "TrajectoryPiton.hpp"
#include "FireControlAntonio.hpp"
#include "TrajectoryDecoy.hpp"
#include "FireControlBase.hpp"
#include "FireControlDecoy.hpp"
#include "TrajectoryBase.hpp"
#include "TrajectoryAntonio.hpp"
#include "FireControlDiscrete.hpp"
#include "FireControlRungeKutta.hpp"
#include "TrajectoryRungeKutta.hpp"
#include "FireControlRungeKuttaSimple.hpp"
#include "TrajectoryRungeKuttaSimple.hpp"
namespace N_Ballistic
{
// ---------------------------------------------------------------
// ## Constructors (generated)
// ---------------------------------------------------------------
BallisticService::BallisticService()
: m_logger(CesGeoPairing::getLogger("Plugin.GeoPairing.BallisticService"))
{}
// ---------------------------------------------------------------
// initializes the BallisticService with an Ammunition config
// file
// ---------------------------------------------------------------
bool BallisticService::init(const QString &a_configPath,
const QString &a_configFile,
const QString &a_ammunitionFile)
{
m_Initialized = false;
m_configPath = a_configPath;
m_configFile = a_configFile;
m_ammunitionFile = a_ammunitionFile;
INFO_LOG(m_logger) << "init";
m_ammuConfig = N_ConfigSystem::AmmuConfig::getInstance();
QString FileName = a_configPath + QLatin1Char('/') + a_ammunitionFile;
INFO_LOG(m_logger) << "FileName=" << FileName;
m_ammuConfig->initFilename(FileName);
m_Initialized = true;
return true;
}
// ---------------------------------------------------------------
// Creates an interface of according to the given parameters
// ---------------------------------------------------------------
bool BallisticService::createInterfaceOf(IUnknown **app_interface, E_TypeOfInterface a_typeInterface, const QString &a_ammuName)
{
if (!m_Initialized)
{
ERROR_LOG(m_logger) << "Class is not initialized" ;
return false;
}
Ammunition *configuredAmmunition;
E_TypeOfImpl e_impl = e_ImplBase;
DEBUG_LOG(m_logger) << "Target Interface Pointer : " << app_interface ;
DEBUG_LOG(m_logger) << "Searching in available ammunitions for " << a_ammuName ;
//iterate over all Ammunition nodes and find the corresponding Ammunition name
bool bAmmunitionFound = false;
//for (Ammunition *ammunition : m_BallisticConfiguration.m_Ammunition)
//for (Ammunition *ammunition : m_ammuConfig->GetAmmunitions())
QVector<N_Ballistic::Ammunition>* ammunitions = m_ammuConfig->GetAmmunitions();
for ( int i = 0; i < ammunitions->size(); i++)
{
N_Ballistic::Ammunition ammunition = m_ammuConfig->GetAmmunitions()->at(i);
//find ammunition
configuredAmmunition = &ammunition;
DEBUG_LOG(m_logger) << "Ammunition found: " << configuredAmmunition->m_AmmunInfo.m_Name ;
if (configuredAmmunition->m_AmmunInfo.m_Name == a_ammuName)
{
bAmmunitionFound = true;
if (configuredAmmunition->m_AmmunInfo.m_Algorithm == QStringLiteral("DAntonio"))
e_impl = e_ImplAntonio;
else if (configuredAmmunition->m_AmmunInfo.m_Algorithm == QStringLiteral("Piton"))
e_impl = e_ImplPiton;
else if (configuredAmmunition->m_AmmunInfo.m_Algorithm == QStringLiteral("Discrete"))
e_impl = e_ImplDiscrete;
else if (configuredAmmunition->m_AmmunInfo.m_Algorithm == QStringLiteral("Decoy"))
e_impl = e_ImplDecoy;
else if (configuredAmmunition->m_AmmunInfo.m_Algorithm == QStringLiteral("RungeKutta"))
e_impl = e_ImplRungeKutta;
else if (configuredAmmunition->m_AmmunInfo.m_Algorithm == QStringLiteral("RungeKuttaSimple"))
e_impl = e_ImplRungeKuttaSimple;
else if (configuredAmmunition->m_AmmunInfo.m_Algorithm == QStringLiteral("Generic") ||
configuredAmmunition->m_AmmunInfo.m_Algorithm == QStringLiteral("Standard") ||
configuredAmmunition->m_AmmunInfo.m_Algorithm == QStringLiteral("Base"))
e_impl = e_ImplBase;
else
{
ERROR_LOG(m_logger) << "Configured Algorithm not known :"
<< configuredAmmunition->m_AmmunInfo.m_Algorithm;
return false;
}
break;
}
}
if (!bAmmunitionFound)
{
ERROR_LOG(m_logger) << "Desired ammunition was not found :" << a_ammuName ;
return false;
}
// find out which algorithm to use for the given ammunition
switch (a_typeInterface)
{
case e_IFireControl:
{
FireControlBase *p_firecontrol = nullptr;
switch (e_impl)
{
case e_ImplBase:
p_firecontrol = new FireControlBase("FireControlBase");
break;
case e_ImplPiton:
p_firecontrol = new FireControlPiton;
break;
case e_ImplAntonio:
p_firecontrol = new FireControlAntonio;
break;
case e_ImplDiscrete:
p_firecontrol = new FireControlDiscrete;
break;
case e_ImplDecoy:
p_firecontrol = new FireControlDecoy;
break;
case e_ImplRungeKutta:
p_firecontrol = new FireControlRungeKutta;
break;
case e_ImplRungeKuttaSimple:
p_firecontrol = new FireControlRungeKuttaSimple;
break;
default:
ERROR_LOG(m_logger) << "Implementation does not exist: " << e_impl ;
*app_interface = nullptr;
return false;
}
p_firecontrol->init(*configuredAmmunition);
p_firecontrol->addRef();
*app_interface = p_firecontrol;
break;
}
case e_ITrajectory:
{
TrajectoryBase *p_trajectorybase = nullptr;
switch (e_impl)
{
case e_ImplBase:
p_trajectorybase = new TrajectoryBase("TrajectoryBase");
break;
case e_ImplPiton:
p_trajectorybase = new TrajectoryPiton;
break;
case e_ImplAntonio:
p_trajectorybase = new TrajectoryAntonio;
break;
case e_ImplDiscrete:
p_trajectorybase = new TrajectoryDiscrete;
break;
case e_ImplDecoy:
p_trajectorybase = new TrajectoryDecoy;
break;
case e_ImplRungeKutta:
p_trajectorybase = new TrajectoryRungeKutta;
break;
case e_ImplRungeKuttaSimple:
p_trajectorybase = new TrajectoryRungeKuttaSimple;
break;
default:
ERROR_LOG(m_logger) << "Implementation does not exist: " << e_impl ;
*app_interface = nullptr;
return false;
}
p_trajectorybase->init(*configuredAmmunition);
p_trajectorybase->addRef();
*app_interface = p_trajectorybase;
break;
}
default:
ERROR_LOG(m_logger) << "Interface does not exist: " << a_typeInterface ;
*app_interface = nullptr;
return false;
}
return true;
}
} // namespace N_Ballistic
@@ -0,0 +1,104 @@
#pragma once
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
// from stereotyped includes
#include "IUnknown.hpp"
#include "../logger.h"
#include <GBL_ConfigSystem/ammuconfig.h>
// manual class imports
namespace N_Ballistic
{
/**
* The factory class for ballistic interfaces
*
* @author Daniel.Schmid
* @version 1.0
* @created 07-Aug-2009 13:36:13
*/
class BallisticService
{
public:
/**
* @author Daniel.Schmid
* @version 1.0
* @created 07-Aug-2009 13:45:18
*/
enum E_TypeOfImpl
{
e_ImplBase = 0,
e_ImplPiton = 1,
e_ImplAntonio = 2,
e_ImplDiscrete = 3,
e_ImplDecoy = 4,
e_ImplRungeKutta = 5,
e_ImplRungeKuttaSimple = 6
};
/**
* @author Daniel.Schmid
* @version 1.0
* @created 07-Aug-2009 13:43:40
*/
enum E_TypeOfInterface
{
e_IFireControl = 0,
e_ITrajectory = 1,
e_ITerrainInfo = 2
};
/**
* initializes the BallisticService with an Ammunition config file
*
* @param a_configFilename xml file name
*/
bool init(const QString &a_configPath,
const QString &a_configFile,
const QString &a_ammunitionFile);
/**
* Creates an interface of according to the given parameters
*
* @param app_interface Interface pointer
* @param a_typeInterface Type of desired interface
* @param a_ammuName Name of ammunition
*/
bool createInterfaceOf(IUnknown **app_interface, E_TypeOfInterface a_typeInterface, const QString &a_ammuName);
QString getConfigPath() const { return m_configPath; }
QString getConfigFile() const { return m_configFile; }
QString getAmmunitionFile() const { return m_ammunitionFile; }
/**
* ## Constructors (generated)
*/
BallisticService();
private:
bool m_Initialized = false;
QString m_configPath;
QString m_configFile;
QString m_ammunitionFile;
N_ConfigSystem::AmmuConfig *m_ammuConfig = nullptr;
CesGeoPairing::LOGGER_T m_logger;
};
}
@@ -0,0 +1,66 @@
#
# CMake file für ballistische Berechnungen
# $Id$
# $HeadURL$
# $Author$
#
SET(my_SRCS
AmmunitionTypes.hpp
BallisticService.cpp
FireControlAntonio.cpp
FireControlBase.cpp
FireControlDiscrete.cpp
FireControlPiton.cpp
FireControlRungeKutta.cpp
TrajectoryAntonio.cpp
TrajectoryBase.cpp
TrajectoryDecoy.cpp
TrajectoryDiscrete.cpp
TrajectoryPiton.cpp
TrajectoryRungeKutta.cpp
TrajectoryRungeKuttaSimple.cpp
)
SET(my_HDRS
Ammunition.hpp
BallisticService.hpp
CWParamType.hpp
DiscreteType.hpp
FireControlAntonio.hpp
FireControlBase.hpp
FireControlDecoy.hpp
FireControlDiscrete.hpp
FireControlPiton.hpp
FireControlRungeKutta.hpp
FireControlRungeKuttaSimple.hpp
IBallisticConfigurator.hpp
IFireControl.hpp
ITrajectory.hpp
IUnknown.hpp
PolygonParamType.hpp
StandardType.hpp
TrajectoryAntonio.hpp
TrajectoryBase.hpp
TrajectoryDecoy.hpp
TrajectoryDiscrete.hpp
TrajectoryPiton.hpp
TrajectoryRungeKutta.hpp
TrajectoryRungeKuttaSimple.hpp
)
NGL_ADD_LIBRARY(AAR SV FW_Ballistic STATIC ${my_SRCS} ${my_HDRS})
NGL_TARGET_INCLUDE_DIRECTORIES(FW_Ballistic
PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/../
${CMAKE_CURRENT_BINARY_DIR}/../
)
NGL_TARGET_LINK_LIBRARIES(FW_Ballistic
GBL_ConfigSystem
GBL_Global
Qt5::Core
NGLLogger
GBL_Types
svcCesCommon
)
NGL_INSTALL_TARGET(FW_Ballistic)
@@ -0,0 +1,38 @@
#pragma once
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
#include <QVector>
namespace N_Ballistic
{
/**
* Representation of ballistic classes with CW values
*
* @author Daniel.Schmid
* @version 1.0
* @created 22-Jul-2010 13:32:10
*/
struct CWParamType
{
QVector<double> m_CW;
QVector<double> m_V0;
QVector<double> m_XW;
double m_Weight = 0.0;
bool m_Valid = false;
};
}
@@ -0,0 +1,77 @@
#pragma once
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
#include <GBL_Global/Types.hpp>
// manual class imports
namespace N_Ballistic
{
/**
* Discrete representation of ballistic values
*
* @author Daniel.Schmid
* @version 1.0
* @created 10-Aug-2009 11:09:31
*/
class DiscreteType
{
public:
/**
* Container for DerivationType
*
* @author Daniel.Schmid
* @version 1.0
* @created 10-Aug-2009 11:10:03
*/
struct DerivationType
{
Float64 m_CT2 = 0.0;
Float64 m_CY = 0.0;
Float64 m_C0 = 0.0;
};
/**
* Container for AxisParamType
*
* @author Daniel.Schmid
* @version 1.0
* @created 10-Aug-2009 11:09:50
*/
struct AxisParamType
{
Float64 m_CA = 0.0;
Float64 m_CT2 = 0.0;
Float64 m_CT1 = 0.0;
Float64 m_CAlpha2 = 0.0;
Float64 m_CAlpha1 = 0.0;
Float64 m_CRho = 0.0;
Float64 m_CV = 0.0;
Float64 m_C0 = 0.0;
};
DiscreteType::AxisParamType m_YAxis;
DiscreteType::AxisParamType m_ZAxis;
DiscreteType::AxisParamType m_XAxis;
DiscreteType::DerivationType m_Derivation;
bool m_Valid = false;
};
}
@@ -0,0 +1,406 @@
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
// manual class headers
#include "FireControlAntonio.hpp"
namespace N_Ballistic
{
// ---------------------------------------------------------------
// initializes the class with the ballistic configuration
// ---------------------------------------------------------------
bool FireControlAntonio::init(const Ammunition &a_ammunition)
{
m_Initialized = false;
TRACE_LOG(m_logger) << "FireControlAntonio::init : initialising..." ;
if (a_ammunition.m_StandardParams.m_Valid)
{
m_CRhoT = a_ammunition.m_StandardParams.m_Time.m_CRhoT;
m_CRhoA = a_ammunition.m_StandardParams.m_Angle.m_CRhoA;
INFO_LOG(m_logger) << "m_CRhoT : " << m_CRhoT ;
INFO_LOG(m_logger) << "m_CRhoA : " << m_CRhoA ;
m_UseStandard = true;
m_InitialAmmuVelocityV0constX0 = a_ammunition.m_AmmunInfo.m_Speed;
INFO_LOG(m_logger) << "m_InitialAmmuVelocityV0constX0 = " << m_InitialAmmuVelocityV0constX0 ;
}
else if (a_ammunition.m_PolygonParams.m_Valid)
{
m_InitialAX = a_ammunition.m_PolygonParams.m_InitialAX;
INFO_LOG(m_logger) << "m_InitialAX : " << m_InitialAX ;
int axcount = a_ammunition.m_PolygonParams.m_AX.size();
for (int i = 0; i < axcount; i++)
{
m_AX.push_back(a_ammunition.m_PolygonParams.m_AX[i].m_Coeff);
INFO_LOG(m_logger) << "AX " << a_ammunition.m_PolygonParams.m_AX[i].m_Index << " = " << a_ammunition.m_PolygonParams.m_AX[i].m_Coeff ;
}
int aycount = a_ammunition.m_PolygonParams.m_AY.size();
for (int i = 0; i < aycount; i++)
{
m_AY.push_back(a_ammunition.m_PolygonParams.m_AY[i].m_Coeff);
INFO_LOG(m_logger) << "AY " << a_ammunition.m_PolygonParams.m_AY[i].m_Index << " = " << a_ammunition.m_PolygonParams.m_AY[i].m_Coeff ;
}
m_UsePolynom = true;
m_InitialAmmuVelocityV0constX0 = a_ammunition.m_AmmunInfo.m_Speed;
INFO_LOG(m_logger) << "m_InitialAmmuVelocityV0constX0 = " << m_InitialAmmuVelocityV0constX0 ;
}
else
{
ERROR_LOG(m_logger) << "Parameters missing..." ;
return false;
}
if (!FireControlBase::init(a_ammunition))
return false;
INFO_LOG(m_logger) << "FireControlAntonio::init : initialized successfully!" ;
return true;
}
// ---------------------------------------------------------------
// returns the flight time of the projectile in seconds
// ---------------------------------------------------------------
Float64 FireControlAntonio::getFlightTime(const Float64 a_distance, const Float64 a_initialAmmuVelocity,
const N_Types::Radian64 a_terrainAngle, const Float64 a_airDensity)
{
if (m_UseStandard)
return getFlightTimeStandard(a_distance, a_initialAmmuVelocity, a_terrainAngle, a_airDensity);
if (m_UsePolynom)
return getFlightTimePolynom(a_distance, a_initialAmmuVelocity, a_terrainAngle, a_airDensity);
ERROR_LOG(m_logger) << "UseStandard or UsePolynom not set..." ;
return 0.0;
}
// ---------------------------------------------------------------
// returns the firing angle of the projectile if the following
// are given
// ---------------------------------------------------------------
Float64 FireControlAntonio::getFireAngle(const Float64 a_distance, const Float64 a_initialAmmuVelocity,
const N_Types::Radian64 a_terrainAngle, const Float64 a_airDensity)
{
if (m_UseStandard)
return getFireAngleStandard(a_distance, a_initialAmmuVelocity, a_terrainAngle, a_airDensity);
if (m_UsePolynom)
return getFireAnglePolynom(a_distance, a_initialAmmuVelocity, a_terrainAngle, a_airDensity);
ERROR_LOG(m_logger) << "UseStandard or UsePolynom not set..." ;
return 0.0;
}
// ---------------------------------------------------------------
// returns the flight time of the projectile in seconds
// ---------------------------------------------------------------
Float64 FireControlAntonio::getFlightTimeStandard(const Float64 a_distance, const Float64 a_initialAmmuVelocity,
const N_Types::Radian64 &a_terrainAngle, const Float64 a_airDensity)
{
Float64 d_second;
Float64 d_temp; // temp value
Float64 d_laserDistY; // Y laser value
if (!m_Initialized)
{
WARNING_LOG(m_logger) << "The class is not initialized" ;
return 0.0;
}
if (a_distance < 1.0)
{
ERROR_LOG(m_logger) << "a_distance is not valid : " << a_distance ;
return 0.0;
}
if (a_airDensity < 0.0)
{
ERROR_LOG(m_logger) << "a_airDensity is not valid : " << a_airDensity ;
return 0.0;
}
if (a_initialAmmuVelocity < 1.0)
{
ERROR_LOG(m_logger) << "a_initialAmmuVelocity is not valid : " << a_initialAmmuVelocity ;
return 0.0;
}
if (a_terrainAngle > M_PI_2 || a_terrainAngle < -M_PI_2)
{
ERROR_LOG(m_logger) << "a_terrainAngle is not valid : " << a_terrainAngle ;
return 0.0;
}
// t = Xe /(v0 * cos(Gamma) * corr)
// corr = 1 - cRhoT * Rho * Xe
//
// Gamma - terrain angle
// Rho - air density
// v0 - initial ammu velocity
// cRhoT - parameter
//----------------------------------------------------------
d_laserDistY = a_distance * cos(a_terrainAngle);
d_temp = 1.0 - (m_CRhoT * a_airDensity * d_laserDistY);
d_second = d_laserDistY / (a_initialAmmuVelocity * cos(a_terrainAngle) * d_temp);
if (d_second < 0.0)
d_second = 0.0;
return d_second;
}
// ---------------------------------------------------------------
// returns the firing angle of the projectile if the following
// are given
// ---------------------------------------------------------------
Float64 FireControlAntonio::getFireAngleStandard(const Float64 a_distance, const Float64 a_initialAmmuVelocity,
const N_Types::Radian64 &a_terrainAngle, const Float64 a_airDensity)
{
Float64 d_square; // square part of the function
Float64 d_tan; // tangent value of the function
N_Types::Radian64 o_tsi; // firing angle
Float64 d_correction; // correction value
Float64 d_temp; // temp value
Float64 d_laserDistZ; // Z laser value
Float64 d_laserDistY; // Y laser value
if (!m_Initialized)
{
WARNING_LOG(m_logger) << "The class is not initialized" ;
return 0.0;
}
if (a_distance < 1.0)
{
ERROR_LOG(m_logger) << "a_distance is not valid : " << a_distance ;
return 0.0;
}
if (a_airDensity < 0.0)
{
ERROR_LOG(m_logger) << "a_airDensity is not valid : " << a_airDensity ;
return 0.0;
}
if (a_initialAmmuVelocity < 1.0)
{
ERROR_LOG(m_logger) << "a_initialAmmuVelocity is not valid : " << a_initialAmmuVelocity ;
return 0.0;
}
if (a_terrainAngle > M_PI_2 || a_terrainAngle < -M_PI_2)
{
ERROR_LOG(m_logger) << "a_terrainAngle is not valid : " << a_terrainAngle ;
return 0.0;
}
// Tsi = atan((1/2) * ((Xe/c) - sqrt))
// sqrt = pow((Xe/c), 2) - 4 * (Ye + c) / c
// c = (9.81 * pow(Xe, 2) / ( 2 * pow(v0, 2))) / (corr1 * corr2)
// corr1 = pow((1 - cRhoA * Rho * Xe), 2)
// corr2 = 1 + cRhoT * Rho * Xe
// Xe = D * cos(Gamma)
//
// Gamma - terrain angle
// Rho - air density
// v0 - initial ammu velocity
// cRhoA, constA - constants
//----------------------------------------------------------
d_laserDistZ = a_distance * sin(a_terrainAngle);
d_laserDistY = a_distance * cos(a_terrainAngle);
d_temp = 1 + (m_CRhoA * a_airDensity * d_laserDistY);
d_correction = N_SST::G * pow(d_laserDistY, Float64(2));
d_correction /= (2.0 * pow(a_initialAmmuVelocity, Float64(2)));
d_correction /= d_temp;
d_temp = pow((1 - (m_CRhoT * a_airDensity * d_laserDistY)), Float64(2));
d_correction /= d_temp;
d_square = pow((d_laserDistY / d_correction), Float64(2));
d_square -= ((4.0 * (d_laserDistZ + d_correction)) / d_correction);
d_square = sqrt(d_square);
d_tan = (d_laserDistY / d_correction) - d_square;
d_tan /= 2.0;
o_tsi = atan(d_tan);
o_tsi -= a_terrainAngle;
return o_tsi;
}
// ---------------------------------------------------------------
// returns the flight time of the projectile in seconds
// ---------------------------------------------------------------
Float64 FireControlAntonio::getFlightTimePolynom(const Float64 a_distance, const Float64 a_initialAmmuVelocity,
const N_Types::Radian64 &a_terrainAngle, const Float64 a_airDensity)
{
if (!m_Initialized)
{
WARNING_LOG(m_logger) << "The class is not initialized" ;
return 0.0;
}
if (a_distance < 1.0)
{
ERROR_LOG(m_logger) << "a_distance is not valid : " << a_distance ;
return 0.0;
}
if (a_airDensity < 0.0)
{
ERROR_LOG(m_logger) << "a_airDensity is not valid : " << a_airDensity ;
return 0.0;
}
if (a_initialAmmuVelocity < 1.0)
{
ERROR_LOG(m_logger) << "a_initialAmmuVelocity is not valid : " << a_initialAmmuVelocity ;
return 0.0;
}
if (a_terrainAngle > M_PI_2 || a_terrainAngle < -M_PI_2)
{
ERROR_LOG(m_logger) << "a_terrainAngle is not valid : " << a_terrainAngle ;
return 0.0;
}
Float64 d_time = 0;
Float64 d_prevtime = 0;
Float64 d_distance = 0; // Y laser value
Float64 d_ax = 0; // ax coefficient
d_distance = a_distance * cos(a_terrainAngle);
d_ax = m_InitialAX;
d_time = getTimeForAx(d_distance, d_ax, a_initialAmmuVelocity, a_airDensity);
int iteration_counter = 0;
while (d_time - d_prevtime < 0.001)
{
iteration_counter++;
d_prevtime = d_time;
d_ax = getAxForTime(d_time);
d_time = getTimeForAx(d_distance, d_ax, a_initialAmmuVelocity, a_airDensity);
if (iteration_counter > 20)
{
WARNING_LOG(m_logger) << "Iteration interupted at 20 loops..." ;
break;
}
}
return d_time;
}
// ---------------------------------------------------------------
// returns the firing angle of the projectile if the following
// are given
// ---------------------------------------------------------------
Float64 FireControlAntonio::getFireAnglePolynom(const Float64 a_distance, const Float64 a_initialAmmuVelocity,
const N_Types::Radian64 &a_terrainAngle, const Float64 a_airDensity)
{
if (!m_Initialized)
{
WARNING_LOG(m_logger) << "The class is not initialized" ;
return 0.0;
}
if (a_distance < 1.0)
{
ERROR_LOG(m_logger) << "a_distance is not valid : " << a_distance ;
return 0.0;
}
if (a_airDensity < 0.0)
{
ERROR_LOG(m_logger) << "a_airDensity is not valid : " << a_airDensity ;
return 0.0;
}
if (a_initialAmmuVelocity < 1.0)
{
ERROR_LOG(m_logger) << "a_initialAmmuVelocity is not valid : " << a_initialAmmuVelocity ;
return 0.0;
}
if (a_terrainAngle > M_PI_2 || a_terrainAngle < -M_PI_2)
{
ERROR_LOG(m_logger) << "a_terrainAngle is not valid : " << a_terrainAngle ;
return 0.0;
}
N_Types::Radian64 o_tsi; // firing angle
Float64 d_correction; // correction value
Float64 d_temp; // temp value
Float64 d_time; // flight time
Float64 d_distance; // effective distance
Float64 d_ay;
d_distance = a_distance * cos(a_terrainAngle);
d_time = getFlightTimePolynom(d_distance, a_initialAmmuVelocity, a_terrainAngle, a_airDensity);
d_ay = getAyForTime(d_time);
// g * x
// tan tsi = -----------------------------
// 2 * v0^2 * (1 - ay * p * x)^2
d_correction = N_SST::G * d_distance;
d_correction /= (2.0 * pow(a_initialAmmuVelocity, Float64(2)));
d_temp = pow((1 - (d_ay * a_airDensity * d_distance)), Float64(2));
d_correction /= d_temp;
o_tsi = atan(d_correction);
o_tsi -= a_terrainAngle;
return o_tsi;
}
// ---------------------------------------------------------------
Float64 FireControlAntonio::getTimeForAx(Float64 a_distance, Float64 a_ax, Float64 a_velocity, Float64 a_airDensity)
{
Float64 d_time = 0;
// x
// d_time = -----------------------
// v0 * (1 - ax * p * x)
d_time = a_distance / a_velocity;
d_time /= 1 - (a_ax * a_airDensity * a_distance);
return d_time;
}
// ---------------------------------------------------------------
Float64 FireControlAntonio::getAxForTime(Float64 a_time) const
{
Float64 d_ax = 0;
//
// ax = (ax0 * t^0) + (ax1 * t^1) + (ax2 * t^2) + (ax3 * t^3) ...
//
for (unsigned int i = 0; i < m_AX.size(); i++)
d_ax += m_AX[i] * pow(a_time, i);
return d_ax;
}
// ---------------------------------------------------------------
Float64 FireControlAntonio::getAyForTime(Float64 a_time) const
{
Float64 d_ay = 0;
//
// ay = (ay0 * t^0) + (ay1 * t^1) + (ay2 * t^2) + (ay3 * t^3) ...
//
for (unsigned int i = 0; i < m_AY.size(); i++)
d_ay += m_AY[i] * pow(a_time, i);
return d_ay;
}
} // namespace N_Ballistic
@@ -0,0 +1,153 @@
#pragma once
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
// manual class imports
#include "FireControlBase.hpp"
namespace N_Ballistic
{
/**
* D'Antonio implementation for fire calculations
*
* @author Daniel.Schmid
* @version 1.0
* @created 07-Aug-2009 15:01:21
*/
class FireControlAntonio : public FireControlBase
{
public:
/**
* ## Constructors (generated)
*/
FireControlAntonio() : FireControlBase("FireControlAntonio") {}
/**
* initializes the class with the ballistic configuration
*
* @param a_ammunition
*/
bool init(const Ammunition &a_ammunition) override;
/**
* returns the flight time of the projectile in seconds
*
* @param a_distance distance to the target
* @param a_initialAmmuVelocity initial velocity
* @param a_terrainAngle gun angle to terrain
* @param a_airDensity air density
*/
Float64 getFlightTime(const Float64 a_distance, const Float64 a_initialAmmuVelocity,
const N_Types::Radian64 a_terrainAngle, const Float64 a_airDensity) override;
/**
* returns the firing angle of the projectile if the following are given
*
* @param a_distance distance to the target
* @param a_initialAmmuVelocity initial velocity
* @param a_terrainAngle gun angle to terrain
* @param a_airDensity air density
*/
Float64 getFireAngle(const Float64 a_distance, const Float64 a_initialAmmuVelocity,
const N_Types::Radian64 a_terrainAngle, const Float64 a_airDensity) override;
protected:
/**
* returns the flight time of the projectile in seconds
*
* @param a_distance distance to the target
* @param a_initialAmmuVelocity initial velocity
* @param a_terrainAngle gun angle to terrain
* @param a_airDensity air density
*/
virtual Float64 getFlightTimeStandard(const Float64 a_distance, const Float64 a_initialAmmuVelocity,
const N_Types::Radian64 &a_terrainAngle, const Float64 a_airDensity);
/**
* returns the firing angle of the projectile if the following are given
*
* @param a_distance distance to the target
* @param a_initialAmmuVelocity initial velocity
* @param a_terrainAngle gun angle to terrain
* @param a_airDensity air density
*/
virtual Float64 getFireAngleStandard(const Float64 a_distance, const Float64 a_initialAmmuVelocity,
const N_Types::Radian64 &a_terrainAngle, const Float64 a_airDensity);
/**
* returns the flight time of the projectile in seconds
*
* @param a_distance distance to the target
* @param a_initialAmmuVelocity initial velocity
* @param a_terrainAngle gun angle to terrain
* @param a_airDensity air density
*/
virtual Float64 getFlightTimePolynom(const Float64 a_distance, const Float64 a_initialAmmuVelocity,
const N_Types::Radian64 &a_terrainAngle, const Float64 a_airDensity);
/**
* returns the firing angle of the projectile if the following are given
*
* @param a_distance distance to the target
* @param a_initialAmmuVelocity initial velocity
* @param a_terrainAngle gun angle to terrain
* @param a_airDensity air density
*/
virtual Float64 getFireAnglePolynom(const Float64 a_distance, const Float64 a_initialAmmuVelocity,
const N_Types::Radian64 &a_terrainAngle, const Float64 a_airDensity);
/**
*
* @param a_distance
* @param a_ax
* @param a_velocity
* @param a_airDensity
*/
static Float64 getTimeForAx(Float64 a_distance, Float64 a_ax, Float64 a_velocity, Float64 a_airDensity);
/**
*
* @param a_time
*/
Float64 getAxForTime(Float64 a_time) const;
/**
*
* @param a_time
*/
Float64 getAyForTime(Float64 a_time) const;
private:
/**
* air density correction constant
*/
Float64 m_CRhoT = 0;
/**
* air density correction constant
*/
Float64 m_CRhoA = 0;
Float64 m_InitialAX = 0;
std::vector<Float64> m_AX;
std::vector<Float64> m_AY;
bool m_UseStandard = false;
bool m_UsePolynom = false;
};
}
@@ -0,0 +1,259 @@
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
// manual class headers
#include "FireControlBase.hpp"
namespace N_Ballistic
{
FireControlBase::FireControlBase(const char *loggerName)
: m_logger(CesGeoPairing::getLogger(loggerName))
{
}
FireControlBase::~FireControlBase()
{
deinit();
}
// ---------------------------------------------------------------
// Using this function a reference to the interface is added.
// ---------------------------------------------------------------
SInt32 FireControlBase::addRef()
{
return m_MyRefCounter++;
}
// ---------------------------------------------------------------
// Calling this function the reference from the interface may
// be removed.
// ---------------------------------------------------------------
SInt32 FireControlBase::release()
{
--m_MyRefCounter;
if (m_MyRefCounter <= 0)
{
delete this;
return 0;
}
else
return m_MyRefCounter;
}
// ---------------------------------------------------------------
// initializes the class with the ballistic configuration
// ---------------------------------------------------------------
bool FireControlBase::init(const Ammunition &a_ammunition)
{
m_Initialized = false;
if (a_ammunition.m_StandardParams.m_Valid)
{
TRACE_LOG(m_logger) << "FireControlBase::init : initialising StandardParams..." ;
m_InitialAmmuVelocityV0constX1 = a_ammunition.m_StandardParams.m_Speed.m_V0ConstX1;
m_InitialAmmuVelocityV0constX0 = a_ammunition.m_StandardParams.m_Speed.m_V0ConstX0;
m_CrossWindConstX3 = a_ammunition.m_StandardParams.m_CrossWind.m_ConstX3;
m_CrossWindConstX2 = a_ammunition.m_StandardParams.m_CrossWind.m_ConstX2;
m_CrossWindConstX1 = a_ammunition.m_StandardParams.m_CrossWind.m_ConstX1;
m_CrossWindConstX0 = a_ammunition.m_StandardParams.m_CrossWind.m_ConstX0;
}
m_Initialized = true;
TRACE_LOG(m_logger) << "m_InitialAmmuVelocityV0constX1 : " << m_InitialAmmuVelocityV0constX1 ;
TRACE_LOG(m_logger) << "m_InitialAmmuVelocityV0constX0 : " << m_InitialAmmuVelocityV0constX0 ;
TRACE_LOG(m_logger) << "m_CrossWindConstX3 : " << m_CrossWindConstX3 ;
TRACE_LOG(m_logger) << "m_CrossWindConstX2 : " << m_CrossWindConstX2 ;
TRACE_LOG(m_logger) << "m_CrossWindConstX1 : " << m_CrossWindConstX1 ;
TRACE_LOG(m_logger) << "m_CrossWindConstX0 : " << m_CrossWindConstX0 ;
TRACE_LOG(m_logger) << "FireControlBase::init : initialized successfully!" ;
return true;
}
// ---------------------------------------------------------------
// returns the flight time of the projectile in seconds
// ---------------------------------------------------------------
Float64 FireControlBase::getFlightTime(const Float64 a_distance,
const Float64 a_initialAmmuVelocity,
const N_Types::Radian64,
const Float64)
{
Float64 d_second;
Float64 d_temp; // temp value
if (!m_Initialized)
{
WARNING_LOG(m_logger) << "The class is not initialized" ;
return 0.0;
}
if (a_distance < 1.0 || a_initialAmmuVelocity < 1.0)
{
ERROR_LOG(m_logger) << "The parameters are not correct" ;
return 0.0;
}
d_temp = a_distance * N_SST::G / pow(a_initialAmmuVelocity, Float64(2));
d_second = 2 * a_initialAmmuVelocity / N_SST::G;
d_second *= sin(0.5 * asin(d_temp));
if (d_second < 0.0)
d_second = 0.0;
return d_second;
}
// ---------------------------------------------------------------
// returns the firing angle of the projectile if the following
// are given
// ---------------------------------------------------------------
Float64 FireControlBase::getFireAngle(const Float64 a_distance, const Float64 a_initialAmmuVelocity, const N_Types::Radian64 a_terrainAngle, const Float64 a_airDensity)
{
N_Types::Radian64 o_tsi; // firing angle
Float64 d_temp; // temp value
if (!m_Initialized)
{
WARNING_LOG(m_logger) << "The class is not initialized" ;
return 0.0;
}
if ((a_distance < 1.0) ||
(a_airDensity < 0.0) ||
(a_initialAmmuVelocity < 1.0) ||
(a_terrainAngle > M_PI_2) ||
(a_terrainAngle < -M_PI_2))
{
ERROR_LOG(m_logger) << "The parameters are not correct" ;
return 0.0;
}
d_temp = a_distance * N_SST::G / pow(a_initialAmmuVelocity, Float64(2));
o_tsi = asin(d_temp) / 2;
o_tsi -= a_terrainAngle;
return o_tsi;
}
// ---------------------------------------------------------------
// This function corrects the fire angle due to the cross wind,
// if the following are given
// ---------------------------------------------------------------
N_Types::Radian64 FireControlBase::getCrossWindCorrection(const Float64 a_crossWind, const Float64 a_distance)
{
Float64 d_deviation; // deviation of the ammu due the cross wind of 1m/sec
Float64 d_deviationTotal; // total deviation of the ammu due the cross wind
N_Types::Radian64 d_traverse; // deviation angle
if (!m_Initialized)
{
ERROR_LOG(m_logger) << "The class is not initialized" ;
return 0.0;
}
if (m_CrossWindConstX3 == 0 &&
m_CrossWindConstX2 == 0 &&
m_CrossWindConstX1 == 0 &&
m_CrossWindConstX0 == 0)
{
WARNING_LOG(m_logger) << "The class uses probably not initialized parameters" ;
return 0.0;
}
d_deviation = m_CrossWindConstX3 * pow(a_distance, Float64(3)) +
m_CrossWindConstX2 * pow(a_distance, Float64(2)) +
m_CrossWindConstX1 * a_distance +
m_CrossWindConstX0;
d_deviationTotal = d_deviation * a_crossWind;
d_traverse = atan2(d_deviationTotal, a_distance);
return d_traverse;
}
// ---------------------------------------------------------------
// returns the air density, provided the following are given
// ---------------------------------------------------------------
Float64 FireControlBase::getAirDensity(const Float64 a_atmosphericPressure, const Float64 a_airTemperature)
{
const Float64 d_FIXED_CONST = 0.348368; // fixed constant of the function
Float64 d_kelvin;
Float64 d_rho;
if ((a_atmosphericPressure <= 1.0) ||
(a_airTemperature <= -N_SST::ZERO_CELSIUS_IN_KELVIN))
{
ERROR_LOG(m_logger) << "The parameters are not correct, Pressure=" << a_atmosphericPressure << ", Temp=" << a_airTemperature ;
return 1.0;
}
d_kelvin = a_airTemperature + N_SST::ZERO_CELSIUS_IN_KELVIN;
d_rho = d_FIXED_CONST * a_atmosphericPressure / d_kelvin;
return d_rho;
}
// ---------------------------------------------------------------
// This function corrects the fire angle due to the cross wind,
// if the following are given
// ---------------------------------------------------------------
Float64 FireControlBase::getCrossWind(const N_Types::Coord3 &a_crossWind, const Float64 a_turretDir)
{
N_Types::Coord3 o_wind = a_crossWind;
o_wind.rotateZ(-a_turretDir); // rotate back
return o_wind.getX();
}
// ---------------------------------------------------------------
// returns the theritical initial ammu velocity of the
// ammunition
// ---------------------------------------------------------------
Float64 FireControlBase::getInitialAmmuVelocity(const Float64 a_temperature)
{
const Float64 d_BASE_TEMPERATURE = 21.0; // deg.centigrade
Float64 f_InitialAmmuVelocity = m_InitialAmmuVelocityV0constX0;
Float64 f_Celsius = a_temperature - d_BASE_TEMPERATURE;
f_InitialAmmuVelocity += (m_InitialAmmuVelocityV0constX1 * f_Celsius);
return f_InitialAmmuVelocity;
}
// ---------------------------------------------------------------
// deinitializes class
// ---------------------------------------------------------------
bool FireControlBase::deinit()
{
m_Initialized = false;
return true;
}
} // namespace N_Ballistic
@@ -0,0 +1,153 @@
#pragma once
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
#include "../logger.h"
// from stereotyped includes
#include "IFireControl.hpp"
#include "Ammunition.hpp"
// manual class imports
namespace N_Ballistic
{
/**
* Base implementation for fire calculations
*
* @author Daniel.Schmid
* @version 1.0
* @created 07-Aug-2009 15:01:07
*/
class FireControlBase : public IFireControl
{
public:
explicit FireControlBase(const char *loggerName);
virtual ~FireControlBase();
/**
* Using this function a reference to the interface is added.
*/
SInt32 addRef();
/**
* Calling this function the reference from the interface may be removed.
*/
SInt32 release();
/**
* initializes the class with the ballistic configuration
*
* @param a_ammunition
*/
virtual bool init(const Ammunition &a_ammunition);
/**
* returns the flight time of the projectile in seconds
*
* @param a_distance distance to the target
* @param a_initialAmmuVelocity initial velocity
* @param a_terrainAngle gun angle to terrain
* @param a_airDensity air density
*/
virtual Float64 getFlightTime(const Float64 a_distance, const Float64 a_initialAmmuVelocity, const N_Types::Radian64 a_terrainAngle, const Float64 a_airDensity);
/**
* returns the firing angle of the projectile if the following are given
*
* @param a_distance distance to the target
* @param a_initialAmmuVelocity initial velocity
* @param a_terrainAngle gun angle to terrain
* @param a_airDensity air density
*/
virtual Float64 getFireAngle(const Float64 a_distance, const Float64 a_initialAmmuVelocity, const N_Types::Radian64 a_terrainAngle, const Float64 a_airDensity);
/**
* This function corrects the fire angle due to the cross wind, if the following
* are given
*
* @param a_crossWind wind speed
* @param a_distance distance from gun
*/
N_Types::Radian64 getCrossWindCorrection(const Float64 a_crossWind, const Float64 a_distance);
/**
* returns the air density, provided the following are given
*
* @param a_atmosphericPressure Pressure
* @param a_airTemperature Temperature
*/
virtual Float64 getAirDensity(const Float64 a_atmosphericPressure, const Float64 a_airTemperature);
/**
* This function corrects the fire angle due to the cross wind, if the following
* are given
*
* @param a_crossWind Wind direction
* @param a_turretDir Direction of Turret
*/
virtual Float64 getCrossWind(const N_Types::Coord3 &a_crossWind, const Float64 a_turretDir);
/**
* returns the theritical initial ammu velocity of the ammunition
*
* @param a_temperature Temperature
*/
virtual Float64 getInitialAmmuVelocity(const Float64 a_temperature);
protected:
SInt32 m_MyRefCounter = 0;
bool m_Initialized = false;
/**
* initial velocity constants
*/
Float64 m_InitialAmmuVelocityV0constX1 = 0;
/**
* initial velocity constants
*/
Float64 m_InitialAmmuVelocityV0constX0 = 0;
/**
* cross wind constants
*/
Float64 m_CrossWindConstX3 = 0;
/**
* cross wind constants
*/
Float64 m_CrossWindConstX2 = 0;
/**
* cross wind constants
*/
Float64 m_CrossWindConstX1 = 0;
/**
* cross wind constants
*/
Float64 m_CrossWindConstX0 = 0;
/**
* logger object
*/
NGL::INGLLogger &m_logger;
/**
* deinitializes class
*/
bool deinit();
};
}
@@ -0,0 +1,41 @@
#pragma once
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
// from stereotyped includes
#include "FireControlBase.hpp"
// manual class imports
namespace N_Ballistic
{
/**
* Decoy implementation for fire calculations
*
* @author Daniel.Schmid
* @version 1.0
* @created 07-Aug-2009 15:01:59
*/
class FireControlDecoy : public FireControlBase
{
public:
/**
* ## Constructors (generated)
*/
FireControlDecoy() : FireControlBase("FireControlDecoy") {}
};
}
@@ -0,0 +1,185 @@
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
// manual class headers
#include "FireControlDiscrete.hpp"
namespace N_Ballistic
{
// ---------------------------------------------------------------
// initializes the class with the ballistic configuration
// ---------------------------------------------------------------
bool FireControlDiscrete::init(const Ammunition &a_ammunition)
{
m_Initialized = false;
TRACE_LOG(m_logger) << "FireControlDiscrete::init : initialising..." ;
m_CT = a_ammunition.m_StandardParams.m_Time.m_CT;
m_CV0T = a_ammunition.m_StandardParams.m_Time.m_CV0T;
m_CRhoT = a_ammunition.m_StandardParams.m_Time.m_CRhoT;
m_ConstT = a_ammunition.m_StandardParams.m_Time.m_ConstT;
m_CA = a_ammunition.m_StandardParams.m_Angle.m_CA;
m_CV0A = a_ammunition.m_StandardParams.m_Angle.m_CV0A;
m_CGammaA = a_ammunition.m_StandardParams.m_Angle.m_CGammaA;
m_CRhoA = a_ammunition.m_StandardParams.m_Angle.m_CRhoA;
m_ConstA = a_ammunition.m_StandardParams.m_Angle.m_ConstA;
if (!FireControlBase::init(a_ammunition))
return false;
TRACE_LOG(m_logger) << "m_CT : " << m_CT ;
TRACE_LOG(m_logger) << "m_CV0T : " << m_CV0T ;
TRACE_LOG(m_logger) << "m_CRhoT : " << m_CRhoT ;
TRACE_LOG(m_logger) << "m_ConstT : " << m_ConstT ;
TRACE_LOG(m_logger) << "m_CA : " << m_CA ;
TRACE_LOG(m_logger) << "m_CV0A : " << m_CV0A ;
TRACE_LOG(m_logger) << "m_CGammaA : " << m_CGammaA ;
TRACE_LOG(m_logger) << "m_CRhoA : " << m_CRhoA ;
TRACE_LOG(m_logger) << "m_ConstA : " << m_ConstA ;
TRACE_LOG(m_logger) << "FireControlDiscrete::init : initialized successfully!" ;
return true;
}
// ---------------------------------------------------------------
// returns the flight time of the projectile in seconds
// ---------------------------------------------------------------
Float64 FireControlDiscrete::getFlightTime(const Float64 a_distance,
const Float64 a_initialAmmuVelocity,
const N_Types::Radian64,
const Float64 a_airDensity)
{
Float64 d_second;
Float64 d_exp;
Float64 d_correction;
if (!m_Initialized)
{
WARNING_LOG(m_logger) << "The class is not initialized" ;
return 0.0;
}
if ((a_distance < 1.0) ||
(a_airDensity < 0.0) ||
(a_initialAmmuVelocity < 1.0))
{
ERROR_LOG(m_logger) << "The parameters are not correct" ;
return 0.0;
}
// The firing time of the ammunition is calculated using the
// following formula:
// T(x,v0,rho) = (1 / m_CT * rho * v0) *
// (e**(d_cT * rho * x) -1) *
// ((d_cV0T * v0) + (d_cRhoT * rho) + m_ConstT)
// rho - air density -- kg/m**3
// x - distance -- meter
// T - firing time -- second
// v0 - initial velocity -- meter per second.
// m_VT - exponential constant for time
// m_CV0T - initial velocity correction constant
// m_CRhoT - air density correction constant
// m_ConstT - function constant
//----------------------------------------------------------
d_correction = ((m_CV0T * a_initialAmmuVelocity) +
(m_CRhoT * a_airDensity) +
m_ConstT);
d_exp = (exp(m_CT * a_airDensity * a_distance)) - 1.0;
d_second = (1.0 / (m_CT * a_airDensity * a_initialAmmuVelocity)) *
(d_exp) *
(d_correction);
if (d_second < 0.0)
d_second = 0.0;
return d_second;
}
// ---------------------------------------------------------------
// returns the firing angle of the projectile if the following
// are given
// ---------------------------------------------------------------
Float64 FireControlDiscrete::getFireAngle(const Float64 a_distance, const Float64 a_initialAmmuVelocity, const N_Types::Radian64 a_terrainAngle, const Float64 a_airDensity)
{
const Float64 d_FIXED_CONST = 4.905; // fixed constant of the function
Float64 d_exp; // exponential patr of the function
Float64 d_square; // square part of the function
Float64 d_tan; // tangent value of the function
N_Types::Radian64 o_tsi; // firing angle
Float64 d_correction; // correction value
if (!m_Initialized)
{
WARNING_LOG(m_logger) << "The class is not initialized" ;
return 0.0;
}
if ((a_distance < 1.0) ||
(a_airDensity < 0.0) ||
(a_initialAmmuVelocity < 1.0) ||
(a_terrainAngle > M_PI_2) ||
(a_terrainAngle < -M_PI_2))
{
ERROR_LOG(m_logger) << "The parameters are not correct" ;
return 0.0;
}
// The firing angle of the ammunition is calculated using the formula:
// A(x,gamma,v0,rho) = arctan((4.905/x) * ((1/d_cA*Rho*v0) *
// ((e**(d_cA*Rho*x)-1) -- exp
// )**2 -- square
// ) -- arctan
// * correction
// correction =
// ((d_cGammaA * gamma) +
// (d_cV0A * v0) +
// (d_cRhoA * Rho) +
// (d_constA)
// )
// where:
// rho - air density -- kg/m**3
// x - distance -- meter
// A - firing angle -- radian
// gamma - angle to terrain -- radian
// v0 - initial velocity
// m_CA - exponential constant for angle
// m_CGammaA - terrain angle correction constant for angle
// m_CV0A; - initial velocity correction constant for angle
// m_CRhoA; - air density correction constant for angle
// m_ConstA; - function constant for angle
//----------------------------------------------------------
d_exp = ((exp(m_CA * a_airDensity * a_distance)) - 1.0);
d_square = pow(((1.0 / (m_CA * a_airDensity * a_initialAmmuVelocity)) * (d_exp)), Float64(2));
d_tan = (d_FIXED_CONST / a_distance) * d_square;
o_tsi = atan(d_tan);
d_correction = (m_CGammaA * a_terrainAngle) +
(m_CV0A * a_initialAmmuVelocity) +
(m_CRhoA * a_airDensity) +
m_ConstA;
o_tsi = o_tsi * d_correction;
return o_tsi;
}
} // namespace N_Ballistic
@@ -0,0 +1,106 @@
#pragma once
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
// manual class imports
#include "FireControlBase.hpp"
namespace N_Ballistic
{
/**
* Discrete implementation for fire calculations
*
* @author Daniel.Schmid
* @version 1.0
* @created 07-Aug-2009 15:01:42
*/
class FireControlDiscrete : public FireControlBase
{
public:
/**
* ## Constructors (generated)
*/
FireControlDiscrete() : FireControlBase("FireControlDiscrete") {}
/**
* initializes the class with the ballistic configuration
*
* @param a_ammunition
*/
bool init(const Ammunition &a_ammunition) override;
/**
* returns the flight time of the projectile in seconds
*
* @param a_distance distance to the target
* @param a_initialAmmuVelocity initial velocity
* @param a_terrainAngle gun angle to terrain
* @param a_airDensity air density
*/
Float64 getFlightTime(const Float64 a_distance, const Float64 a_initialAmmuVelocity, const N_Types::Radian64 a_terrainAngle, const Float64 a_airDensity) override;
/**
* returns the firing angle of the projectile if the following are given
*
* @param a_distance distance to the target
* @param a_initialAmmuVelocity initial velocity
* @param a_terrainAngle gun angle to terrain
* @param a_airDensity air density
*/
Float64 getFireAngle(const Float64 a_distance, const Float64 a_initialAmmuVelocity, const N_Types::Radian64 a_terrainAngle, const Float64 a_airDensity) override;
protected:
/**
* air density correction constant
*/
Float64 m_CT = 0;
/**
* air density correction constant
*/
Float64 m_CV0T = 0;
/**
* air density correction constant
*/
Float64 m_CRhoT = 0;
/**
* air density correction constant
*/
Float64 m_ConstT = 0;
/**
* air density correction constant
*/
Float64 m_CA = 0;
/**
* air density correction constant
*/
Float64 m_CV0A = 0;
/**
* air density correction constant
*/
Float64 m_CRhoA = 0;
/**
* air density correction constant
*/
Float64 m_ConstA = 0;
/**
* air density correction constant
*/
Float64 m_CGammaA = 0;
};
}
@@ -0,0 +1,164 @@
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
// manual class headers
#include "FireControlPiton.hpp"
namespace N_Ballistic
{
// ---------------------------------------------------------------
// initializes the class with the ballistic configuration
// ---------------------------------------------------------------
bool FireControlPiton::init(const Ammunition &a_ammunition)
{
m_Initialized = false;
TRACE_LOG(m_logger) << "FireControlPiton::init : initialising..." ;
m_CRhoT = a_ammunition.m_StandardParams.m_Time.m_CRhoT;
m_ConstT = a_ammunition.m_StandardParams.m_Time.m_ConstT;
m_CRhoA = a_ammunition.m_StandardParams.m_Angle.m_CRhoA;
m_ConstA = a_ammunition.m_StandardParams.m_Angle.m_ConstA;
if (!FireControlBase::init(a_ammunition))
return false;
TRACE_LOG(m_logger) << "m_CRhoT : " << m_CRhoT ;
TRACE_LOG(m_logger) << "m_ConstT : " << m_ConstT ;
TRACE_LOG(m_logger) << "m_CRhoA : " << m_CRhoA ;
TRACE_LOG(m_logger) << "m_ConstA : " << m_ConstA ;
TRACE_LOG(m_logger) << "FireControlPiton::init : initialized successfully!" ;
return true;
}
// ---------------------------------------------------------------
// returns the flight time of the projectile in seconds
// ---------------------------------------------------------------
Float64 FireControlPiton::getFlightTime(const Float64 a_distance, const Float64 a_initialAmmuVelocity, const N_Types::Radian64 a_terrainAngle, const Float64 a_airDensity)
{
const Float64 d_THREE_OVER_TWO = 3.0 / 2.0;
const Float64 d_TWO_OVER_NINE = 2.0 / 9.0;
Float64 d_second;
Float64 d_correction;
Float64 d_temp; // temp value
Float64 d_laserDistY; // Y laser value
if (!m_Initialized)
{
WARNING_LOG(m_logger) << "The class is not initialized" ;
return 0.0;
}
if ((a_distance < 1.0) ||
(a_airDensity < 0.0) ||
(a_initialAmmuVelocity < 1.0) ||
(a_terrainAngle > M_PI_2) ||
(a_terrainAngle < -M_PI_2))
{
ERROR_LOG(m_logger) << "The parameters are not correct" ;
return 0.0;
}
// t = (2.0 / (9.0 * v0 * cos(Gamma))) * corr1
// corr1 = (pow(corr2, 2/3) - 1) / KT
// corr2 = 1 + (3 * KT * Xe)
// KT = cRhoT * Rho + constT
// Gamma - terrain angle
// Rho - air density
// v0 - initial ammu velocity
// cRhoT, constT - parameter
//----------------------------------------------------------
// f_LaserDistZ = a_Distance * sin(a_TerrainAngle);
d_laserDistY = a_distance * cos(a_terrainAngle);
d_temp = (m_CRhoT * a_airDensity) + m_ConstT;
d_correction = 1 + (3.0 * d_temp * d_laserDistY);
d_correction = pow(d_correction, d_THREE_OVER_TWO);
d_correction -= 1.0;
d_correction /= d_temp;
d_second = (d_TWO_OVER_NINE * d_correction) /
(a_initialAmmuVelocity * cos(a_terrainAngle));
if (d_second < 0.0)
d_second = 0.0;
return d_second;
}
// ---------------------------------------------------------------
// returns the firing angle of the projectile if the following
// are given
// ---------------------------------------------------------------
Float64 FireControlPiton::getFireAngle(const Float64 a_distance, const Float64 a_initialAmmuVelocity, const N_Types::Radian64 a_terrainAngle, const Float64 a_airDensity)
{
Float64 d_square; // square part of the function
Float64 d_tan; // tangent value of the function
N_Types::Radian64 o_tsi; // firing angle
Float64 d_correction; // correction value
Float64 d_temp; // temp value
Float64 d_laserDistZ; // Z laser value
Float64 d_laserDistY; // Y laser value
if (!m_Initialized)
{
WARNING_LOG(m_logger) << "The class is not initialized" ;
return 0.0;
}
if ((a_distance < 1.0) ||
(a_airDensity < 0.0) ||
(a_initialAmmuVelocity < 1.0) ||
(a_terrainAngle > M_PI_2) ||
(a_terrainAngle < -M_PI_2))
{
ERROR_LOG(m_logger) << "The parameters are not correct" ;
return 0.0;
}
// Tsi = atan((1/2) * ((Xe/c) - sqrt))
// sqrt = pow((Xe/c), 2) - 4 * (Ye + c) / c
// c = 9.81 * pow(Xe, 2) * (1 + k + Xe) / ( 2 * pow(v0, 2))
// k = cRhoA * Rho + constA
// Xe = D * cos(Gamma)
//
// Gamma - terrain angle
// Rho - air density
// v0 - initial ammu velocity
// cRhoA, constA - constants
//----------------------------------------------------------
d_laserDistZ = a_distance * sin(a_terrainAngle);
d_laserDistY = a_distance * cos(a_terrainAngle);
d_temp = (m_CRhoA * a_airDensity) + m_ConstA;
d_correction = N_SST::G * pow(d_laserDistY, Float64(2)) * (1.0 + (d_temp * d_laserDistY));
d_correction /= (2.0 * pow(a_initialAmmuVelocity, Float64(2)));
d_square = pow((d_laserDistY / d_correction), Float64(2));
d_square -= ((4.0 * (d_laserDistZ + d_correction)) / d_correction);
d_square = sqrt(d_square);
d_tan = (d_laserDistY / d_correction) - d_square;
d_tan /= 2.0;
o_tsi = atan(d_tan);
o_tsi -= a_terrainAngle;
return o_tsi;
}
} // namespace N_Ballistic
@@ -0,0 +1,86 @@
#pragma once
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
// manual class imports
#include "FireControlBase.hpp"
namespace N_Ballistic
{
/**
* Piton Bressant implementation for fire calculations
*
* @author Daniel.Schmid
* @version 1.0
* @created 07-Aug-2009 15:01:30
*/
class FireControlPiton : public FireControlBase
{
public:
/**
* ## Constructors (generated)
*/
FireControlPiton() : FireControlBase("FireControlPiton") {}
/**
* initializes the class with the ballistic configuration
*
* @param a_ammunition
*/
bool init(const Ammunition &a_ammunition) override;
/**
* returns the flight time of the projectile in seconds
*
* @param a_distance distance to the target
* @param a_initialAmmuVelocity initial velocity
* @param a_terrainAngle gun angle to terrain
* @param a_airDensity air density
*/
Float64 getFlightTime(const Float64 a_distance, const Float64 a_initialAmmuVelocity, const N_Types::Radian64 a_terrainAngle, const Float64 a_airDensity) override;
/**
* returns the firing angle of the projectile if the following are given
*
* @param a_distance distance to the target
* @param a_initialAmmuVelocity initial velocity
* @param a_terrainAngle gun angle to terrain
* @param a_airDensity air density
*/
Float64 getFireAngle(const Float64 a_distance, const Float64 a_initialAmmuVelocity, const N_Types::Radian64 a_terrainAngle, const Float64 a_airDensity) override;
protected:
/**
* air density correction constant
*/
Float64 m_CRhoT = 0;
/**
* air density correction constant
*/
Float64 m_CRhoA = 0;
/**
* air density correction constant
*/
Float64 m_ConstT = 0;
/**
* air density correction constant
*/
Float64 m_ConstA = 0;
};
}
@@ -0,0 +1,88 @@
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
// manual class headers
#include "FireControlRungeKutta.hpp"
#include "TrajectoryRungeKutta.hpp"
namespace N_Ballistic
{
// ---------------------------------------------------------------
// returns the flight time of the projectile in seconds
// ---------------------------------------------------------------
Float64 FireControlRungeKutta::getFlightTime(const Float64,
const Float64,
const N_Types::Radian64,
const Float64)
{
Q_ASSERT(false);
ERROR_LOG(m_logger) << "This algorithm has no implementation for flight time" ;
return -1;
}
// ---------------------------------------------------------------
// returns the firing angle of the projectile if the following
// are given
// ---------------------------------------------------------------
Float64 FireControlRungeKutta::getFireAngle(const Float64,
const Float64,
const N_Types::Radian64,
const Float64)
{
Q_ASSERT(false);
ERROR_LOG(m_logger) << "This algorithm has no implementation for fire angle" ;
return 0;
}
// ---------------------------------------------------------------
// returns the air density, provided the following are given
// ---------------------------------------------------------------
Float64 FireControlRungeKutta::getAirDensity(const Float64 a_atmosphericPressure, const Float64 a_airTemperature)
{
const Float64 d_FIXED_CONST = 0.348368; // fixed constant of the function
Float64 d_kelvin;
Float64 d_rho;
if ((a_atmosphericPressure <= 1.0) ||
(a_airTemperature <= -N_SST::ZERO_CELSIUS_IN_KELVIN))
{
ERROR_LOG(m_logger) << "The parameters are not correct, Pressure=" << a_atmosphericPressure << ", Temp=" << a_airTemperature ;
return 1.0;
}
TrajectoryRungeKutta::m_Temp = a_airTemperature;
DEBUG_LOG(m_logger) << "Temp for Trajectory set: " << TrajectoryRungeKutta::m_Temp ;
d_kelvin = a_airTemperature + N_SST::ZERO_CELSIUS_IN_KELVIN;
d_rho = d_FIXED_CONST * a_atmosphericPressure / d_kelvin;
return d_rho;
}
// ---------------------------------------------------------------
// returns the theritical initial ammu velocity of the
// ammunition
// ---------------------------------------------------------------
Float64 FireControlRungeKutta::getInitialAmmuVelocity(const Float64 a_temperature)
{
TrajectoryRungeKutta::m_TempWeapon = a_temperature;
DEBUG_LOG(m_logger) << "Temp for Weapon set: " << TrajectoryRungeKutta::m_TempWeapon ;
return 0.0;
}
} // namespace N_Ballistic
@@ -0,0 +1,77 @@
#pragma once
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
// from stereotyped includes
#include "FireControlBase.hpp"
// manual class imports
namespace N_Ballistic
{
/**
* RungeKutta implementation for fire calculations
*
* @author Daniel.Schmid
* @version 1.0
* @created 22-Jul-2010 11:44:20
*/
class FireControlRungeKutta : public FireControlBase
{
public:
FireControlRungeKutta(const char *loggerName = nullptr)
: FireControlBase(loggerName ? loggerName : "FireControlRungeKutta")
{}
/**
* returns the flight time of the projectile in seconds
*
* @param a_distance distance to the target
* @param a_initialAmmuVelocity initial velocity
* @param a_terrainAngle gun angle to terrain
* @param a_airDensity air density
*/
Float64 getFlightTime(const Float64 a_distance, const Float64 a_initialAmmuVelocity, const N_Types::Radian64 a_terrainAngle, const Float64 a_airDensity) override;
/**
* returns the firing angle of the projectile if the following are given
*
* @param a_distance distance to the target
* @param a_initialAmmuVelocity initial velocity
* @param a_terrainAngle gun angle to terrain
* @param a_airDensity air density
*/
Float64 getFireAngle(const Float64 a_distance, const Float64 a_initialAmmuVelocity, const N_Types::Radian64 a_terrainAngle, const Float64 a_airDensity) override;
/**
* returns the air density, provided the following are given
*
* @param a_atmosphericPressure Pressure
* @param a_airTemperature Temperature
*/
Float64 getAirDensity(const Float64 a_atmosphericPressure, const Float64 a_airTemperature) override;
/**
* returns the theritical initial ammu velocity of the ammunition
*
* @param a_temperature Temperature
*/
Float64 getInitialAmmuVelocity(const Float64 a_temperature) override;
};
}
@@ -0,0 +1,39 @@
#pragma once
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
// from stereotyped includes
#include "FireControlRungeKutta.hpp"
// manual class imports
namespace N_Ballistic
{
/**
* Simple RungeKutta implementation for fire calculations
*
* @author Daniel.Schmid
* @version 1.0
* @created 22-Jul-2010 12:11:39
*/
class FireControlRungeKuttaSimple : public FireControlRungeKutta
{
public:
FireControlRungeKuttaSimple() : FireControlRungeKutta("FireControlRungeKuttaSimple") {}
};
}
@@ -0,0 +1,48 @@
#pragma once
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
// from stereotyped includes
#include "Ammunition.hpp"
// manual class imports
class QString;
namespace N_Ballistic
{
/**
* This is the interface to the ballistic configuration mecanism
*
* @author Daniel.Schmid
* @version 1.0
* @created 11-Aug-2009 16:14:34
*/
class IBallisticConfigurator
{
public:
virtual ~IBallisticConfigurator() = default;
/**
* load the configfile and creates ammunition objects for all found entries
*
* @param a_configFilename
* @param a_ammunitions
*/
virtual bool loadAmmunitions(const QString &a_configFilename, std::vector<Ammunition *> &a_ammunitions) = 0;
};
}
@@ -0,0 +1,91 @@
#pragma once
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
// from stereotyped includes
#include <GBL_Types/Radian64.hpp>
#include <GBL_Types/Coord3.hpp>
#include "IUnknown.hpp"
// manual class imports
namespace N_Ballistic
{
/**
* Interface for fire control implementations
*
* @author Daniel.Schmid
* @version 1.0
* @created 07-Aug-2009 13:37:13
*/
class IFireControl : public IUnknown
{
public:
/**
* returns the flight time of the projectile in seconds
*
* @param a_distance distance to the target
* @param a_initialAmmuVelocity initial velocity
* @param a_terrainAngle gun angle to terrain
* @param a_airDensity air density
*/
virtual Float64 getFlightTime(const Float64 a_distance, const Float64 a_initialAmmuVelocity, const N_Types::Radian64 a_terrainAngle, const Float64 a_airDensity) = 0;
/**
* returns the firing angle of the projectile if the following are given
*
* @param a_distance distance to the target
* @param a_initialAmmuVelocity initial velocity
* @param a_terrainAngle gun angle to terrain
* @param a_airDensity air density
*/
virtual Float64 getFireAngle(const Float64 a_distance, const Float64 a_initialAmmuVelocity, const N_Types::Radian64 a_terrainAngle, const Float64 a_airDensity) = 0;
/**
* This function corrects the fire angle due to the cross wind, if the following
* are given
*
* @param a_crossWind wind speed
* @param a_distance distance from gun
*/
virtual N_Types::Radian64 getCrossWindCorrection(const Float64 a_crossWind, const Float64 a_distance) = 0;
/**
* returns the air density
*
* @param a_atmosphericPressure Pressure
* @param a_airTemperature Temperature
*/
virtual Float64 getAirDensity(const Float64 a_atmosphericPressure, const Float64 a_airTemperature) = 0;
/**
* This function corrects the fire angle due to the cross wind
*
* @param a_crossWind Wind direction
* @param a_turretDir Direction of Turret
*/
virtual Float64 getCrossWind(const N_Types::Coord3 &a_crossWind, const Float64 a_turretDir) = 0;
/**
* returns the theritical initial ammu velocity of the ammunition
*
* @param a_temperature Temperature
*/
virtual Float64 getInitialAmmuVelocity(const Float64 a_temperature) = 0;
};
}
@@ -0,0 +1,117 @@
#pragma once
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
// from stereotyped includes
#include "IUnknown.hpp"
#include <GBL_Types/Angle3.hpp>
#include <GBL_Types/Coord3.hpp>
// manual class imports
namespace N_Ballistic
{
/**
* Interface for trajectory implementations
*
* @author Daniel.Schmid
* @version 1.0
* @created 07-Aug-2009 13:36:55
*/
class ITrajectory : public IUnknown
{
public:
virtual ~ITrajectory() = default;
/**
* initializes the object with the following parameters
*
* @param a_gunPos Position of the gun
* @param a_gunAngle Shooting angle of the gun
* @param a_crossWind lateral wind
* @param a_airDensity
* @param a_initialAmmuSpeed ammunition speed
*/
virtual bool init(const N_Types::Coord3 &a_gunPos,
const N_Types::Angle3 &a_gunAngle,
const Float64 a_crossWind,
const Float64 a_airDensity,
const Float64 a_initialAmmuSpeed) = 0;
/**
* calculates the next tracer point using the delta time
*
* @param a_deltaTime time difference to last call
*/
virtual bool move(const Float64 a_deltaTime) = 0;
/**
* returns the current position of the tracer
*/
virtual const N_Types::Coord3 &getPosition() const = 0;
/**
* returns the current orientation of the tracer
*/
virtual const N_Types::Angle3 &getOrient() const = 0;
/**
* returns the acceleration/deceleration vector
*/
virtual const N_Types::Coord3 &getAccel() const = 0;
/**
* returns the velocity vector
*/
virtual const N_Types::Coord3 &getVelocity() const = 0;
/**
* this function returns the state of the tracer
*/
virtual bool isActive() const = 0;
/**
* deactivate a tracer
*/
virtual void deactivate() = 0;
/**
* sets an integer ID of the bullet, used for SimMunitionIDs
*
* @param a_id
*/
virtual void setID(SInt32 a_id) = 0;
/**
* gets an integer ID of the bullet, used for SimMunitionIDs
*/
virtual SInt32 getID() const = 0;
/**
* if a bullet detonates after a certain timeout, defined by the timeout in the
* config file
*/
virtual bool IsDetonateOnTimer() const = 0;
/**
* if a bullet detonates on either terrain or object impact
*/
virtual bool IsDetonateOnImpact() const = 0;
};
}
@@ -0,0 +1,49 @@
#pragma once
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
#include <GBL_Global/Types.hpp>
// manual class imports
namespace N_Ballistic
{
/**
* Base Interface for all interfaces used in this package
*
* @author Daniel.Schmid
* @version 1.0
* @created 07-Aug-2009 13:41:51
*/
class IUnknown
{
public:
virtual ~IUnknown() = default;
/**
* Using this function a reference to the interface is added.
*/
virtual SInt32 addRef() = 0;
/**
* Calling this function the reference from the interface may be removed.
*/
virtual SInt32 release() = 0;
};
}
@@ -0,0 +1,53 @@
#pragma once
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
#include <GBL_Global/Types.hpp>
#include <vector>
namespace N_Ballistic
{
/**
* Polygonal representation of ballistic values
*
* @author Daniel.Schmid
* @version 1.0
* @created 10-Aug-2009 11:07:22
*/
struct PolygonParamType
{
/**
* Container for PolyCoefficientType
*
* @author Daniel.Schmid
* @version 1.0
* @created 10-Aug-2009 11:08:15
*/
struct PolyCoefficientType
{
SInt32 m_Index = 0;
Float64 m_Coeff = 0.0;
};
std::vector<PolyCoefficientType> m_AY;
std::vector<PolyCoefficientType> m_AX;
Float64 m_InitialAX = 0.0;
bool m_Valid = false;
};
}
@@ -0,0 +1,106 @@
#pragma once
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
#include <GBL_Global/Types.hpp>
namespace N_Ballistic
{
/**
* Standard values of ammunition
*
* @author Daniel.Schmid
* @version 1.0
* @created 10-Aug-2009 11:08:46
*/
struct StandardType
{
/**
* Container for CrossWindType
*
* @author Daniel.Schmid
* @version 1.0
* @created 10-Aug-2009 11:10:42
*/
struct CrossWindType
{
Float64 m_ConstX3 = 0.0;
Float64 m_ConstX2 = 0.0;
Float64 m_ConstX1 = 0.0;
Float64 m_ConstX0 = 0.0;
};
/**
* Container for AngleType
*
* @author Daniel.Schmid
* @version 1.0
* @created 10-Aug-2009 11:10:34
*/
struct AngleType
{
Float64 m_CA = 0.0;
Float64 m_CGammaA = 0.0;
Float64 m_CV0A = 0.0;
Float64 m_CRhoA = 0.0;
Float64 m_ConstA = 0.0;
};
/**
* Container for SpeedType
*
* @author Daniel.Schmid
* @version 1.0
* @created 10-Aug-2009 11:11:00
*/
struct SpeedType
{
/**
* Initial ammunition velocity
*/
Float64 m_V0ConstX1 = 0.0;
/**
* Correction constant in function of temperature
*/
Float64 m_V0ConstX0 = 0.0;
};
/**
* Container for TimeType
*
* @author Daniel.Schmid
* @version 1.0
* @created 10-Aug-2009 11:11:08
*/
struct TimeType
{
Float64 m_CT = 0.0;
Float64 m_CV0T = 0.0;
Float64 m_CRhoT = 0.0;
Float64 m_ConstT = 0.0;
};
StandardType::TimeType m_Time;
StandardType::SpeedType m_Speed;
StandardType::AngleType m_Angle;
StandardType::CrossWindType m_CrossWind;
bool m_Valid = false;
};
}
@@ -0,0 +1,186 @@
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
// manual class headers
#include "TrajectoryAntonio.hpp"
namespace N_Ballistic
{
// ---------------------------------------------------------------
// initializes the object with the ammunition parameters
// ---------------------------------------------------------------
bool TrajectoryAntonio::init(const Ammunition &a_ammunition)
{
m_Initialized = false;
TRACE_LOG(m_logger) << "TrajectoryAntonio::init : initialising..." ;
if (a_ammunition.m_StandardParams.m_Valid)
{
m_CRhoY1 = a_ammunition.m_StandardParams.m_Time.m_CRhoT;
m_CRhoZ1 = a_ammunition.m_StandardParams.m_Angle.m_CRhoA;
m_UseStandard = true;
INFO_LOG(m_logger) << "m_CRhoY1 : " << m_CRhoY1 ;
INFO_LOG(m_logger) << "m_CRhoZ1 : " << m_CRhoZ1 ;
}
else if (a_ammunition.m_PolygonParams.m_Valid)
{
m_InitialAX = a_ammunition.m_PolygonParams.m_InitialAX;
INFO_LOG(m_logger) << "m_InitialAX : " << m_InitialAX ;
int axcount = a_ammunition.m_PolygonParams.m_AX.size();
for (int i = 0; i < axcount; i++)
{
m_AX.push_back(a_ammunition.m_PolygonParams.m_AX[i].m_Coeff);
INFO_LOG(m_logger) << "AX " << a_ammunition.m_PolygonParams.m_AX[i].m_Index << " = " << a_ammunition.m_PolygonParams.m_AX[i].m_Coeff ;
}
int aycount = a_ammunition.m_PolygonParams.m_AY.size();
for (int i = 0; i < aycount; i++)
{
m_AY.push_back(a_ammunition.m_PolygonParams.m_AY[i].m_Coeff);
INFO_LOG(m_logger) << "AY " << a_ammunition.m_PolygonParams.m_AY[i].m_Index << " = " << a_ammunition.m_PolygonParams.m_AY[i].m_Coeff ;
}
m_UsePolynom = true;
}
else
{
ERROR_LOG(m_logger) << "Parameters missing..." ;
return false;
}
if (!TrajectoryBase::init(a_ammunition))
return false;
TRACE_LOG(m_logger) << "TrajectoryAntonio::init : initialized successfully!" ;
return true;
}
// ---------------------------------------------------------------
// calculates the next point of a tracer using the algorithm
// implemented in the current class
// ---------------------------------------------------------------
N_Types::Coord3 TrajectoryAntonio::getNextPoint()
{
if (m_UseStandard)
return getNextPointStandard();
if (m_UsePolynom)
return getNextPointPolynom();
ERROR_LOG(m_logger) << "Initialisation not correct" ;
return N_Types::Coord3();
}
// ---------------------------------------------------------------
// calculates the next point of a tracer using the algorithm
// implemented in the current class
// ---------------------------------------------------------------
N_Types::Coord3 TrajectoryAntonio::getNextPointStandard()
{
Float64 d_correction;
Float64 d_tmpConst;
N_Types::Coord3 o_coord3;
m_MyTime += m_Tact;
d_correction = 1.0 +
(m_CRhoY1 *
m_AirDensity *
m_InitialAmmuSpeed *
cos(m_GunAngle.m_P) *
m_MyTime);
o_coord3.m_Y = (m_InitialAmmuSpeed * cos(m_GunAngle.m_P) * m_MyTime) / d_correction;
d_correction = N_SST::G * pow(o_coord3.m_Y, 2.0);
d_correction /= (2.0 * pow(m_InitialAmmuSpeed, 2.0) * pow(cos(m_GunAngle.m_P), 2.0));
d_correction /= (1.0 + m_CRhoZ1 * m_AirDensity * o_coord3.m_Y);
d_tmpConst = 1.0 - m_CRhoY1 * m_AirDensity * o_coord3.m_Y;
d_tmpConst = pow(d_tmpConst, 2.0);
d_correction /= d_tmpConst;
o_coord3.m_Z = (o_coord3.m_Y * tan(m_GunAngle.m_P)) - d_correction;
d_correction = o_coord3.m_Y / (m_InitialAmmuSpeed * cos(m_GunAngle.m_P));
o_coord3.m_X = m_CrossWind * (m_MyTime - d_correction);
o_coord3 = o_coord3.rotateZ(m_GunAngle.m_H);
o_coord3 = o_coord3 + m_GunPos;
return o_coord3;
}
// ---------------------------------------------------------------
// calculates the next point of a tracer using the algorithm
// implemented in the current class
// ---------------------------------------------------------------
N_Types::Coord3 TrajectoryAntonio::getNextPointPolynom()
{
Float64 d_correction = 0.0;
Float64 d_tmpConst = 0.0;
Float64 d_ax = 0.0;
Float64 d_ay = 0.0;
N_Types::Coord3 o_coord3;
m_MyTime += m_Tact;
//
// ax = (ax0 * t^0) + (ax1 * t^1) + (ax2 * t^2) + (ax3 * t^3) ...
//
for (unsigned int i = 0; i < m_AX.size(); i++)
d_ax += m_AX[i] * pow(m_MyTime, i);
for (unsigned int i = 0; i < m_AY.size(); i++)
d_ay += m_AY[i] * pow(m_MyTime, i);
// v0 * t
// x = ---------------------
// 1 + (ax * p * v0 * t)
d_correction = 1.0 +
(d_ax *
m_AirDensity *
m_InitialAmmuSpeed *
m_MyTime);
// INFO_LOG(m_logger) << "AX:" << d_ax << " AD:" << m_AirDensity << " IS:" << m_InitialAmmuSpeed << " MT:" << m_MyTime << " C:" << d_correction ;
o_coord3.m_Y = (m_InitialAmmuSpeed * m_MyTime) / d_correction;
// g * x
// y = x * ( tan (a) - ----------------------------- )
// 2 * v0^2 * (1- ay * p * x)^2
d_correction = N_SST::G * o_coord3.m_Y;
d_correction /= (2.0 * pow(m_InitialAmmuSpeed, 2.0));
d_tmpConst = 1.0 - d_ay * m_AirDensity * o_coord3.m_Y;
d_tmpConst = pow(d_tmpConst, 2.0);
d_correction /= d_tmpConst;
o_coord3.m_Z = o_coord3.m_Y * (tan(m_GunAngle.m_P) - d_correction);
// x
// z = w * ( t - ---- )
// v0
d_correction = o_coord3.m_Y / m_InitialAmmuSpeed;
o_coord3.m_X = m_CrossWind * (m_MyTime - d_correction);
o_coord3 = o_coord3.rotateZ(m_GunAngle.m_H);
o_coord3 = o_coord3 + m_GunPos;
return o_coord3;
}
} // namespace N_Ballistic
@@ -0,0 +1,82 @@
#pragma once
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
// from stereotyped includes
#include "TrajectoryBase.hpp"
// manual class imports
namespace N_Ballistic
{
/**
* D'Antonio implementation for trajectory calculations
*
* @author Daniel.Schmid
* @version 1.0
* @created 07-Aug-2009 14:27:28
*/
class TrajectoryAntonio : public TrajectoryBase
{
public:
/**
* ## Constructors (generated)
*/
TrajectoryAntonio() : TrajectoryBase("TrajectoryAntonio") {}
/**
* initializes the object with the ammunition parameters
*
* @param a_ammunition ammunition definion from xml file
*/
bool init(const Ammunition &a_ammunition) override;
protected:
std::vector<Float64> m_AX;
std::vector<Float64> m_AY;
Float64 m_CRhoY1 = 0;
Float64 m_CRhoZ1 = 0;
Float64 m_InitialAX = 0;
/**
* calculates the next point of a tracer using the algorithm implemented in the
* current class
*/
N_Types::Coord3 getNextPoint() override;
private:
/**
* calculates the next point of a tracer using the algorithm implemented in the
* current class
*/
N_Types::Coord3 getNextPointStandard();
/**
* calculates the next point of a tracer using the algorithm implemented in the
* current class
*/
N_Types::Coord3 getNextPointPolynom();
private:
bool m_UseStandard = false;
bool m_UsePolynom = false;
};
}
@@ -0,0 +1,254 @@
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
// manual class headers
#include "TrajectoryBase.hpp"
#include "../logger.h"
namespace N_Ballistic
{
TrajectoryBase::TrajectoryBase(const char *loggerName)
: m_logger(CesGeoPairing::getLogger(loggerName))
{
}
TrajectoryBase::~TrajectoryBase()
{
deinit();
}
// ---------------------------------------------------------------
// Using this function a reference to the interface is added.
// ---------------------------------------------------------------
SInt32 TrajectoryBase::addRef()
{
return m_MyRefCounter++;
}
// ---------------------------------------------------------------
// Calling this function the reference from the interface may
// be removed.
// ---------------------------------------------------------------
SInt32 TrajectoryBase::release()
{
--m_MyRefCounter;
if (m_MyRefCounter <= 0)
{
delete this;
return 0;
}
else
return m_MyRefCounter;
}
// ---------------------------------------------------------------
// initializes the object with the following parameters
// ---------------------------------------------------------------
bool TrajectoryBase::init(const N_Types::Coord3 &a_gunPos, const N_Types::Angle3 &a_gunAngle, const Float64 a_crossWind, const Float64 a_airDensity, const Float64 a_initialAmmuSpeed)
{
m_GunPos = a_gunPos;
m_GunAngle = a_gunAngle;
m_CrossWind = a_crossWind;
m_AirDensity = a_airDensity;
m_InitialAmmuSpeed = a_initialAmmuSpeed;
if (m_Deviation != 0)
{
INFO_LOG(m_logger) << "Deviation taken into account: " << m_Deviation ;
Float64 l_deviationRandomized = m_Deviation * (Float64)(rand() % 100) / 100.0;
INFO_LOG(m_logger) << "l_deviationRandomized = " << l_deviationRandomized ;
N_Types::Coord3 o_dev(l_deviationRandomized, 1000.0, 0.0);
//INFO_LOG(m_logger) << "o_dev = " << o_dev ;
Float64 l_angleRandomized = rand() % 360;
INFO_LOG(m_logger) << "l_angleRandomized = " << l_angleRandomized ;
N_Types::Radian64 l_angleRad;
l_angleRad.setDegree(l_angleRandomized);
o_dev = o_dev.rotateY(l_angleRad);
N_Types::Angle3 o_angle;
o_angle.m_H = o_dev.getPolar3().getAzimuth();
o_angle.m_P = o_dev.getPolar3().getElevation();
//INFO_LOG(m_logger) << "o_angle = " << o_angle << END_LOG
m_GunAngle = m_GunAngle + o_angle;
}
N_Types::Coord3 o_coord3(0.0, 1.0, 0.0);
o_coord3 = o_coord3.rotate(m_GunAngle);
m_Velocity = o_coord3 * m_InitialAmmuSpeed;
m_MyTime = 0.0;
m_MyAngle = m_GunAngle.m_P;
m_MyPoints[0] = m_GunPos;
m_MyPoints[1] = m_GunPos;
m_Active = true;
return true;
}
// ---------------------------------------------------------------
// calculates the next tracer point using the delta time
// ---------------------------------------------------------------
bool TrajectoryBase::move(const Float64 a_deltaTime)
{
if (!m_Initialized)
{
WARNING_LOG(m_logger) << "The class is not initialized" ;
return false;
}
if (!m_Active)
{
ERROR_LOG(m_logger) << "Call init(gunPos, gunAngle, ...) first" ;
return false;
}
m_Tact = a_deltaTime;
m_MyPoints[0] = m_MyPoints[1];
m_MyPoints[1] = getNextPoint();
// set velovity, acceleration, orientation and time out of the tracer
setVelAccelOrientTimeOut();
return true;
}
// ---------------------------------------------------------------
// deactivate a tracer
// ---------------------------------------------------------------
void TrajectoryBase::deactivate()
{
m_Active = false;
}
// ---------------------------------------------------------------
// sets an integer ID of the bullet, used for SimMunitionIDs
// ---------------------------------------------------------------
void TrajectoryBase::setID(SInt32 a_id)
{
m_MyID = a_id;
}
// ---------------------------------------------------------------
// initializes the object with the ammunition parameters
// ---------------------------------------------------------------
bool TrajectoryBase::init(const Ammunition &a_ammunition)
{
m_Initialized = false;
TRACE_LOG(m_logger) << "TrajectoryBase::init : initialising..." ;
m_TimeOutCycles = a_ammunition.m_AmmunInfo.m_TimeOut / 1000.0;
m_TimeOut = m_TimeOutCycles;
m_Deviation = a_ammunition.m_AmmunInfo.m_Deviation;
if (a_ammunition.m_AmmunInfo.m_ReasonToDetonate == QStringLiteral("OnTimer"))
{
m_IsDetonateOnTimer = true;
m_IsDetonateOnImpact = false;
}
if (a_ammunition.m_AmmunInfo.m_ReasonToDetonate == QStringLiteral("OnImpact"))
{
m_IsDetonateOnTimer = false;
m_IsDetonateOnImpact = true;
}
TRACE_LOG(m_logger) << "TrajectoryBase::init : initialized successfully!" ;
TRACE_LOG(m_logger) << "m_TimeOutCycles : " << m_TimeOutCycles ;
m_Initialized = true;
return true;
}
// ---------------------------------------------------------------
// deinitializes the class
// ---------------------------------------------------------------
bool TrajectoryBase::deinit()
{
m_Initialized = false;
return true;
}
// ---------------------------------------------------------------
// calculates the next point of a tracer using the algorithm
// implemented in the current class
// ---------------------------------------------------------------
N_Types::Coord3 TrajectoryBase::getNextPoint()
{
N_Types::Coord3 o_coord3;
Float64 d_correction;
m_MyTime += m_Tact;
o_coord3.m_Y = m_InitialAmmuSpeed * m_MyTime * cos(m_MyAngle);
o_coord3.m_Z = (m_InitialAmmuSpeed * m_MyTime * sin(m_MyAngle)) -
(N_SST::G * pow(m_MyTime, 2.0) / 2.0);
d_correction = o_coord3.m_Y / (m_InitialAmmuSpeed * cos(m_GunAngle.m_P));
o_coord3.m_X = m_CrossWind * (m_MyTime - d_correction);
o_coord3 = o_coord3.rotateZ(m_GunAngle.m_H);
o_coord3 = o_coord3 + m_GunPos;
return o_coord3;
}
// ---------------------------------------------------------------
// computes the velocity, acceleration, orientation and time
// out of the tracer
// ---------------------------------------------------------------
void TrajectoryBase::setVelAccelOrientTimeOut()
{
N_Types::Polar3 o_polar3;
if (m_TimeOut <= 0)
m_MyPoints[1] = m_MyPoints[0];
m_Velocity = (m_MyPoints[1] - m_MyPoints[0]) / m_Tact;
m_Acceleration = (m_Velocity - m_VelocityLast) / m_Tact;
m_VelocityLast = m_Velocity;
o_polar3 = m_Velocity.getPolar3();
m_Orientation.m_H = o_polar3.m_Azimuth;
m_Orientation.m_P = o_polar3.m_Elevation;
m_Orientation.m_R = 0.0;
m_CycleCount++;
m_TimeOut -= m_Tact;
if (m_TimeOut < 0)
{
INFO_LOG(m_logger) << "Bullet timed out : " << m_TimeOutCycles ;
m_Active = false;
}
}
} // namespace N_Ballistic
@@ -0,0 +1,247 @@
#pragma once
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
#include <GBL_Global/Types.hpp>
#include <NGLLogger/INGLLogger.h>
// from stereotyped includes
#include "ITrajectory.hpp"
#include "Ammunition.hpp"
// manual class imports
namespace N_Ballistic
{
/**
* Base implementation for trajectory calculations
*
* @author Daniel.Schmid
* @version 1.0
* @created 07-Aug-2009 14:26:59
*/
class TrajectoryBase : public ITrajectory
{
public:
explicit TrajectoryBase(const char *loggerName);
virtual ~TrajectoryBase();
/**
* Using this function a reference to the interface is added.
*/
SInt32 addRef() override;
/**
* Calling this function the reference from the interface may be removed.
*/
SInt32 release() override;
/**
* initializes the object with the following parameters
*
* @param a_gunPos Position of the gun
* @param a_gunAngle Shooting angle of the gun
* @param a_crossWind lateral wind
* @param a_airDensity Air density
* @param a_initialAmmuSpeed ammunition speed
*/
bool init(const N_Types::Coord3 &a_gunPos,
const N_Types::Angle3 &a_gunAngle,
const Float64 a_crossWind,
const Float64 a_airDensity,
const Float64 a_initialAmmuSpeed) override;
/**
* calculates the next tracer point using the delta time
*
* @param a_deltaTime time difference to last call
*/
bool move(const Float64 a_deltaTime) override;
/**
* returns the current position of the tracer
*/
const N_Types::Coord3 &getPosition() const override { return m_MyPoints[1]; }
/**
* returns the current orientation of the tracer
*/
const N_Types::Angle3 &getOrient() const override { return m_Orientation; }
/**
* returns the acceleration/deceleration vector
*/
const N_Types::Coord3 &getAccel() const override { return m_Acceleration; }
/**
* returns the velocity vector
*/
const N_Types::Coord3 &getVelocity() const override { return m_Velocity; }
/**
* this function returns the state of the tracer
*/
bool isActive() const override { return m_Active; }
/**
* deactivate a tracer
*/
void deactivate() override;
/**
* sets an integer ID of the bullet, used for SimMunitionIDs
*
* @param a_id
*/
void setID(SInt32 a_id) override;
/**
* gets an integer ID of the bullet, used for SimMunitionIDs
*/
SInt32 getID() const override { return m_MyID; }
/**
* initializes the object with the ammunition parameters
*
* @param a_ammunition ammunition definion from xml file
*/
virtual bool init(const Ammunition &a_ammunition);
/**
* if a bullet detonates after a certain timeout, defined by the timeout in the
* config file
*/
bool IsDetonateOnTimer() const override { return m_IsDetonateOnTimer; }
/**
* if a bullet detonates on either terrain or object impact
*/
bool IsDetonateOnImpact() const override { return m_IsDetonateOnImpact; }
protected:
/**
* Instance reference counter
*/
SInt32 m_MyRefCounter = 0;
/**
* initial gun position
*/
N_Types::Coord3 m_GunPos;
/**
* initial gun angle
*/
N_Types::Angle3 m_GunAngle;
/**
* cross wind in m/s
*/
Float64 m_CrossWind = 0;
/**
* AirDensity
*/
Float64 m_AirDensity = 0;
Float64 m_InitialAmmuSpeed = 0;
/**
* stores the alive state of the bullet. as soon as the bullet is deactivated, it
* is destroyed in the next cycle
*/
bool m_Active = false;
/**
* time since launch
*/
Float64 m_MyTime = 0;
/**
* current flying angle
*/
Float64 m_MyAngle = 0;
/**
* array of last and current position
*/
N_Types::Coord3 m_MyPoints[2] = {};
/**
* current acceleration
*/
N_Types::Coord3 m_Acceleration;
/**
* current velocity
*/
N_Types::Coord3 m_Velocity;
/**
* last velocity
*/
N_Types::Coord3 m_VelocityLast;
/**
* current orientation
*/
N_Types::Angle3 m_Orientation;
Float64 m_Tact = 0;
SInt32 m_CycleCount = 0;
bool m_Initialized = false;
/**
* Time in ms to detonate
*/
Float64 m_TimeOutCycles = 0;
/**
* time to detonate, decremented variable
*/
Float64 m_TimeOut = 0;
/**
* SimMunitionID
*/
SInt32 m_MyID = 0;
/**
* timed detonation of grenades
*/
bool m_IsDetonateOnTimer = false;
/**
* bullet detonates on impact
*/
bool m_IsDetonateOnImpact = false;
/**
* This is the value of devivation of the ammunition, which helps to simulate the
* variation between the different shoots
*/
Float64 m_Deviation = 0;
/**
* This is the value of derivation of the ammunition, which helps to simulate the
* right drift due to the rotation of the bullet
*/
Float64 m_Derivation = 0;
/**
* logger object
*/
NGL::INGLLogger &m_logger;
/**
* deinitializes the class
*/
virtual bool deinit();
/**
* calculates the next point of a tracer using the algorithm implemented in the
* current class
*/
virtual N_Types::Coord3 getNextPoint();
/**
* computes the velocity, acceleration, orientation and time out of the tracer
*/
void setVelAccelOrientTimeOut();
};
}
@@ -0,0 +1,93 @@
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
// manual class headers
#include "TrajectoryDecoy.hpp"
namespace N_Ballistic
{
// ---------------------------------------------------------------
// initializes the object with the ammunition parameters
// ---------------------------------------------------------------
bool TrajectoryDecoy::init(const Ammunition &a_ammunition)
{
m_Initialized = false;
INFO_LOG(m_logger) << "initialising..." ;
m_SinkingVelocity = a_ammunition.m_StandardParams.m_Speed.m_V0ConstX1;
m_HeightRange = a_ammunition.m_AmmunInfo.m_Range;
//a_ammunition.m_StandardParams->m_Speed->m_V0ConstX0 >> m_InitialAmmuSpeed;
if (!TrajectoryBase::init(a_ammunition))
return false;
m_Sinking = false;
TRACE_LOG(m_logger) << "m_SinkingVelocity : " << m_SinkingVelocity ;
TRACE_LOG(m_logger) << "m_InitialAmmuSpeed : " << m_InitialAmmuSpeed ;
TRACE_LOG(m_logger) << "m_HeightRange : " << m_HeightRange ;
TRACE_LOG(m_logger) << "initialized successfully!" ;
return true;
}
// ---------------------------------------------------------------
// calculates the next point of a tracer using the algorithm
// implemented in the current class
// ---------------------------------------------------------------
N_Types::Coord3 TrajectoryDecoy::getNextPoint()
{
N_Types::Coord3 o_coord3;
m_MyTime += m_Tact;
o_coord3.m_Y = m_InitialAmmuSpeed * m_MyTime * cos(m_MyAngle);
if (!m_Sinking)
{
Float64 d_steigend = (m_InitialAmmuSpeed * m_MyTime * sin(m_MyAngle));
Float64 d_gravity = (N_SST::G * pow(m_MyTime, 2.0) / 2.0);
o_coord3.m_Z = d_steigend - d_gravity;
Float64 d_correction = o_coord3.m_Y / (m_InitialAmmuSpeed * cos(m_GunAngle.m_P));
o_coord3.m_X = m_CrossWind * (m_MyTime - d_correction);
if (o_coord3.m_Z > m_HeightRange)
{
INFO_LOG(m_logger) << "Start sinking" ;
m_SinkingPoint = o_coord3;
m_Sinking = true;
}
m_SinkingStartTime = m_MyTime;
INFO_LOG(m_logger) << "Ascending: Time=" << m_MyTime << " Height=" << o_coord3.m_Z << " Side=" << o_coord3.m_X ;
}
if (m_Sinking)
{
o_coord3.m_Z = m_SinkingPoint.m_Z - (m_SinkingVelocity * (m_MyTime - m_SinkingStartTime));
o_coord3.m_X = m_SinkingPoint.m_X - (m_CrossWind * (m_MyTime - m_SinkingStartTime));
INFO_LOG(m_logger) << "Sinking: Time=" << m_MyTime << " Height=" << o_coord3.m_Z << " Side=" << o_coord3.m_X ;
}
o_coord3 = o_coord3.rotateZ(m_GunAngle.m_H);
o_coord3 = o_coord3 + m_GunPos;
return o_coord3;
}
} // namespace N_Ballistic
@@ -0,0 +1,66 @@
#pragma once
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
// from stereotyped includes
#include "TrajectoryBase.hpp"
// manual class imports
namespace N_Ballistic
{
/**
* Decoy implementation for trajectory calculations
*
* @author Daniel.Schmid
* @version 1.0
* @created 07-Aug-2009 14:27:46
*/
class TrajectoryDecoy : public TrajectoryBase
{
public:
/**
* ## Constructors (generated)
*/
TrajectoryDecoy() : TrajectoryBase("TrajectoryDecoy") {}
/**
* initializes the object with the ammunition parameters
*
* @param a_ammunition ammunition definion from xml file
*/
bool init(const Ammunition &a_ammunition) override;
protected:
/**
* calculates the next point of a tracer using the algorithm implemented in the
* current class
*/
N_Types::Coord3 getNextPoint() override;
private:
Float64 m_SinkingVelocity = 0;
Float64 m_HeightRange = 0;
Float64 m_SinkingStartTime = 0;
N_Types::Coord3 m_SinkingPoint;
bool m_Sinking = false;
};
}
@@ -0,0 +1,136 @@
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
// manual class headers
#include "TrajectoryDiscrete.hpp"
namespace N_Ballistic
{
// ---------------------------------------------------------------
// initializes the object with the ammunition parameters
// ---------------------------------------------------------------
bool TrajectoryDiscrete::init(const Ammunition &a_ammunition)
{
m_Initialized = false;
if (!a_ammunition.m_DiscreteParams.m_Valid)
{
ERROR_LOG(m_logger) << "a_Ammunition.m_DiscreteParams is not valid" ;
return false;
}
TRACE_LOG(m_logger) << "TrajectoryPiton::init : initialising..." ;
m_CAY = a_ammunition.m_DiscreteParams.m_YAxis.m_CA;
m_CT2Y = a_ammunition.m_DiscreteParams.m_YAxis.m_CT2;
m_CT1Y = a_ammunition.m_DiscreteParams.m_YAxis.m_CT1;
m_CAlpha2Y = a_ammunition.m_DiscreteParams.m_YAxis.m_CAlpha2;
m_CAlpha1Y = a_ammunition.m_DiscreteParams.m_YAxis.m_CAlpha1;
m_CRhoY = a_ammunition.m_DiscreteParams.m_YAxis.m_CRho;
m_CVY = a_ammunition.m_DiscreteParams.m_YAxis.m_CV;
m_C0Y = a_ammunition.m_DiscreteParams.m_YAxis.m_C0;
m_CAZ = a_ammunition.m_DiscreteParams.m_ZAxis.m_CA;
m_CT2Z = a_ammunition.m_DiscreteParams.m_ZAxis.m_CT2;
m_CT1Z = a_ammunition.m_DiscreteParams.m_ZAxis.m_CT1;
m_CAlpha2Z = a_ammunition.m_DiscreteParams.m_ZAxis.m_CAlpha2;
m_CAlpha1Z = a_ammunition.m_DiscreteParams.m_ZAxis.m_CAlpha1;
m_CVZ = a_ammunition.m_DiscreteParams.m_ZAxis.m_CV;
m_C0Z = a_ammunition.m_DiscreteParams.m_ZAxis.m_C0;
m_CAX = a_ammunition.m_DiscreteParams.m_XAxis.m_CA;
m_CAlpha1X = a_ammunition.m_DiscreteParams.m_XAxis.m_CAlpha1;
m_C0X = a_ammunition.m_DiscreteParams.m_XAxis.m_C0;
if (!TrajectoryBase::init(a_ammunition))
return false;
TRACE_LOG(m_logger) << "m_CAY : " << m_CAY ;
TRACE_LOG(m_logger) << "m_CT2Y : " << m_CT2Y ;
TRACE_LOG(m_logger) << "m_CT1Y : " << m_CT1Y ;
TRACE_LOG(m_logger) << "m_CAlpha2Y : " << m_CAlpha2Y ;
TRACE_LOG(m_logger) << "m_CAlpha1Y : " << m_CAlpha1Y ;
TRACE_LOG(m_logger) << "m_CRhoY : " << m_CRhoY ;
TRACE_LOG(m_logger) << "m_CVY : " << m_CVY ;
TRACE_LOG(m_logger) << "m_C0Y : " << m_C0Y ;
TRACE_LOG(m_logger) << "m_CAZ : " << m_CAZ ;
TRACE_LOG(m_logger) << "m_CT2Z : " << m_CT2Z ;
TRACE_LOG(m_logger) << "m_CT1Z : " << m_CT1Z ;
TRACE_LOG(m_logger) << "m_CAlpha2Z : " << m_CAlpha2Z ;
TRACE_LOG(m_logger) << "m_CAlpha1Z : " << m_CAlpha1Z ;
TRACE_LOG(m_logger) << "m_CVZ : " << m_CVZ ;
TRACE_LOG(m_logger) << "m_C0Z : " << m_C0Z ;
TRACE_LOG(m_logger) << "m_CAX : " << m_CAX ;
TRACE_LOG(m_logger) << "m_CAlpha1X : " << m_CAlpha1X ;
TRACE_LOG(m_logger) << "m_C0X : " << m_C0X ;
TRACE_LOG(m_logger) << "TrajectoryPiton::init : initialized successfully!" ;
return true;
}
// ---------------------------------------------------------------
// calculates the next point of a tracer using the algorithm
// implemented in the current class
// ---------------------------------------------------------------
N_Types::Coord3 TrajectoryDiscrete::getNextPoint()
{
Float64 d_correction;
Float64 d_tmpConst;
N_Types::Coord3 o_coord3;
m_MyTime += m_Tact;
d_tmpConst = 1 - exp(-m_CAY * m_AirDensity * m_MyTime * m_InitialAmmuSpeed * cos(m_MyAngle));
d_tmpConst /= m_AirDensity * m_CAY;
d_correction = m_CT2Y * pow(m_MyTime, 2.0);
d_correction += m_CT1Y * m_MyTime;
d_correction += m_CAlpha2Y * pow(m_MyAngle, 2.0);
d_correction += m_CAlpha1Y * m_MyAngle;
d_correction += m_CRhoY * m_AirDensity;
d_correction += m_CVY * m_InitialAmmuSpeed;
d_correction += m_C0Y;
o_coord3.m_Y = d_tmpConst * d_correction;
d_tmpConst = 1 - (m_CAZ * m_AirDensity * m_MyTime * m_InitialAmmuSpeed * cos(m_MyAngle));
d_tmpConst *= N_SST::G * pow(m_MyTime, 2.0) / 2;
d_correction = m_CT2Z * pow(m_MyTime, 2.0);
d_correction += m_CT1Z * m_MyTime;
d_correction += m_CAlpha2Z * pow(m_MyAngle, 2.0);
d_correction += m_CAlpha1Z * m_MyAngle;
d_correction += m_CVZ * m_InitialAmmuSpeed;
d_correction += m_C0Z;
o_coord3.m_Z = o_coord3.m_Y * tan(m_MyAngle) - (d_tmpConst * d_correction);
d_tmpConst = m_CAX * o_coord3.m_Y;
d_tmpConst += m_CAlpha1X * m_MyAngle;
d_tmpConst += m_C0X;
d_tmpConst *= o_coord3.m_Y;
d_tmpConst /= m_InitialAmmuSpeed;
o_coord3.m_X = m_CrossWind * (m_MyTime - d_tmpConst);
o_coord3 = o_coord3.rotateZ(m_GunAngle.m_H);
o_coord3 = o_coord3 + m_GunPos;
return o_coord3;
}
} // namespace N_Ballistic
@@ -0,0 +1,78 @@
#pragma once
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
// from stereotyped includes
#include "TrajectoryBase.hpp"
// manual class imports
namespace N_Ballistic
{
/**
* Discrete implementation for trajectory calculations
*
* @author Daniel.Schmid
* @version 1.0
* @created 07-Aug-2009 14:27:55
*/
class TrajectoryDiscrete : public TrajectoryBase
{
public:
/**
* ## Constructors (generated)
*/
TrajectoryDiscrete() : TrajectoryBase("TrajectoryDiscrete") {}
/**
* initializes the object with the ammunition parameters
*
* @param a_ammunition ammunition definion from xml file
*/
bool init(const Ammunition &a_ammunition) override;
protected:
Float64 m_CAY = 0;
Float64 m_CT2Y = 0;
Float64 m_CT1Y = 0;
Float64 m_CAlpha2Y = 0;
Float64 m_CAlpha1Y = 0;
Float64 m_CRhoY = 0;
Float64 m_CVY = 0;
Float64 m_C0Y = 0;
Float64 m_CAZ = 0;
Float64 m_CT2Z = 0;
Float64 m_CT1Z = 0;
Float64 m_CAlpha2Z = 0;
Float64 m_CAlpha1Z = 0;
Float64 m_CVZ = 0;
Float64 m_C0Z = 0;
Float64 m_CAX = 0;
Float64 m_CAlpha1X = 0;
Float64 m_C0X = 0;
/**
* calculates the next point of a tracer using the algorithm implemented in the
* current class
*/
N_Types::Coord3 getNextPoint() override;
};
}
@@ -0,0 +1,85 @@
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
// manual class headers
#include "TrajectoryPiton.hpp"
namespace N_Ballistic
{
// ---------------------------------------------------------------
// initializes the object with the ammunition parameters
// ---------------------------------------------------------------
bool TrajectoryPiton::init(const Ammunition &a_ammunition)
{
m_Initialized = false;
TRACE_LOG(m_logger) << "TrajectoryPiton::init : initialising...";
m_CRhoY1 = a_ammunition.m_StandardParams.m_Time.m_CRhoT;
m_CRhoYC = a_ammunition.m_StandardParams.m_Time.m_ConstT;
m_CRhoZ1 = a_ammunition.m_StandardParams.m_Angle.m_CRhoA;
m_CRhoZC = a_ammunition.m_StandardParams.m_Angle.m_ConstA;
if (!TrajectoryBase::init(a_ammunition))
return false;
TRACE_LOG(m_logger) << "m_CRhoY1 : " << m_CRhoY1;
TRACE_LOG(m_logger) << "m_CRhoYC : " << m_CRhoYC;
TRACE_LOG(m_logger) << "m_CRhoZ1 : " << m_CRhoZ1;
TRACE_LOG(m_logger) << "m_CRhoZC : " << m_CRhoZC;
TRACE_LOG(m_logger) << "TrajectoryPiton::init : initialized successfully!";
return true;
}
// ---------------------------------------------------------------
// calculates the next point of a tracer using the algorithm
// implemented in the current class
// ---------------------------------------------------------------
N_Types::Coord3 TrajectoryPiton::getNextPoint()
{
const Float64 d_TWO_OVER_THREE = 2.0 / 3.0;
Float64 d_correction;
Float64 d_tmpConst;
N_Types::Coord3 o_coord3;
m_MyTime += m_Tact;
d_correction = (m_CRhoY1 * m_AirDensity) + m_CRhoYC;
d_tmpConst = (4.5 * m_MyTime * d_correction * m_InitialAmmuSpeed * cos(m_GunAngle.m_P)) + 1.0;
d_tmpConst = pow(d_tmpConst, d_TWO_OVER_THREE);
d_tmpConst -= 1.0;
o_coord3.m_Y = d_tmpConst / (d_correction * 3.0);
d_correction = m_CRhoZ1 * m_AirDensity + m_CRhoZC;
d_correction *= o_coord3.m_Y;
d_correction += 1.0;
d_correction *= (N_SST::G * pow(o_coord3.m_Y, 2.0));
d_tmpConst = pow(cos(m_GunAngle.m_P), 2.0);
d_correction /= (2.0 * pow(m_InitialAmmuSpeed, 2.0) * d_tmpConst);
o_coord3.m_Z = (o_coord3.m_Y * tan(m_GunAngle.m_P)) - d_correction;
d_correction = o_coord3.m_Y / (m_InitialAmmuSpeed * cos(m_GunAngle.m_P));
o_coord3.m_X = m_CrossWind * (m_MyTime - d_correction);
o_coord3 = o_coord3.rotateZ(m_GunAngle.m_H);
o_coord3 = o_coord3 + m_GunPos;
return o_coord3;
}
} // namespace N_Ballistic
@@ -0,0 +1,63 @@
#pragma once
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
// from stereotyped includes
#include "TrajectoryBase.hpp"
// manual class imports
namespace N_Ballistic
{
/**
* Piton Bressant implementation for trajectory calculations
*
* @author Daniel.Schmid
* @version 1.0
* @created 07-Aug-2009 14:27:37
*/
class TrajectoryPiton : public TrajectoryBase
{
public:
/**
* ## Constructors (generated)
*/
TrajectoryPiton() : TrajectoryBase("TrajectoryPiton") {}
/**
* initializes the object with the ammunition parameters
*
* @param a_ammunition ammunition definion from xml file
*/
bool init(const Ammunition &a_ammunition) override;
protected:
Float64 m_CRhoY1 = 0;
Float64 m_CRhoYC = 0;
Float64 m_CRhoZ1 = 0;
Float64 m_CRhoZC = 0;
/**
* calculates the next point of a tracer using the algorithm implemented in the
* current class
*/
N_Types::Coord3 getNextPoint() override;
};
}
@@ -0,0 +1,196 @@
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
// manual class headers
#include "TrajectoryRungeKutta.hpp"
#include "../logger.h"
using N_Ballistic::TrajectoryRungeKutta;
using namespace N_Ballistic;
// static member initialization
Float64 TrajectoryRungeKutta::m_Temp = 0;
Float64 TrajectoryRungeKutta::m_TempWeapon = 0;
// ---------------------------------------------------------------
// initializes the object with the ammunition parameters
// ---------------------------------------------------------------
bool TrajectoryRungeKutta::init(const Ammunition &a_ammunition)
{
m_Initialized = false;
TRACE_LOG(m_logger) << "TrajectoryRungeKutta::init : initialising...";
if (a_ammunition.m_CWParams.m_Valid)
{
int cwcount = a_ammunition.m_CWParams.m_CW.size();
for (int i = 0; i < cwcount; i++)
{
m_CWCoeff.push_back(a_ammunition.m_CWParams.m_CW[i]);
TRACE_LOG(m_logger) << "CW " << i << " = " << a_ammunition.m_CWParams.m_CW[i];
}
int v0count = a_ammunition.m_CWParams.m_V0.size();
for (int i = 0; i < v0count; i++)
{
m_V0Coeff.push_back(a_ammunition.m_CWParams.m_V0[i]);
TRACE_LOG(m_logger) << "V0 " << i << " = " << a_ammunition.m_CWParams.m_V0[i];
}
int xwcount = a_ammunition.m_CWParams.m_XW.size();
for (int i = 0; i < xwcount; i++)
{
m_XWCoeff.push_back(a_ammunition.m_CWParams.m_XW[i]);
TRACE_LOG(m_logger) << "XW " << i << " = " << a_ammunition.m_CWParams.m_XW[i];
}
m_Weight = a_ammunition.m_CWParams.m_Weight;
m_Radius = 0.5 * a_ammunition.m_AmmunInfo.m_Caliber / 1000.0;
TRACE_LOG(m_logger) << "Weight = " << m_Weight;
TRACE_LOG(m_logger) << "Radius = " << m_Radius;
}
else
{
ERROR_LOG(m_logger) << "Parameters missing...";
return false;
}
m_Derivation = a_ammunition.m_AmmunInfo.m_Derivation;
if (!TrajectoryBase::init(a_ammunition))
return false;
TRACE_LOG(m_logger) << "TrajectoryRungeKutta::init : initialized successfully!";
return true;
}
// ---------------------------------------------------------------
// calculates the next point of a tracer using the algorithm
// implemented in the current class
// ---------------------------------------------------------------
N_Types::Coord3 TrajectoryRungeKutta::getNextPoint()
{
Float64 l_Gamma = 0.0065;
Float64 l_Temp0 = N_SST::ZERO_CELSIUS_IN_KELVIN + m_Temp;
Float64 l_A = pow(m_Radius, 2.0) * M_PI;
Float64 l_M = m_Weight;
m_MyTime += m_Tact;
Float64 l_Temp = l_Temp0 - (l_Gamma * m_H);
Float64 l_Rho = 4.171E-11 * pow(l_Temp, 4.2559);
Float64 l_q = l_M / l_A;
// Schritt 1
Float64 l_Vn = sqrt(pow(m_Vx, 2.0) + pow(m_Vy, 2.0));
Float64 l_Mx1 = -m_CW * (l_Rho / 2) * l_Vn * (m_Vx / l_q);
Float64 l_My1 = (-m_CW * (l_Rho / 2) * l_Vn * (m_Vy / l_q)) - N_SST::G;
Float64 l_Vx1 = m_Vx + (l_Mx1 * (m_Tact / 2.0));
Float64 l_Vy1 = m_Vy + (l_My1 * (m_Tact / 2.0));
Float64 l_V1 = sqrt(pow(l_Vx1, 2.0) + pow(l_Vy1, 2.0));
// Schritt 2
Float64 l_Mx2 = -m_CW * (l_Rho / 2) * l_V1 * (l_Vx1 / l_q);
Float64 l_My2 = (-m_CW * (l_Rho / 2) * l_V1 * (l_Vy1 / l_q)) - N_SST::G;
Float64 l_Vx2 = l_Vx1 + (l_Mx2 * (m_Tact / 2.0));
Float64 l_Vy2 = l_Vy1 + (l_My2 * (m_Tact / 2.0));
Float64 l_V2 = sqrt(pow(l_Vx2, 2.0) + pow(l_Vy2, 2.0));
// Schritt 3
Float64 l_Mx3 = -m_CW * (l_Rho / 2) * l_V2 * (l_Vx2 / l_q);
Float64 l_My3 = (-m_CW * (l_Rho / 2) * l_V2 * (l_Vy2 / l_q)) - N_SST::G;
Float64 l_Vx3 = l_Vx2 + (l_Mx3 * m_Tact);
Float64 l_Vy3 = l_Vy2 + (l_My3 * m_Tact);
Float64 l_V3 = sqrt(pow(l_Vx3, 2.0) + pow(l_Vy3, 2.0));
// Schritt 4
Float64 l_Mx4 = -m_CW * (l_Rho / 2) * l_V3 * (l_Vx3 / l_q);
Float64 l_My4 = (-m_CW * (l_Rho / 2) * l_V3 * (l_Vy3 / l_q)) - N_SST::G;
Float64 l_Mx = (l_Mx1 + (2 * l_Mx2) + (2 * l_Mx3) + l_Mx4) / 6.0;
Float64 l_My = (l_My1 + (2 * l_My2) + (2 * l_My3) + l_My4) / 6.0;
Float64 l_Vx = m_Vx + l_Mx * m_Tact;
Float64 l_Vy = m_Vy + l_My * m_Tact;
N_Types::Coord3 o_coord3;
o_coord3.m_Y = 0.5 * (m_Vx + l_Vx) * m_Tact;
o_coord3.m_Z = 0.5 * (m_Vy + l_Vy) * m_Tact;
// Correction for Wind (approximative, not confirmed)
if (m_XW != 0 && m_CrossWind != 0)
{
Float64 d_correction = o_coord3.m_Y / (m_Vx * cos(m_GunAngle.m_P));
o_coord3.m_X = m_CrossWind * (m_Tact - d_correction) / m_XW;
}
// correction for derivation (right drift due to rotation of bullet)
if (m_Derivation != 0)
o_coord3.m_X += o_coord3.m_Y * m_Derivation;
o_coord3 = o_coord3.rotateZ(m_GunAngle.m_H);
o_coord3 = o_coord3 + m_MyPoints[0];
m_H = o_coord3.m_Z;
m_Vx = l_Vx;
m_Vy = l_Vy;
return o_coord3;
}
// ---------------------------------------------------------------
// initializes the object with the following parameters
// ---------------------------------------------------------------
bool TrajectoryRungeKutta::init(const N_Types::Coord3 &a_gunPos, const N_Types::Angle3 &a_gunAngle, const Float64 a_crossWind, const Float64 a_airDensity, const Float64 a_initialAmmuSpeed)
{
bool l_Ret = TrajectoryBase::init(a_gunPos, a_gunAngle, a_crossWind, a_airDensity, a_initialAmmuSpeed);
m_V0 = a_initialAmmuSpeed;
m_CW = 0;
m_XW = 0;
bool l_CWFound = false;
for (size_t i = 0; i < m_V0Coeff.size(); i++)
{
if (m_V0Coeff[i] == m_V0)
{
m_CW = m_CWCoeff[i];
m_XW = m_XWCoeff[i];
l_CWFound = true;
break;
}
}
if (!l_CWFound)
ERROR_LOG(m_logger) << "CW Value for Speed " << m_V0 << " could not be found !";
m_H = m_GunPos.m_Z;
m_Vx = m_V0 * cos(m_GunAngle.m_P);
m_Vy = m_V0 * sin(m_GunAngle.m_P);
INFO_LOG(m_logger) << "Initial Values: H=" << m_H << " CW=" << m_CW << " V0=" << m_V0;
INFO_LOG(m_logger) << " Vx=" << m_Vx << " Vy=" << m_Vy;
INFO_LOG(m_logger) << " XW=" << m_XW ;
return l_Ret;
}
@@ -0,0 +1,85 @@
#pragma once
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
// from stereotyped includes
#include "TrajectoryBase.hpp"
// manual class imports
namespace N_Ballistic
{
/**
* RungeKutta implementation for trajectory calculations
*
* @author Daniel.Schmid
* @version 1.0
* @created 22-Jul-2010 11:39:16
*/
class TrajectoryRungeKutta : public TrajectoryBase
{
public:
TrajectoryRungeKutta(const char *loggerName = "TrajectoryRungeKutta") : TrajectoryBase(loggerName) {}
static Float64 m_Temp;
static Float64 m_TempWeapon;
/**
* initializes the object with the ammunition parameters
*
* @param a_ammunition ammunition definion from xml file
*/
bool init(const Ammunition &a_ammunition) override;
/**
* initializes the object with the following parameters
*
* @param a_gunPos Position of the gun
* @param a_gunAngle Shooting angle of the gun
* @param a_crossWind lateral wind
* @param a_airDensity Air density
* @param a_initialAmmuSpeed ammunition speed
*/
bool init(const N_Types::Coord3 &a_gunPos,
const N_Types::Angle3 &a_gunAngle,
const Float64 a_crossWind,
const Float64 a_airDensity,
const Float64 a_initialAmmuSpeed) override;
protected:
std::vector<Float64> m_CWCoeff;
std::vector<Float64> m_V0Coeff;
std::vector<Float64> m_XWCoeff;
Float64 m_Vx = 0;
Float64 m_Vy = 0;
Float64 m_H = 0;
Float64 m_T = 0;
Float64 m_V0 = 0;
Float64 m_CW = 0;
Float64 m_XW = 0;
Float64 m_Weight = 0;
Float64 m_Radius = 0;
/**
* calculates the next point of a tracer using the algorithm implemented in the
* current class
*/
N_Types::Coord3 getNextPoint() override;
};
}
@@ -0,0 +1,84 @@
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
// manual class headers
#include "TrajectoryRungeKuttaSimple.hpp"
namespace N_Ballistic
{
// ---------------------------------------------------------------
// calculates the next point of a tracer using the algorithm
// implemented in the current class
// ---------------------------------------------------------------
N_Types::Coord3 TrajectoryRungeKuttaSimple::getNextPoint()
{
Float64 l_Gamma = 0.0065;
Float64 l_Temp0 = N_SST::ZERO_CELSIUS_IN_KELVIN + m_Temp;
Float64 l_A = pow(m_Radius, 2.0) * M_PI;
Float64 l_M = m_Weight;
m_MyTime += m_Tact;
// INFO_LOG(m_logger) << "-------------- dT=" << m_Tact << " Total=" << m_MyTime << END_LOG;
Float64 l_Temp = l_Temp0 - (l_Gamma * m_H);
// INFO_LOG(m_logger) << "Temp=" << l_Temp << " auf Höhe " << m_H << END_LOG;
Float64 l_Rho = 4.171E-11/* * pow(10, -11)*/ * pow(l_Temp, 4.2559);
Float64 l_q = l_M / l_A;
// INFO_LOG(m_logger) << "Rho=" << l_Rho << " für q=" << l_q << " Fläche=" << l_A << " Masse=" << l_M << END_LOG;
// Schritt 1
Float64 l_Vn = sqrt(pow(m_Vx, 2.0) + pow(m_Vy, 2.0));
// INFO_LOG(m_logger) << "Vn=" << l_Vn << " für Vx=" << m_Vx << " Vy=" << m_Vy << END_LOG;
Float64 l_Mx = -m_CW * (l_Rho / 2) * l_Vn * (m_Vx / l_q);
Float64 l_My = (-m_CW * (l_Rho / 2) * l_Vn * (m_Vy / l_q)) - N_SST::G;
// INFO_LOG(m_logger) << "Mx=" << l_Mx << " My=" << l_My << END_LOG;
Float64 l_Vx = m_Vx + l_Mx * m_Tact;
Float64 l_Vy = m_Vy + l_My * m_Tact;
// INFO_LOG(m_logger) << "Vx=" << l_Vx << " Vy=" << l_Vy << END_LOG;
N_Types::Coord3 o_coord3;
o_coord3.m_Y = 0.5 * (m_Vx + l_Vx) * m_Tact; // Beware: 2 different coordinate systems used here !!
o_coord3.m_Z = 0.5 * (m_Vy + l_Vy) * m_Tact;
// INFO_LOG(m_logger) << "dX=" << o_coord3.m_Y << " dy=" << o_coord3.m_Z << END_LOG;
// Correction for Wind (approximative, not confirmed)
if (m_XW != 0 && m_CrossWind != 0)
{
Float64 d_correction = o_coord3.m_Y / (m_Vx * cos(m_GunAngle.m_P));
o_coord3.m_X = m_CrossWind * (m_Tact - d_correction) / m_XW;
}
// correction for derivation (right drift due to rotation of bullet)
if (m_Derivation != 0)
o_coord3.m_X += o_coord3.m_Y * m_Derivation;
o_coord3 = o_coord3.rotateZ(m_GunAngle.m_H);
o_coord3 = o_coord3 + m_MyPoints[0];
m_H = m_GunPos.m_Z + o_coord3.m_Z;
// INFO_LOG(m_logger) << "-> Pos=" << o_coord3 << END_LOG;
m_Vx = l_Vx;
m_Vy = l_Vy;
// INFO_LOG(m_logger) << "Vx=" << m_Vx << " Vy=" << m_Vy << END_LOG;
return o_coord3;
}
} // namespace N_Ballistic
@@ -0,0 +1,47 @@
#pragma once
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
// from stereotyped includes
#include "TrajectoryRungeKutta.hpp"
// manual class imports
namespace N_Ballistic
{
/**
* Simple RungeKutta implementation for trajectory calculations
*
* @author Daniel.Schmid
* @version 1.0
* @created 22-Jul-2010 12:12:41
*/
class TrajectoryRungeKuttaSimple : public TrajectoryRungeKutta
{
public:
TrajectoryRungeKuttaSimple() : TrajectoryRungeKutta("TrajectoryRungeKuttaSimple") {}
protected:
/**
* calculates the next point of a tracer using the algorithm implemented in the
* current class
*/
N_Types::Coord3 getNextPoint() override;
};
}
@@ -0,0 +1,41 @@
#* **************************************************************************
#*
#* (C) Copyright 2009 Swiss SIMTEC AG
#*
#* **************************************************************************
#*
#* $HeadURL$
#* $LastChangedBy$
#* $LastChangedDate$
#* $LastChangedRevision$
#*
#* **************************************************************************
SET(my_SRCS
configsettings.cpp
ammuconfig.cpp
geoconfig.cpp
# ../logger.cpp # wird nicht genutzt, warum nochmals übersetzen?
)
SET(my_HDRS
configsettings.h
ammuconfig.h
geoconfig.h
# ../logger.h # wird nicht genutzt, warum nochmals übersetzen?
)
NGL_TARGET_INCLUDE_DIRECTORIES(GBL_ConfigSystem
PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/../
${CMAKE_CURRENT_BINARY_DIR}/../
)
NGL_ADD_LIBRARY(AAR SV GBL_ConfigSystem STATIC ${my_SRCS} ${my_HDRS})
NGL_TARGET_LINK_LIBRARIES(GBL_ConfigSystem
Qt5::Core
nglsettings
FW_Ballistic
situationMapElevationMap
)
@@ -0,0 +1,155 @@
/**
* Geopairing Ammu Config
* $Id$
* $HeadURL$
* $Author$
* Created by Gerlinde Rudolphus, ESZS, 2016-04-14
*/
#include "ammuconfig.h"
#include <QStringList>
namespace N_ConfigSystem
{
AmmuConfig *AmmuConfig::getInstance()
{
static AmmuConfig ammuConfig;
return &ammuConfig;
}
void AmmuConfig::initFilename(const QString &fileName)
{
ConfigSettings::initFilename(fileName);
loadAmmunitions();
}
// ---------------------------------------------------------------
N_Ballistic::Ammunition AmmuConfig::loadAmmunition(QString a_group)
{
N_Ballistic::Ammunition p_ammu;
p_ammu.m_AmmunInfo.m_Name = getString(a_group, QStringLiteral("Name"), QStringLiteral("<unknown>"));
p_ammu.m_AmmunInfo.m_Range = getFloat(a_group, QStringLiteral("Range"), 0);
p_ammu.m_AmmunInfo.m_Caliber = getFloat(a_group, QStringLiteral("Caliber"), 0);
p_ammu.m_AmmunInfo.m_Speed = getFloat(a_group, QStringLiteral("Speed"), 0);
p_ammu.m_AmmunInfo.m_TimeOut = getFloat(a_group, QStringLiteral("TimeOut"), 0);
p_ammu.m_AmmunInfo.m_ReasonToDetonate = getString(a_group, QStringLiteral("ReasonToDetonate"), QStringLiteral("OnImpact"));
p_ammu.m_AmmunInfo.m_Algorithm = getString(a_group, QStringLiteral("Algorithm"), QStringLiteral("DAntonio"));
p_ammu.m_AmmunInfo.m_Deviation = getFloat(a_group, QStringLiteral("Deviation"), 0.0);
//INFO_LOG(m_logger) << a_group << " m_Deviation : " << p_ammu.m_AmmunInfo.m_Deviation ;
p_ammu.m_AmmunInfo.m_Derivation = getFloat(a_group, QStringLiteral("Derivation"), 0.0);
//INFO_LOG(m_logger) << a_group << " m_Derivation : " << p_ammu.m_AmmunInfo.m_Derivation ;
QString s_paramtype = getString(a_group, QStringLiteral("ParamType"), QString());
a_group += QLatin1Char('/') + s_paramtype;
if (s_paramtype == QStringLiteral("PolygonParams"))
{
p_ammu.m_PolygonParams.m_InitialAX = getFloat(a_group, QStringLiteral("InitialAX"), 0);
QVector<int> l_axindex = getIntegerVector(a_group, QStringLiteral("AXIndex"));
QVector<double> l_axcoeff = getFloatVector(a_group, QStringLiteral("AXCoeff"));
for (int i = 0; i < l_axcoeff.size(); i++)
{
N_Ballistic::PolygonParamType::PolyCoefficientType o_coeff;
o_coeff.m_Index = l_axindex[i];
o_coeff.m_Coeff = l_axcoeff[i];
p_ammu.m_PolygonParams.m_AX.push_back(std::move(o_coeff));
}
QVector<int> l_ayindex = getIntegerVector(a_group, QStringLiteral("AYIndex"));
QVector<double> l_aycoeff = getFloatVector(a_group, QStringLiteral("AYCoeff"));
for (int i = 0; i < l_aycoeff.size(); i++)
{
N_Ballistic::PolygonParamType::PolyCoefficientType o_coeff;
o_coeff.m_Index = l_ayindex[i];
o_coeff.m_Coeff = l_aycoeff[i];
p_ammu.m_PolygonParams.m_AY.push_back(std::move(o_coeff));
}
p_ammu.m_PolygonParams.m_Valid = true;
}
else if (s_paramtype == QStringLiteral("StandardParams"))
{
p_ammu.m_StandardParams.m_Time.m_CRhoT = getFloat(a_group, QStringLiteral("Time_CRhoT"), 0);
p_ammu.m_StandardParams.m_Time.m_CT = getFloat(a_group, QStringLiteral("Time_CT"), 0);
p_ammu.m_StandardParams.m_Time.m_CV0T = getFloat(a_group, QStringLiteral("Time_CV0T"), 0);
p_ammu.m_StandardParams.m_Time.m_ConstT = getFloat(a_group, QStringLiteral("Time_ConstT"), 0);
p_ammu.m_StandardParams.m_Angle.m_CRhoA = getFloat(a_group, QStringLiteral("Angle_CRhoA"), 0);
p_ammu.m_StandardParams.m_Angle.m_CGammaA = getFloat(a_group, QStringLiteral("Angle_CGammaA"), 0);
p_ammu.m_StandardParams.m_Angle.m_CA = getFloat(a_group, QStringLiteral("Angle_CA"), 0);
p_ammu.m_StandardParams.m_Angle.m_CV0A = getFloat(a_group, QStringLiteral("Angle_CV0A"), 0);
p_ammu.m_StandardParams.m_Angle.m_ConstA = getFloat(a_group, QStringLiteral("Angle_ConstA"), 0);
p_ammu.m_StandardParams.m_CrossWind.m_ConstX3 = getFloat(a_group, QStringLiteral("CrossWind_ConstX3"), 0);
p_ammu.m_StandardParams.m_CrossWind.m_ConstX2 = getFloat(a_group, QStringLiteral("CrossWind_ConstX2"), 0);
p_ammu.m_StandardParams.m_CrossWind.m_ConstX1 = getFloat(a_group, QStringLiteral("CrossWind_ConstX1"), 0);
p_ammu.m_StandardParams.m_CrossWind.m_ConstX0 = getFloat(a_group, QStringLiteral("CrossWind_ConstX0"), 0);
p_ammu.m_StandardParams.m_Speed.m_V0ConstX0 = getFloat(a_group, QStringLiteral("Speed_V0ConstX0"), 0);
p_ammu.m_StandardParams.m_Speed.m_V0ConstX1 = getFloat(a_group, QStringLiteral("Speed_V0ConstX1"), 0);
//INFO_LOG(m_logger) << a_group << " Speed_V0Const0 : " << p_ammu.m_StandardParams.m_Speed.m_V0ConstX0 ;
//INFO_LOG(m_logger) << a_group << " Speed_V0Const1 : " << p_ammu.m_StandardParams.m_Speed.m_V0ConstX1 ;
p_ammu.m_StandardParams.m_Valid = true;
}
else if (s_paramtype == QStringLiteral("CWParams"))
{
QString l_groupp = a_group.replace(QStringLiteral("Ammunition"), QStringLiteral("AmmunitionP"));
p_ammu.m_CWParams.m_V0 = getFloatVector(l_groupp, QStringLiteral("V0"));
p_ammu.m_CWParams.m_CW = getFloatVector(l_groupp, QStringLiteral("CW"));
p_ammu.m_CWParams.m_XW = getFloatVector(l_groupp, QStringLiteral("XW"));
p_ammu.m_CWParams.m_Weight = getFloat(l_groupp, QStringLiteral("Weight"), 1);
for (int i = 0; i < p_ammu.m_CWParams.m_CW.size(); i++)
{
//INFO_LOG(m_logger) << "CWParams V0 " << i << " : " << p_ammu.m_CWParams.m_V0[i] ;
//INFO_LOG(m_logger) << "CWParams CW " << i << " : " << p_ammu.m_CWParams.m_CW[i] ;
//INFO_LOG(m_logger) << "CWParams XW " << i << " : " << p_ammu.m_CWParams.m_XW[i] ;
}
//INFO_LOG(m_logger) << "CWParams read, V0 count=" << p_ammu.m_CWParams.m_V0.size() ;
//INFO_LOG(m_logger) << "CWParams read, CW count=" << p_ammu.m_CWParams.m_CW.size() ;
//INFO_LOG(m_logger) << "CWParams read, XW count=" << p_ammu.m_CWParams.m_XW.size() ;
//INFO_LOG(m_logger) << "CWParams read, Weight = " << p_ammu.m_CWParams.m_Weight ;
p_ammu.m_CWParams.m_Valid = true;
}
else if (s_paramtype == QStringLiteral("DiscreteParams"))
{
//ERROR_LOG(m_logger) << "not yet implemented : " << s_paramtype ;
}
else
{
//ERROR_LOG(m_logger) << "Unknown ParamType : " << s_paramtype ;
}
return p_ammu;
}
//bool AmmuConfig::loadAmmunitions(const QString &a_configFilename, QVector<Ammunition *> &a_ammunitions)
void AmmuConfig::loadAmmunitions()
{
m_ammunitions.clear();
int l_numberOfAmmunitions = getInteger(QStringLiteral("Ammunitions"), QStringLiteral("NumberOfEntries"), 0);
//INFO_LOG(m_logger) << "d_numberOfEntries : " << d_numberOfEntries ;
for (int i = 0; i < l_numberOfAmmunitions; i++)
{
QString s_ammu_group = QStringLiteral("Ammunition") + QString::number(i + 1);
m_ammunitions.push_back(loadAmmunition(s_ammu_group));
// INFO_LOG(m_logger) << "Ammunition " << p_ammu.m_AmmunInfo.m_Name << " added to list" ;
}
bool l_RandomizerOff = existsKey(QStringLiteral("Ammunitions"), QStringLiteral("DisableRandomSeed"));
if (!l_RandomizerOff)
srand(time(nullptr));
//else
// WARNING_LOG(m_logger) << "Randomizer is NOT seeded with Time..." ;
//INFO_LOG(m_logger) << "Total Ammunition count : " << m_ammunitions.size() ;
}
} // namespace N_ConfigSystem
@@ -0,0 +1,27 @@
#pragma once
#include <QString>
#include <QVector>
#include "configsettings.h"
#include <FW_Ballistic/Ammunition.hpp>
namespace N_ConfigSystem
{
class AmmuConfig: public ConfigSettings
{
private:
AmmuConfig() = default;
public:
static AmmuConfig *getInstance();
void initFilename(const QString &fileName);
QVector<N_Ballistic::Ammunition>* GetAmmunitions(){return &m_ammunitions;}
private:
N_Ballistic::Ammunition loadAmmunition(QString a_group);
void loadAmmunitions();
QVector<N_Ballistic::Ammunition> m_ammunitions;
};
}
@@ -0,0 +1,102 @@
#include "configsettings.h"
ConfigSettings::~ConfigSettings()
{
delete m_settings;
}
void ConfigSettings::initFilename(const QString &fileName)
{
delete m_settings;
m_settings = new QSettings(fileName, QSettings::IniFormat);
}
int ConfigSettings::getInteger(const QString &a_group, const QString &a_key, const int &defaultValue)
{
int result;
if (!existsKey(a_group, a_key) )
return defaultValue;
QString keygrp = a_group + QLatin1Char('/') + a_key;
result = m_settings->value(keygrp).toInt();
return result;
}
QVector<int> ConfigSettings::getIntegerVector(const QString &a_group, const QString &a_key)
{
QVector<int> result;
if (!existsKey(a_group, a_key) )
return result;
const QString keygrp = a_group + QLatin1Char('/') + a_key;
const QStringList list = m_settings->value(keygrp).toStringList();
result.reserve(list.size());
for (const QString &value : list)
result.append(value.toInt());
return result;
}
QMap<int, bool> ConfigSettings::getBoolMap(const QString &a_group, const QString &a_key)
{
QMap<int, bool> result;
QVector<int> intVector = getIntegerVector(a_group, a_key);
for (int i = 0; i < intVector.size(); i++)
result.insert(i, static_cast<bool>(intVector.at(i)));
return result;
}
QString ConfigSettings::getString(const QString &a_group, const QString &a_key, const QString &defaultValue)
{
QString result;
if ( !existsKey(a_group, a_key) )
return defaultValue;
QString keygrp = a_group + QLatin1Char('/') + a_key;
result = m_settings->value(keygrp).toString();
return result;
}
double ConfigSettings::getFloat(const QString &a_group, const QString &a_key, const double &defaultValue)
{
double result;
if ( !existsKey(a_group, a_key) )
return defaultValue;
QString keygrp = a_group + QLatin1Char('/') + a_key;
result = m_settings->value(keygrp).toDouble();
return result;
}
QVector<double> ConfigSettings::getFloatVector(const QString &a_group, const QString &a_key)
{
QVector<double> result;
if (!existsKey(a_group, a_key) )
return result;
const QString keygrp = a_group + QLatin1Char('/') + a_key;
const QStringList list = m_settings->value(keygrp).toStringList();
result.reserve(list.size());
for (const QString &value : list)
result.append(value.toDouble());
return result;
}
bool ConfigSettings::existsGroup(const QString &a_group)
{
QStringList groups = m_settings->childGroups();
return groups.contains(a_group);
}
QStringList ConfigSettings::getKeys(const QString &a_group)
{
QStringList keys;
m_settings->beginGroup(a_group);
keys = m_settings->allKeys();
m_settings->endGroup();
return keys;
}
bool ConfigSettings::existsKey(const QString &a_group, const QString &a_key)
{
QStringList keys = getKeys(a_group);
return keys.contains(a_key);
}
@@ -0,0 +1,32 @@
#ifndef CONFIGSETTINGS_H
#define CONFIGSETTINGS_H
#include <QString>
#include <QSettings>
#include <QVector>
#include <QStringList>
class ConfigSettings
{
protected:
ConfigSettings() = default;
virtual ~ConfigSettings();
public:
void initFilename(const QString &fileName);
int getInteger(const QString &a_group, const QString &a_key, const int &defaultValue);
QVector<int> getIntegerVector(const QString &a_group, const QString &a_key);
QMap<int, bool> getBoolMap(const QString &a_group, const QString &a_key);
QString getString(const QString &a_group, const QString &a_key, const QString &defaultValue);
double getFloat(const QString &a_group, const QString &a_key, const double &defaultValue);
QVector<double> getFloatVector(const QString &a_group, const QString &a_key);
bool existsGroup(const QString &a_group);
QStringList getKeys(const QString &a_group);
bool existsKey(const QString &a_group, const QString &a_key);
private:
QSettings *m_settings = nullptr;
};
#endif // CONFIGSETTINGS_H
@@ -0,0 +1,95 @@
/**
* Geopairing Config
* $Id$
* $HeadURL$
* $Author$
* Created by Gerlinde Rudolphus, ESZS, 2016-04-14
*/
#include "geoconfig.h"
#include <QFileInfo>
namespace N_ConfigSystem
{
GeoConfig::GeoConfig()
//: m_logger(CesGeoPairing::getLogger("GeoConfig"))
{
}
GeoConfig::~GeoConfig()
{
}
GeoConfig *GeoConfig::getInstance()
{
static GeoConfig geoConfig;
return &geoConfig;
}
bool GeoConfig::initFilename(const QString &fileName)
{
// const QFileInfo qFileInfo(fileName);
// INFO_LOG(m_logger) << LOGFUNCTION << " START, GeoConfig::absoluteFilePath ='" << qFileInfo.absoluteFilePath() << "'";
// AmmunitionMap
ConfigSettings::initFilename(fileName);
initializeAmmu();
// Elevation (srtm_38_02.tif -> Norddeutschland)
const QString elevationName = getString(QStringLiteral("Elevation"), QStringLiteral("MapFile"), QStringLiteral("/usr/share/arcgis/resources/elevation/srtm_38_02.tif"));
const QStringList &filePaths_rough_to_fine = elevationName.split(QStringLiteral(";"));
// INFO_LOG(m_logger) << LOGFUNCTION << " use following file(s) for ElevationMap: '" << elevationName << "'";
if (!m_elevationMapManager)
{
m_elevationMapManager = std::make_shared<SituationMap::ElevationMapManager>();
m_elevationMapManager->init(filePaths_rough_to_fine);
}
// TRACE_LOG(m_logger) << LOGFUNCTION << " END, filename ='" << fileName << "'";
return true;
}
// ---------------------------------------------------------------
// Initialize the GeoPairing implementation
// ---------------------------------------------------------------
void GeoConfig::initializeAmmu()
{
int l_numberOfAmmunitions = getInteger(QStringLiteral("GeoPairing"), QStringLiteral("NumberOfEntries"), 0);
QString s_filter = getString(QStringLiteral("GeoPairing"), QStringLiteral("KeyOfEntries"), QStringLiteral("Ammunition"));
m_AmmuMap.clear();
QString s_group = QStringLiteral("AmmunitionMap");
for (int i=0; i< l_numberOfAmmunitions; i++)
{
QString s_ammu_group = s_filter + QString::number(i+1);
QString s_unknown = QStringLiteral("<unknown>");
QString s_ammu_value = getString(s_group, s_ammu_group, s_unknown);
m_AmmuMap[i] = s_ammu_value;
}
m_ChargeMap.clear();
for (int i = 0; i < l_numberOfAmmunitions; i++)
{
QString s_ammu_group = s_filter + QString::number(i + 1);
QVector<double> l_charges = getFloatVector(QStringLiteral("ChargeMap"), s_ammu_group);
m_ChargeMap[i] = l_charges;
// INFO_LOG(m_logger) << "Store ChargeMap Entry: " << " i=" << i << " s_ammu_group = '" << s_ammu_group << "'";
// for (int j = 0; j < l_charges.size(); j++)
// INFO_LOG(m_logger) << j << " = " << l_charges[j];
}
}
double GeoConfig::getElevation(const double lon, const double lat) const
{
if (!m_elevationMapManager)
return 0;
m_elevationMapManager->waitForInitialization();
return m_elevationMapManager->elevation(lon, lat);
}
} // namespace N_ConfigSystem
@@ -0,0 +1,62 @@
/**
* Geopairing Config
* $Id$
* $HeadURL$
* $Author$
* Created by Gerlinde Rudolphus, ESZS, 2016-04-14
*/
#pragma once
//class GeoConfig
#include "configsettings.h"
//#include "../logger.h"
#include <ElevationMap/elevation_map_manager.h>
#include <QString>
#include <iostream> // std::cout, std::endl, std::cin
#include <stdlib.h> // EXIT_SUCCESS
#include <memory>
// forward declaration:
namespace SituationMap
{
class ElevationMap;
}
namespace CesGeoPairing
{
class HandlerGeoPairing;
}
namespace N_ConfigSystem
{
class GeoConfig: public ConfigSettings
{
private:
explicit GeoConfig();
~GeoConfig();
public:
static GeoConfig *getInstance();
QMap<int, QString> getAmmuMap() const { return m_AmmuMap; }
QMap<int, QVector<double> > getChargeMap() const { return m_ChargeMap; }
double getElevation(const double lon, const double lat) const;
private:
friend class CesGeoPairing::HandlerGeoPairing; // for initFilename
bool initFilename(const QString &fileName);
void initializeAmmu();
QMap<int, QString> m_AmmuMap ;
QMap<int, QVector<double> > m_ChargeMap;
std::shared_ptr<SituationMap::ElevationMapManager> m_elevationMapManager;
// CesGeoPairing::LOGGER_T m_logger;
};
}
@@ -0,0 +1,9 @@
ADD_LIBRARY(GBL_Global INTERFACE)
TARGET_SOURCES(GBL_Global INTERFACE
${CMAKE_CURRENT_SOURCE_DIR}/Constants.hpp
${CMAKE_CURRENT_SOURCE_DIR}/Types.hpp
)
TARGET_INCLUDE_DIRECTORIES(GBL_Global
INTERFACE
${CMAKE_CURRENT_SOURCE_DIR}/../
)
@@ -0,0 +1,66 @@
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
#ifndef CONSTANTS_HPP
#define CONSTANTS_HPP 1
//============================================================================
// additional include file(s)
//============================================================================
#include "Types.hpp"
namespace N_SST
{
//==========================================================================
// constant definitions
//==========================================================================
// Archimedes' Constant
//---------------------
const Float64 PI = 3.141592653589793;
// Natural Logarithmic Base
//-------------------------
const Float64 E = 2.718281828459045;
// acceleration due to gravity m/s*s
//----------------------------------
const Float64 G = 9.81;
// Euler's Constant
//-----------------
const Float64 GAMMA = 0.577215664901532;
// Golden Ratio
//-------------
const Float64 PHI = 1.618033988749894;
const Float64 PI_OVER_2 = PI / 2.0;
const Float64 PI_OVER_4 = PI / 4.0;
const Float64 TWO_PI = PI * 2.0;
const Float64 ONE_OVER_TWO_PI = 1.0 / TWO_PI;
const Float64 INV_PI = 0.318309886183790;
const Float64 INV_E = 0.367879441171442;
const Float64 INV_PI_OVER_180 = 180.0 / PI;
const Float64 PI_OVER_180 = PI / 180.0;
const Float64 ZERO_CELSIUS_IN_KELVIN = 273.16;
} // namespace N_SST
#endif
@@ -0,0 +1,28 @@
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
#pragma once
#include <cstdint>
using Float64 = double;
// just renamed to use stdint stuff
using SInt8 = int8_t;
using UInt8 = uint8_t;
using SInt16 = int16_t;
using UInt16 = uint16_t;
using SInt32 = int32_t;
using UInt32 = uint32_t;
using SInt64 = int64_t;
using UInt64 = uint64_t;
@@ -0,0 +1,401 @@
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
// manual class headers
#include "Angle3.hpp"
#include <math.h>
using N_Types::Angle3;
using namespace N_Types;
// ---------------------------------------------------------------
// Method getEulerAngle : returns Contents of the Angle3. The
// pitch angle is limited to +/-PI/2. If the parameter is
// true and the pitch angles are more than +/_PI/2, it will
// be imitted to +/PI/2. If the patameter is false the
// heading, pitch and roll will be recalculated as in the
// following formula: if ( P > PI/2) { P = PI - P H = PI + H
// R = PI +R } else if ( P < PI/2) { P = -PI - P H = PI + H R
// = PI +R }
// ---------------------------------------------------------------
Angle3 Angle3::getEulerAngle(bool ab_limitToHalfPI) const
{
Angle3 o_tmp = *this;
if (ab_limitToHalfPI)
{
if (o_tmp.m_P > M_PI_2)
o_tmp.m_P = M_PI_2;
else if (o_tmp.m_P < -M_PI_2)
o_tmp.m_P = -M_PI_2;
}
else
{
if (o_tmp.m_P > M_PI_2)
{
o_tmp.m_P = M_PI - o_tmp.m_P;
o_tmp.m_R = M_PI + o_tmp.m_R;
o_tmp.m_H = M_PI + o_tmp.m_H;
}
else if (o_tmp.m_P < -M_PI_2)
{
o_tmp.m_P = -M_PI - o_tmp.m_P;
o_tmp.m_R = M_PI + o_tmp.m_R;
o_tmp.m_H = M_PI + o_tmp.m_H;
}
}
return o_tmp;
}
// ---------------------------------------------------------------
// This method returns the resultant angle between two Euler
// angles. If an articulated part of an abject is rotated in
// ang2 relative to the parent object, -And if a parent object
// itself is rotated to ang1 Then the resultant angle of the
// ariculated part will be: angle3 = ang1.multiply (ang2)
// used formula: C=A*B C: Euler matrix of Resulting angle A:
// Euler matrix of angle of the parent Object. B: Euler
// matrix of angle of the articulated part. Important: The
// Pitch angle should not eceed +/- PI/2
// ---------------------------------------------------------------
Angle3 Angle3::multiply(const Angle3 &ao_angle3) const
{
//begin_operation_{D5B1F944-7C7D-40bc-92C5-B601EF2B4C59}
Angle3 o_returnAngle3;
Angle3 o_ang3 = *this;
o_ang3 = o_ang3.getEulerAngle(); // limit pitch to +/-PI/2
Float64 leftValue[3][3]; // Matrix A (articulated part)
Float64 rightValue[3][3]; // Matrix B (Base Part)
Float64 resultValue[3][3]; // Matrix C (resultant)
// Formula
// C = A * B
leftValue[0][0] = cos(o_ang3.m_H) * cos(o_ang3.m_R) - sin(o_ang3.m_H) * sin(o_ang3.m_P) * sin(o_ang3.m_R);
leftValue[0][1] = -sin(o_ang3.m_H) * cos(o_ang3.m_P);
leftValue[0][2] = cos(o_ang3.m_H) * sin(o_ang3.m_R) + sin(o_ang3.m_H) * sin(o_ang3.m_P) * cos(o_ang3.m_R);
leftValue[1][0] = sin(o_ang3.m_H) * cos(o_ang3.m_R) + cos(o_ang3.m_H) * sin(o_ang3.m_P) * sin(o_ang3.m_R);
leftValue[1][1] = cos(o_ang3.m_H) * cos(o_ang3.m_P);
leftValue[1][2] = sin(o_ang3.m_H) * sin(o_ang3.m_R) - cos(o_ang3.m_H) * sin(o_ang3.m_P) * cos(o_ang3.m_R);
leftValue[2][0] = -cos(o_ang3.m_P) * sin(o_ang3.m_R);
leftValue[2][1] = sin(o_ang3.m_P);
leftValue[2][2] = cos(o_ang3.m_P) * cos(o_ang3.m_R);
o_ang3 = ao_angle3;
o_ang3 = o_ang3.getEulerAngle(); // limit pitch to +/-PI/2
rightValue[0][0] = cos(o_ang3.m_H) * cos(o_ang3.m_R) - sin(o_ang3.m_H) * sin(o_ang3.m_P) * sin(o_ang3.m_R);
rightValue[0][1] = -sin(o_ang3.m_H) * cos(o_ang3.m_P);
rightValue[0][2] = cos(o_ang3.m_H) * sin(o_ang3.m_R) + sin(o_ang3.m_H) * sin(o_ang3.m_P) * cos(o_ang3.m_R);
rightValue[1][0] = sin(o_ang3.m_H) * cos(o_ang3.m_R) + cos(o_ang3.m_H) * sin(o_ang3.m_P) * sin(o_ang3.m_R);
rightValue[1][1] = cos(o_ang3.m_H) * cos(o_ang3.m_P);
rightValue[1][2] = sin(o_ang3.m_H) * sin(o_ang3.m_R) - cos(o_ang3.m_H) * sin(o_ang3.m_P) * cos(o_ang3.m_R);
rightValue[2][0] = -cos(o_ang3.m_P) * sin(o_ang3.m_R);
rightValue[2][1] = sin(o_ang3.m_P);
rightValue[2][2] = cos(o_ang3.m_P) * cos(o_ang3.m_R);
resultValue[0][0] = leftValue[0][0] * rightValue[0][0] + leftValue[0][1] * rightValue[1][0] + leftValue[0][2] * rightValue[2][0];
resultValue[0][1] = leftValue[0][0] * rightValue[0][1] + leftValue[0][1] * rightValue[1][1] + leftValue[0][2] * rightValue[2][1];
resultValue[0][2] = leftValue[0][0] * rightValue[0][2] + leftValue[0][1] * rightValue[1][2] + leftValue[0][2] * rightValue[2][2];
resultValue[1][0] = leftValue[1][0] * rightValue[0][0] + leftValue[1][1] * rightValue[1][0] + leftValue[1][2] * rightValue[2][0];
resultValue[1][1] = leftValue[1][0] * rightValue[0][1] + leftValue[1][1] * rightValue[1][1] + leftValue[1][2] * rightValue[2][1];
resultValue[1][2] = leftValue[1][0] * rightValue[0][2] + leftValue[1][1] * rightValue[1][2] + leftValue[1][2] * rightValue[2][2];
resultValue[2][0] = leftValue[2][0] * rightValue[0][0] + leftValue[2][1] * rightValue[1][0] + leftValue[2][2] * rightValue[2][0];
resultValue[2][1] = leftValue[2][0] * rightValue[0][1] + leftValue[2][1] * rightValue[1][1] + leftValue[2][2] * rightValue[2][1];
resultValue[2][2] = leftValue[2][0] * rightValue[0][2] + leftValue[2][1] * rightValue[1][2] + leftValue[2][2] * rightValue[2][2];
if (resultValue[2][1] < -1.0) // only for safty
resultValue[2][1] = -1.0;
if (resultValue[2][1] > 1.0) // only for safty
resultValue[2][1] = 1.0;
o_returnAngle3.m_R = -atan2(resultValue[2][0], resultValue[2][2]);
o_returnAngle3.m_P = asin(resultValue[2][1]);
o_returnAngle3.m_H = -atan2(resultValue[0][1], resultValue[1][1]);
return o_returnAngle3;
//end_operation_{D5B1F944-7C7D-40bc-92C5-B601EF2B4C59}
}
// ---------------------------------------------------------------
// This method returns the difference angle between two Euler
// angles. Suppose the following case: -an articulated part
// of an abject is rotated in ang2 relative to the parent
// object. -the parent object itself is rotated in ang1 -
// the resultant angle is ang3. If ang1 and ang3 are given
// ang2 can be calculated as follows: angle2 = ang3.
// multiplInvA(angle1). used formula: C = A*B then B =
// A_INV * C A,B,C - Euler matrices. A_Inv - Inverse of A
// Important: The Pitch angle should not eceed +/- PI/2
// ---------------------------------------------------------------
Angle3 Angle3::multiplyInvA(const Angle3 &ao_angle3) const
{
//begin_operation_{D0A8D027-46D5-4adc-A882-88C7E1BB22DC}
Angle3 o_returnAngle3;
Angle3 o_ang3 = ao_angle3;
o_ang3 = o_ang3.getEulerAngle(); // limit pitch to +/-PI/2
Float64 leftValue[3][3]; // Matrix A (articulated part)
Float64 rightValue[3][3]; // Matrix C resultant
Float64 resultValue[3][3]; // Matrix B (Base part)
Float64 ad_X[3][3]; // Matrix A (articulated part) (before inversion)
Float64 d_D = 1.0; // determinent
// Formula
// B = A_Inv * C
ad_X[0][0] = cos(o_ang3.m_H) * cos(o_ang3.m_R) - sin(o_ang3.m_H) * sin(o_ang3.m_P) * sin(o_ang3.m_R);
ad_X[0][1] = -sin(o_ang3.m_H) * cos(o_ang3.m_P);
ad_X[0][2] = cos(o_ang3.m_H) * sin(o_ang3.m_R) + sin(o_ang3.m_H) * sin(o_ang3.m_P) * cos(o_ang3.m_R);
ad_X[1][0] = sin(o_ang3.m_H) * cos(o_ang3.m_R) + cos(o_ang3.m_H) * sin(o_ang3.m_P) * sin(o_ang3.m_R);
ad_X[1][1] = cos(o_ang3.m_H) * cos(o_ang3.m_P);
ad_X[1][2] = sin(o_ang3.m_H) * sin(o_ang3.m_R) - cos(o_ang3.m_H) * sin(o_ang3.m_P) * cos(o_ang3.m_R);
ad_X[2][0] = -cos(o_ang3.m_P) * sin(o_ang3.m_R);
ad_X[2][1] = sin(o_ang3.m_P);
ad_X[2][2] = cos(o_ang3.m_P) * cos(o_ang3.m_R);
d_D =
(
ad_X[0][0] * ad_X[1][1] * ad_X[2][2] +
ad_X[0][1] * ad_X[1][2] * ad_X[2][0] +
ad_X[1][0] * ad_X[2][1] * ad_X[0][2]
)
-
(
ad_X[0][2] * ad_X[1][1] * ad_X[2][0] +
ad_X[1][2] * ad_X[2][1] * ad_X[0][0] +
ad_X[0][1] * ad_X[1][0] * ad_X[2][2]
);
if (d_D == 0.0)
return o_returnAngle3;
leftValue[0][0] = (ad_X[1][1] * ad_X[2][2] - ad_X[1][2] * ad_X[2][1]) / d_D ;
leftValue[0][1] = (ad_X[0][2] * ad_X[2][1] - ad_X[0][1] * ad_X[2][2]) / d_D ;
leftValue[0][2] = (ad_X[0][1] * ad_X[1][2] - ad_X[0][2] * ad_X[1][1]) / d_D ;
leftValue[1][0] = (ad_X[1][2] * ad_X[2][0] - ad_X[1][0] * ad_X[2][2]) / d_D ;
leftValue[1][1] = (ad_X[0][0] * ad_X[2][2] - ad_X[0][2] * ad_X[2][0]) / d_D ;
leftValue[1][2] = (ad_X[0][2] * ad_X[1][0] - ad_X[0][0] * ad_X[1][2]) / d_D ;
leftValue[2][0] = (ad_X[1][0] * ad_X[2][1] - ad_X[1][1] * ad_X[2][0]) / d_D ;
leftValue[2][1] = (ad_X[0][1] * ad_X[2][0] - ad_X[0][0] * ad_X[2][1]) / d_D ;
leftValue[2][2] = (ad_X[0][0] * ad_X[1][1] - ad_X[0][1] * ad_X[1][0]) / d_D ;
o_ang3 = *this;
o_ang3 = o_ang3.getEulerAngle(); // limit pitch to +/-PI/2
rightValue[0][0] = cos(o_ang3.m_H) * cos(o_ang3.m_R) - sin(o_ang3.m_H) * sin(o_ang3.m_P) * sin(o_ang3.m_R);
rightValue[0][1] = -sin(o_ang3.m_H) * cos(o_ang3.m_P);
rightValue[0][2] = cos(o_ang3.m_H) * sin(o_ang3.m_R) + sin(o_ang3.m_H) * sin(o_ang3.m_P) * cos(o_ang3.m_R);
rightValue[1][0] = sin(o_ang3.m_H) * cos(o_ang3.m_R) + cos(o_ang3.m_H) * sin(o_ang3.m_P) * sin(o_ang3.m_R);
rightValue[1][1] = cos(o_ang3.m_H) * cos(o_ang3.m_P);
rightValue[1][2] = sin(o_ang3.m_H) * sin(o_ang3.m_R) - cos(o_ang3.m_H) * sin(o_ang3.m_P) * cos(o_ang3.m_R);
rightValue[2][0] = -cos(o_ang3.m_P) * sin(o_ang3.m_R);
rightValue[2][1] = sin(o_ang3.m_P);
rightValue[2][2] = cos(o_ang3.m_P) * cos(o_ang3.m_R);
resultValue[0][0] = leftValue[0][0] * rightValue[0][0] + leftValue[0][1] * rightValue[1][0] + leftValue[0][2] * rightValue[2][0];
resultValue[0][1] = leftValue[0][0] * rightValue[0][1] + leftValue[0][1] * rightValue[1][1] + leftValue[0][2] * rightValue[2][1];
resultValue[0][2] = leftValue[0][0] * rightValue[0][2] + leftValue[0][1] * rightValue[1][2] + leftValue[0][2] * rightValue[2][2];
resultValue[1][0] = leftValue[1][0] * rightValue[0][0] + leftValue[1][1] * rightValue[1][0] + leftValue[1][2] * rightValue[2][0];
resultValue[1][1] = leftValue[1][0] * rightValue[0][1] + leftValue[1][1] * rightValue[1][1] + leftValue[1][2] * rightValue[2][1];
resultValue[1][2] = leftValue[1][0] * rightValue[0][2] + leftValue[1][1] * rightValue[1][2] + leftValue[1][2] * rightValue[2][2];
resultValue[2][0] = leftValue[2][0] * rightValue[0][0] + leftValue[2][1] * rightValue[1][0] + leftValue[2][2] * rightValue[2][0];
resultValue[2][1] = leftValue[2][0] * rightValue[0][1] + leftValue[2][1] * rightValue[1][1] + leftValue[2][2] * rightValue[2][1];
resultValue[2][2] = leftValue[2][0] * rightValue[0][2] + leftValue[2][1] * rightValue[1][2] + leftValue[2][2] * rightValue[2][2];
if (resultValue[2][1] < -1.0) // only for safty
resultValue[2][1] = -1.0;
if (resultValue[2][1] > 1.0) // only for safty
resultValue[2][1] = 1.0;
o_returnAngle3.m_R = -atan2(resultValue[2][0], resultValue[2][2]);
o_returnAngle3.m_P = asin(resultValue[2][1]);
o_returnAngle3.m_H = -atan2(resultValue[0][1], resultValue[1][1]);
return o_returnAngle3;
//end_operation_{D0A8D027-46D5-4adc-A882-88C7E1BB22DC}
}
// ---------------------------------------------------------------
// This method returns the difference angle between two Euler
// angles. Suppose the following case: -an articulated part
// of an abject has anmangle ang2 relative to the parent
// object -a parent object an angle ang1 -the resultant
// angle is ang3. If ang2 and ang3 are given ang1 will be:
// angle1 = ang3. multiplyInvB(ang2) used formula: C= A*B
// then A = C* B_INV A,B,C - Euler matrices. B_Inv -
// Inverse of B Important: The Pitch angle should not eceed
// +/- PI/2
// ---------------------------------------------------------------
Angle3 Angle3::multiplyInvB(const Angle3 &ao_angle3) const
{
//begin_operation_{EE1AC697-198F-4223-AE9E-F7E6EFC2B452}
Angle3 o_returnAngle3;
Angle3 o_ang3 = ao_angle3;
o_ang3 = o_ang3.getEulerAngle(); // limit pitch to +/-PI/2
Float64 leftValue[3][3]; // Matrix A (articulated part)
Float64 rightValue[3][3]; // Matrix C resultant
Float64 resultValue[3][3]; // Matrix B (Base part)
Float64 ad_X[3][3]; // Matrix A (articulated part) (before inversion)
Float64 d_D = 1.0; // determinent
// Formula
// A = C * B_Inv
ad_X[0][0] = cos(o_ang3.m_H) * cos(o_ang3.m_R) - sin(o_ang3.m_H) * sin(o_ang3.m_P) * sin(o_ang3.m_R);
ad_X[0][1] = -sin(o_ang3.m_H) * cos(o_ang3.m_P);
ad_X[0][2] = cos(o_ang3.m_H) * sin(o_ang3.m_R) + sin(o_ang3.m_H) * sin(o_ang3.m_P) * cos(o_ang3.m_R);
ad_X[1][0] = sin(o_ang3.m_H) * cos(o_ang3.m_R) + cos(o_ang3.m_H) * sin(o_ang3.m_P) * sin(o_ang3.m_R);
ad_X[1][1] = cos(o_ang3.m_H) * cos(o_ang3.m_P);
ad_X[1][2] = sin(o_ang3.m_H) * sin(o_ang3.m_R) - cos(o_ang3.m_H) * sin(o_ang3.m_P) * cos(o_ang3.m_R);
ad_X[2][0] = -cos(o_ang3.m_P) * sin(o_ang3.m_R);
ad_X[2][1] = sin(o_ang3.m_P);
ad_X[2][2] = cos(o_ang3.m_P) * cos(o_ang3.m_R);
d_D =
(
ad_X[0][0] * ad_X[1][1] * ad_X[2][2] +
ad_X[0][1] * ad_X[1][2] * ad_X[2][0] +
ad_X[1][0] * ad_X[2][1] * ad_X[0][2]
)
-
(
ad_X[0][2] * ad_X[1][1] * ad_X[2][0] +
ad_X[1][2] * ad_X[2][1] * ad_X[0][0] +
ad_X[0][1] * ad_X[1][0] * ad_X[2][2]
);
if (d_D == 0.0)
return o_returnAngle3;
rightValue[0][0] = (ad_X[1][1] * ad_X[2][2] - ad_X[1][2] * ad_X[2][1]) / d_D ;
rightValue[0][1] = (ad_X[0][2] * ad_X[2][1] - ad_X[0][1] * ad_X[2][2]) / d_D ;
rightValue[0][2] = (ad_X[0][1] * ad_X[1][2] - ad_X[0][2] * ad_X[1][1]) / d_D ;
rightValue[1][0] = (ad_X[1][2] * ad_X[2][0] - ad_X[1][0] * ad_X[2][2]) / d_D ;
rightValue[1][1] = (ad_X[0][0] * ad_X[2][2] - ad_X[0][2] * ad_X[2][0]) / d_D ;
rightValue[1][2] = (ad_X[0][2] * ad_X[1][0] - ad_X[0][0] * ad_X[1][2]) / d_D ;
rightValue[2][0] = (ad_X[1][0] * ad_X[2][1] - ad_X[1][1] * ad_X[2][0]) / d_D ;
rightValue[2][1] = (ad_X[0][1] * ad_X[2][0] - ad_X[0][0] * ad_X[2][1]) / d_D ;
rightValue[2][2] = (ad_X[0][0] * ad_X[1][1] - ad_X[0][1] * ad_X[1][0]) / d_D ;
o_ang3 = *this;
o_ang3 = o_ang3.getEulerAngle(); // limit pitch to +/-PI/2
leftValue[0][0] = cos(o_ang3.m_H) * cos(o_ang3.m_R) - sin(o_ang3.m_H) * sin(o_ang3.m_P) * sin(o_ang3.m_R);
leftValue[0][1] = -sin(o_ang3.m_H) * cos(o_ang3.m_P);
leftValue[0][2] = cos(o_ang3.m_H) * sin(o_ang3.m_R) + sin(o_ang3.m_H) * sin(o_ang3.m_P) * cos(o_ang3.m_R);
leftValue[1][0] = sin(o_ang3.m_H) * cos(o_ang3.m_R) + cos(o_ang3.m_H) * sin(o_ang3.m_P) * sin(o_ang3.m_R);
leftValue[1][1] = cos(o_ang3.m_H) * cos(o_ang3.m_P);
leftValue[1][2] = sin(o_ang3.m_H) * sin(o_ang3.m_R) - cos(o_ang3.m_H) * sin(o_ang3.m_P) * cos(o_ang3.m_R);
leftValue[2][0] = -cos(o_ang3.m_P) * sin(o_ang3.m_R);
leftValue[2][1] = sin(o_ang3.m_P);
leftValue[2][2] = cos(o_ang3.m_P) * cos(o_ang3.m_R);
resultValue[0][0] = leftValue[0][0] * rightValue[0][0] + leftValue[0][1] * rightValue[1][0] + leftValue[0][2] * rightValue[2][0];
resultValue[0][1] = leftValue[0][0] * rightValue[0][1] + leftValue[0][1] * rightValue[1][1] + leftValue[0][2] * rightValue[2][1];
resultValue[0][2] = leftValue[0][0] * rightValue[0][2] + leftValue[0][1] * rightValue[1][2] + leftValue[0][2] * rightValue[2][2];
resultValue[1][0] = leftValue[1][0] * rightValue[0][0] + leftValue[1][1] * rightValue[1][0] + leftValue[1][2] * rightValue[2][0];
resultValue[1][1] = leftValue[1][0] * rightValue[0][1] + leftValue[1][1] * rightValue[1][1] + leftValue[1][2] * rightValue[2][1];
resultValue[1][2] = leftValue[1][0] * rightValue[0][2] + leftValue[1][1] * rightValue[1][2] + leftValue[1][2] * rightValue[2][2];
resultValue[2][0] = leftValue[2][0] * rightValue[0][0] + leftValue[2][1] * rightValue[1][0] + leftValue[2][2] * rightValue[2][0];
resultValue[2][1] = leftValue[2][0] * rightValue[0][1] + leftValue[2][1] * rightValue[1][1] + leftValue[2][2] * rightValue[2][1];
resultValue[2][2] = leftValue[2][0] * rightValue[0][2] + leftValue[2][1] * rightValue[1][2] + leftValue[2][2] * rightValue[2][2];
if (resultValue[2][1] < -1.0) // only for safty
resultValue[2][1] = -1.0;
if (resultValue[2][1] > 1.0) // only for safty
resultValue[2][1] = 1.0;
o_returnAngle3.m_R = -atan2(resultValue[2][0], resultValue[2][2]);
o_returnAngle3.m_P = asin(resultValue[2][1]);
o_returnAngle3.m_H = -atan2(resultValue[0][1], resultValue[1][1]);
return o_returnAngle3;
}
// ---------------------------------------------------------------
// Minus operator
// ---------------------------------------------------------------
Angle3 Angle3::operator -(const Angle3 &ao_angle3) const
{
Angle3 o_angle3 = *this;;
o_angle3.m_H -= ao_angle3.m_H;
o_angle3.m_P -= ao_angle3.m_P;
o_angle3.m_R -= ao_angle3.m_R;
return o_angle3;
}
// ---------------------------------------------------------------
// Negation operator
// ---------------------------------------------------------------
Angle3 Angle3::operator -() const
{
Angle3 o_angle3;
o_angle3.m_H = -m_H;
o_angle3.m_P = -m_P;
o_angle3.m_R = -m_R;
return o_angle3;
}
// ---------------------------------------------------------------
// Plus operator
// ---------------------------------------------------------------
Angle3 Angle3::operator +(const Angle3 &ao_angle3) const
{
Angle3 o_angle3 = *this;
o_angle3.m_H += ao_angle3.m_H;
o_angle3.m_P += ao_angle3.m_P;
o_angle3.m_R += ao_angle3.m_R;
return o_angle3;
}
// ---------------------------------------------------------------
// Operator==: Compare all parameters of the argument with the
// own parameter and returns true if all parameters are equal.
// ---------------------------------------------------------------
bool Angle3::operator ==(const Angle3 &ao_angle3) const
{
return ((m_H == ao_angle3.m_H) &&
(m_P == ao_angle3.m_P) &&
(m_R == ao_angle3.m_R));
}
// ---------------------------------------------------------------
// Set pitch and roll parameters.
// ---------------------------------------------------------------
void Angle3::set(const Float64 &ad_h, const Float64 &ad_p, const Float64 &ad_r)
{
m_H = ad_h;
m_P = ad_p;
m_R = ad_r;
}
// ---------------------------------------------------------------
// Function setNull : Sets all values of the angle to 0.0
// ---------------------------------------------------------------
const Angle3 &Angle3::setNull()
{
m_H = 0.0;
m_P = 0.0;
m_R = 0.0;
return *this;
}
@@ -0,0 +1,206 @@
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
#pragma once
#include <GBL_Global/Types.hpp>
#include "Radian64.hpp"
namespace N_Types
{
/**
* Diese Klasse repräsentiert eine 3D Winkel
*
* @author Daniel.Schmid
* @version 1.0
* @created 08-Jul-2009 08:28:18
*/
class Angle3 final
{
public:
/**
* Heading
*/
Radian64 m_H;
/**
* Pitch
*/
Radian64 m_P;
/**
* Roll
*/
Radian64 m_R;
Angle3() = default;
/**
* The constuctor initialize all the angles as parameter. The first parameter is
* heading, the second is pitch and the third is roll.
*
* @param ad_h Heading angle
* @param ad_p Pitch angle
* @param ad_r Roll angle
*/
Angle3(const Radian64 &ad_h, const Radian64 &ad_p, const Radian64 &ad_r)
: m_H(ad_h)
, m_P(ad_p)
, m_R(ad_r)
{}
/**
* Method get: get heading, pitch and roll parameters.
*
* @param ad_h Heading
* @param ad_p Pitch
* @param ad_r Roll
*/
void get(Float64 &ad_h, Float64 &ad_p, Float64 &ad_r) const
{
ad_h = m_H;
ad_p = m_P;
ad_r = m_R;
}
/**
* Method getEulerAngle : returns Contents of the Angle3. The pitch angle is
* limited to +/-PI/2. If the parameter is true and the pitch angles are more
* than +/_PI/2, it will be imitted to +/PI/2. If the patameter is false the
* heading, pitch and roll will be recalculated as in the following formula: if (
* P > PI/2) { P = PI - P H = PI + H R = PI +R } else if ( P < PI/2) { P = -PI -
* P H = PI + H R = PI +R }
*
* @param ab_limitToHalfPI
*/
Angle3 getEulerAngle(bool ab_limitToHalfPI = true) const;
const Radian64 &getH() const { return m_H; }
const Radian64 &getP() const { return m_P; }
const Radian64 &getR() const { return m_R; }
void setH(const Radian64 &val) { m_H = val; }
void setP(const Radian64 &val) { m_P = val; }
void setR(const Radian64 &val) { m_R = val; }
/**
* This method returns the resultant angle between two Euler angles. If an
* articulated part of an abject is rotated in ang2 relative to the parent object,
* -And if a parent object itself is rotated to ang1 Then the resultant angle of
* the ariculated part will be: angle3 = ang1.multiply (ang2) used formula:
* C=A*B C: Euler matrix of Resulting angle A: Euler matrix of angle of the
* parent Object. B: Euler matrix of angle of the articulated part. Important:
* The Pitch angle should not eceed +/- PI/2
*
* @param ao_angle3
*/
Angle3 multiply(const Angle3 &ao_angle3) const;
/**
* This method returns the difference angle between two Euler angles. Suppose the
* following case: -an articulated part of an abject is rotated in ang2 relative
* to the parent object. -the parent object itself is rotated in ang1 -the
* resultant angle is ang3. If ang1 and ang3 are given ang2 can be calculated as
* follows: angle2 = ang3.multiplInvA(angle1). used formula: C = A*B then B =
* A_INV * C A,B,C - Euler matrices. A_Inv - Inverse of A Important: The Pitch
* angle should not eceed +/- PI/2
*
* @param ao_angle3
*/
Angle3 multiplyInvA(const Angle3 &ao_angle3) const;
/**
* This method returns the difference angle between two Euler angles. Suppose the
* following case: -an articulated part of an abject has anmangle ang2 relative
* to the parent object -a parent object an angle ang1 -the resultant angle is
* ang3. If ang2 and ang3 are given ang1 will be: angle1 = ang3.
* multiplyInvB(ang2) used formula: C= A*B then A = C* B_INV A,B,C - Euler
* matrices. B_Inv - Inverse of B Important: The Pitch angle should not eceed +/-
* PI/2
*
* @param ao_angle3
*/
Angle3 multiplyInvB(const Angle3 &ao_angle3) const;
/**
* Minus operator
*
* @param ao_angle3
*/
Angle3 operator -(const Angle3 &ao_angle3) const;
/**
* Negation operator
*/
Angle3 operator -() const;
/**
* Operator!=: Compare all parameters of the argument with the own parameter and
* returns true if any of the parameters are not equal
*
* @param ao_angle3
*/
bool operator !=(const Angle3 &ao_angle3) const { return !operator ==(ao_angle3); }
/**
* Plus operator
*
* @param ao_angle3
*/
Angle3 operator +(const Angle3 &ao_angle3) const;
/**
* Stream operator<<: The angle values may be written to the output stream using
* this operator. format: h= xxxx; p=xxxxx; r=xxxx
*
* @param ao_os
* @param ao_angle3
*/
friend std::ostream &operator <<(std::ostream &ao_os, const Angle3 &ao_angle3)
{
ao_os << " h=" << ao_angle3.m_H
<< "; p=" << ao_angle3.m_P
<< "; r=" << ao_angle3.m_R << ";";
return ao_os;
}
friend std::wostream &operator <<(std::wostream &ao_os, const Angle3 &ao_angle3)
{
ao_os << " h=" << ao_angle3.m_H
<< "; p=" << ao_angle3.m_P
<< "; r=" << ao_angle3.m_R << ";";
return ao_os;
}
/**
* Operator==: Compare all parameters of the argument with the own parameter and
* returns true if all parameters are equal.
*
* @param ao_angle3
*/
bool operator ==(const Angle3 &ao_angle3) const;
/**
* Set pitch and roll parameters.
*
* @param ad_h Heading
* @param ad_p Pitch
* @param ad_r Roll
*/
void set(const Float64 &ad_h, const Float64 &ad_p, const Float64 &ad_r);
/**
* Function setNull : Sets all values of the angle to 0.0
*/
const Angle3 &setNull();
};
}
@@ -0,0 +1,23 @@
SET(my_SRCS
Angle3.cpp
Angle3.hpp
Coord3.hpp
GeoCoord.cpp
GeoCoord.hpp
Polar3.hpp
Radian64.hpp
Radian.hpp
Vec3.cpp
Vec3.hpp
)
NGL_ADD_LIBRARY(AAR SV GBL_Types STATIC ${my_SRCS})
NGL_TARGET_LINK_LIBRARIES(GBL_Types
PUBLIC
GBL_Global
LtsCoordTrans
)
NGL_TARGET_INCLUDE_DIRECTORIES(GBL_Types
PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/../
)
@@ -0,0 +1,27 @@
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
#if !defined(COORD3_HPP_0C4EE71B_E082_4769_AEC3_E07770B68C15)
#define COORD3_HPP_0C4EE71B_E082_4769_AEC3_E07770B68C15
#include "Vec3.hpp"
/**
* @namespace N_Types contains some basic types for 2D and 3D calculations
*/
namespace N_Types
{
using Coord3 = Vec3;
}
#endif // !defined(COORD3_HPP_0C4EE71B_E082_4769_AEC3_E07770B68C15)
@@ -0,0 +1,99 @@
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
#include "GeoCoord.hpp"
#include <LtsCoordTrans/lts_coord_trans.h>
#include <QPointF>
namespace N_Math
{
GeoCoord::GeoCoord()
: m_LlLat(0.0)
, m_LlLong(0.0)
, m_height(0.0)
, m_coordValid(false)
{}
void GeoCoord::setLlPositionDegree(Float64 ad_lat, Float64 ad_long, Float64 ad_height)
{
m_LlLat = ad_lat;
m_LlLong = ad_long;
m_height = ad_height;
convertLlToUtm();
m_coordValid = true;
}
void GeoCoord::setTotalUtmPosition(Float64 ad_east, Float64 ad_north, Float64 ad_height, SInt32 ai_zone, bool ai_northP)
{
m_utmCoord.x = ad_east;
m_utmCoord.y = ad_north;
m_utmCoord.zone = ai_zone;
m_utmCoord.northp = ai_northP;
m_height = ad_height;
convertUtmToLl();
m_coordValid = true;
}
N_Types::Radian64 GeoCoord::getAzimuth(const GeoCoord &ao_Coordinate) const
{
if (!m_coordValid || !ao_Coordinate.m_coordValid)
return N_Types::Radian64(0.0);
double d_b = LtsCoordTrans::deg2rad() * (90.0 - ao_Coordinate.m_LlLat);
double d_c = LtsCoordTrans::deg2rad() * (90.0 - m_LlLat);
double d_A = ao_Coordinate.m_LlLong - m_LlLong;
while (d_A > 180.0)
d_A -= 360.0;
while (d_A <= -180.0)
d_A += 360.0;
d_A = LtsCoordTrans::deg2rad() * d_A;
const double d_CosA = cos(d_b) * cos(d_c) + sin(d_b) * sin(d_c) * cos(d_A);
double d_a = acos(d_CosA);
if (fabs(d_a) <= std::numeric_limits<decltype(d_a)>::epsilon())
return N_Types::Radian64(0.0); // Azimuth in radians
const double d_SinB = sin(d_b) * sin(d_A) / sin(d_a);
Float64 d_B = asin(d_SinB);
if (d_A < 0)
d_B = -d_B;
if (ao_Coordinate.m_LlLat < m_LlLat)
d_B = M_PI - d_B;
return N_Types::Radian64(d_B); // Azimuth in radians
}
void GeoCoord::convertLlToUtm(SInt32 ai_overrideZone)
{
m_utmCoord = LtsCoordTrans::UtmCoordinate::fromGeographic(m_LlLong * LtsCoordTrans::deg2rad(),
m_LlLat * LtsCoordTrans::deg2rad(),
ai_overrideZone);
}
void GeoCoord::convertUtmToLl()
{
const QPointF lonLat = m_utmCoord.geographic();
m_LlLat = lonLat.y() * LtsCoordTrans::rad2deg();
m_LlLong = lonLat.x() * LtsCoordTrans::rad2deg();
}
} // namespace N_Math
@@ -0,0 +1,118 @@
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
#pragma once
#include <GBL_Global/Types.hpp>
// from stereotyped includes
#include <GBL_Types/Radian64.hpp>
#include <LtsCoordTrans/lts_coord_trans.h>
namespace N_Math
{
/**
* This class is defined for converting different Geo coordinate systems. This
* defines the following coordinate systems:
* 1. Geo coordinates (Latitude/Longitude/Altitude).
* 2. UTM coordinates (UTMEast, UTMNorth, UTMHeight, UTMZone)
*/
class GeoCoord
{
public:
/**
* ## Constructors (generated)
*/
GeoCoord();
/**
* This method set the Geo Coordinates in degree. All other coordinates will be
* converted automatically.
*
* @param ad_lat Latitude in degrees
* @param ad_long Longitude in degrees
* @param ad_height Height in meter
*/
void setLlPositionDegree(Float64 ad_lat, Float64 ad_long, Float64 ad_height);
/**
* This method set the UTM Coordinates completely. All other coordinates will be
* converted automatically.
*
* @param ad_east east value in meter
* @param ad_north north value in meter
* @param ad_height height in meter
* @param ai_zone zone number
* @param ai_northp northern hemisphere
*/
void setTotalUtmPosition(Float64 ad_east, Float64 ad_north, Float64 ad_height, SInt32 ai_zone, bool ai_northP);
/**
* This method returns the Azimuth of the Geo coordinates in radians.
*
* @param ao_Coordinate
*/
N_Types::Radian64 getAzimuth(const GeoCoord &ao_Coordinate) const;
double utmEasting() const { return m_utmCoord.x; }
double utmNorthing() const { return m_utmCoord.y; }
int utmZone() const { return m_utmCoord.zone; }
bool northP() const { return m_utmCoord.northp; }
double latDeg() const { return m_LlLat; }
double lonDeg() const { return m_LlLong; }
double height() const { return m_height; }
private:
/**
* Converts lat/long to UTM coordinatess. Equations from USGS Bulletin 1532. East
* longitudes are positive, West longitudes are negative. North latitudes are
* positive, South latitudes are negative. Latitude and longitudes are in decimal
* degrees.
*
* @param ai_overrideZone
*/
void convertLlToUtm(SInt32 ai_overrideZone = -1);
/**
* Converts UTM coords to lat/long. Equations from USGS Bulletin 1532. East
* ongitudes are positive, West longitudes are negative. North latitudes are
* positive, South latitudes are negative. Lat and Long are in decimal degrees.
*/
void convertUtmToLl();
private:
/**
* Latitude of Geo Coordinates (Degrees)
*/
Float64 m_LlLat;
/**
* Longitude of Geo Coordinates (Degrees)
*/
Float64 m_LlLong;
/**
* Height of Geo Coordinates (Degrees)
*/
Float64 m_height;
// the utm coordinate
LtsCoordTrans::UtmCoordinate m_utmCoord;
/**
* This Flag is to check the validity of the coordinates. If the value is equal to
* 1 the coordinate is not valid otherwise valid.
*/
bool m_coordValid;
};
}
@@ -0,0 +1,131 @@
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
#pragma once
#include <GBL_Global/Types.hpp>
#include "Radian64.hpp"
namespace N_Types
{
/**
* This class represents a 3D polar coordinates
*
* @author Daniel.Schmid
* @version 1.0
* @created 08-Jul-2009 08:28:57
*/
class Polar3 final
{
public:
/**
* Azimuth in radian
*/
Radian64 m_Azimuth = 0.0;
/**
* Elevation in radian
*/
Radian64 m_Elevation = 0.0;
/**
* Radius in meters
*/
Float64 m_Radius = 0.0;
/**
* ## Constructors (generated)
*/
Polar3() = default;
/**
* Constructor with radius, azimuth and elevation as parameters.
*
* @param ad_radius Radius in meters
* @param ad_azimuth Azimuth in radian
* @param ad_elevation Elevation in radian
*/
Polar3(Float64 ad_radius, Radian64 ad_azimuth, Radian64 ad_elevation)
: m_Azimuth(ad_azimuth)
, m_Elevation(ad_elevation)
, m_Radius(ad_radius)
{}
/**
* Azimuth of the polar coordinate in meters
*/
Radian64 getAzimuth() const
{
return m_Azimuth;
}
/**
*
* @param a_azimuth
*/
void setAzimuth(Radian64 a_azimuth)
{
m_Azimuth = a_azimuth;
}
/**
* Elevation of the polar coordinate in meters
*/
Radian64 getElevation() const
{
return m_Elevation;
}
/**
*
* @param a_elevation
*/
void setElevation(Radian64 a_elevation)
{
m_Elevation = a_elevation;
}
/**
* Radius of the polar coordinate in meters.
*/
Float64 getRadius() const
{
return m_Radius;
}
/**
*
* @param a_radius
*/
void setRadius(Float64 a_radius)
{
m_Radius = a_radius;
}
/**
* Stream operator<<: Writes attibute values to the output stream in the
* following format: radius=???; y=???; azimuth=???; elevation=???;
*
* @param ao_os
* @param ao_polar3
*/
friend std::ostream &operator <<(std::ostream &ao_os, const Polar3 &ao_polar3)
{
ao_os << " radius=" << ao_polar3.m_Radius << "; azimuth=" << ao_polar3.m_Azimuth << "; elevation=" << ao_polar3.m_Elevation << ";";
return ao_os;
}
};
}
@@ -0,0 +1,249 @@
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
#pragma once
#include <GBL_Global/Constants.hpp>
#include <GBL_Global/Types.hpp>
#include <cmath>
#include <ostream>
namespace N_Types
{
/**
* This class is the template for all Radian derivates
*
* @author Daniel.Schmid
* @version 1.0
* @created 08-Jul-2009 13:28:28
*/
template<class T>
class Radian
{
public:
Radian() = default;
Radian(T ao_radian)
: m_MyRadian(convert(ao_radian))
{}
/**
* Returns its value in the template type T in degrees range +/-180 degrees
*/
T getDegree() const
{
return (m_MyRadian * N_SST::INV_PI_OVER_180);
}
/**
* Returns its value in the template type T
*/
T getItsValue() const
{
return m_MyRadian;
}
/**
* Returns its value in degree in range 0 to 360.
*/
T getZeroTo360() const
{
if (m_MyRadian < 0.0)
return ((m_MyRadian + N_SST::TWO_PI) * (N_SST::INV_PI_OVER_180));
return (m_MyRadian * N_SST::INV_PI_OVER_180);
}
/**
* Returns its value in degree in range 0 to Two PI
*/
T getZeroToTwoPi() const
{
if (m_MyRadian < 0.0)
return (m_MyRadian + N_SST::TWO_PI);
return m_MyRadian;
}
/**
* Operator -=
*
* @param ao_radian
*/
const Radian<T> &operator -=(const Radian<T> &ao_radian)
{
m_MyRadian = convert(m_MyRadian - ao_radian.m_MyRadian);
return *this;
}
/**
* Inequality operator. Returns true if the values of the argument is not equal
* to the attribute value.
*
* @param ao_radian
*/
bool operator !=(const Radian<T> &ao_radian) const
{
return (m_MyRadian != ao_radian.m_MyRadian);
}
/**
* Inequality operator. Returns true if the values of the argument is not equal
* to the attribute value.
*
* @param ad_value
*/
bool operator !=(T ad_value) const
{
return (m_MyRadian != ad_value);
}
/**
* Operator *=
*
* @param ao_radian
*/
const Radian<T> &operator *=(const Radian<T> &ao_radian)
{
m_MyRadian = convert(m_MyRadian * ao_radian.m_MyRadian);
return *this;
}
/**
* Operator /=
*
* @param ao_radian
*/
const Radian<T> &operator /=(const Radian<T> &ao_radian)
{
m_MyRadian = convert(m_MyRadian / ao_radian.m_MyRadian);
return *this;
}
/**
* Operator +=
*
* @param ao_radian
*/
const Radian<T> &operator +=(const Radian<T> &ao_radian)
{
m_MyRadian = convert(m_MyRadian + ao_radian.m_MyRadian);
return *this;
}
/**
* Stream operator << . This enables the user to write the radian into output
* staream.
*
* @param apo_os
* @param ao_radian
*/
friend std::ostream &operator <<(std::ostream &apo_os, const Radian<T> &ao_radian)
{
apo_os << ao_radian.m_MyRadian;
return apo_os;
}
/**
* Equality operator. Returns true if the values of the argument is equal to the
* attribute value.
*
* @param ao_radian
*/
bool operator ==(const Radian<T> &ao_radian) const
{
return (m_MyRadian == ao_radian.m_MyRadian);
}
/**
* Equality operator. Returns true if the values of the argument is equal to the
* attribute value.
*
* @param ad_value
*/
bool operator ==(T ad_value) const
{
return (m_MyRadian == ad_value);
}
/**
* Stream operator >>. This enables the user to read the radian from the iutput
* stream.
*
* @param apo_is
* @param ao_radian
*/
friend std::istream &operator >>(std::istream &apo_is, Radian<T> &ao_radian)
{
// M_TRACE_METHOD;
T Lg_Tmp ;
apo_is >> Lg_Tmp;
Lg_Tmp = fmod(Lg_Tmp, N_SST::TWO_PI);
if (Lg_Tmp > M_PI)
Lg_Tmp -= N_SST::TWO_PI;
if (Lg_Tmp <= -M_PI)
Lg_Tmp += N_SST::TWO_PI;
ao_radian.m_MyRadian = Lg_Tmp;
return apo_is;
}
/**
* Type conversion operator.
*/
operator T() const
{
return m_MyRadian;
}
/**
* Set its value in degree. The value will be converted internally and stored in
* the attribute as radian.
*
* @param ao_degree
*/
void setDegree(T ao_degree)
{
m_MyRadian = convert(ao_degree * N_SST::PI_OVER_180);
}
private:
/**
* Value of the template class.
*/
T m_MyRadian = T();
/**
* This function converts float values in radian.
*
* @param ao_radian
*/
static T convert(const T ao_radian)
{
T Lg_Tmp = ao_radian;
Lg_Tmp = fmod(Lg_Tmp, N_SST::TWO_PI); // ###Sr add (double)
if (Lg_Tmp > M_PI)
Lg_Tmp -= N_SST::TWO_PI;
if (Lg_Tmp <= -M_PI)
Lg_Tmp += N_SST::TWO_PI;
return (Lg_Tmp);
}
};
}
@@ -0,0 +1,30 @@
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
#pragma once
#include <GBL_Global/Types.hpp>
#include "Radian.hpp"
namespace N_Types
{
/**
* This is a radian of 64 bit resolution
*
* @author Daniel.Schmid
* @version 1.0
* @created 08-Jul-2009 14:45:20
*/
using Radian64 = Radian<Float64>;
}
@@ -0,0 +1,362 @@
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
// manual class headers
#include "Vec3.hpp"
#include <iostream>
using N_Types::Vec3;
using namespace N_Types;
// ---------------------------------------------------------------
// This method returns the 3D polar coordinates of the given
// vector.
// ---------------------------------------------------------------
Polar3 Vec3::getPolar3() const
{
Polar3 o_polar3;
if ((m_X == 00) && (m_Y == 0.0)) // if x and y are zero
{
if (m_Z == 0.0) // if z is zero it is a null Coordtor
{
o_polar3.m_Radius = 0.0;
o_polar3.m_Azimuth = 0.0;
o_polar3.m_Elevation = 0.0;
}
else // it is Coordtor along z axis
{
o_polar3.m_Radius = fabs(m_Z);
o_polar3.m_Azimuth = 0.0;
o_polar3.m_Elevation = atan2(m_Z, 0.0);
}
}
else // if x and y not zero
{
o_polar3.m_Azimuth = atan2(-m_X, m_Y); // negation of x is for world coord system
const auto d_temp = pow(m_X, Float64(2)) + pow(m_Y, Float64(2)); // x**2 + y**2
o_polar3.m_Elevation = atan2(m_Z, sqrt(d_temp)); // z / sqrt(x**2 + y**2)
o_polar3.m_Radius = sqrt(d_temp + pow(m_Z, Float64(2))); // sqrt(x**2 + y**2 + z**2)
}
return o_polar3;
}
// ---------------------------------------------------------------
// This method set 3D polar coordinates to the vector.
// ---------------------------------------------------------------
void Vec3::setPolar3(const Polar3 &ao_polar3)
{
Polar3 o_polar3(ao_polar3);
if (ao_polar3.m_Radius == 0.0) // if the magnitude is zero it is a null Vector
{
m_X = 0.0;
m_Y = 0.0;
m_Z = 0.0;
}
else
{
const auto d_temp = o_polar3.m_Radius * cos(o_polar3.m_Elevation); // r * cos(a)
m_Z = o_polar3.m_Radius * sin(o_polar3.m_Elevation); // r * sin(a)
m_Y = d_temp * cos(o_polar3.m_Azimuth); // y component
m_X = -d_temp * sin(o_polar3.m_Azimuth); // x component. negation because of wcs
}
}
// ---------------------------------------------------------------
// This method returns the cross product of the vectors.
// ---------------------------------------------------------------
Vec3 Vec3::cross(const Vec3 &ao_vec3) const
{
Vec3 o_vec3;
o_vec3.m_X = ((m_Y * ao_vec3.m_Z) - (m_Z * ao_vec3.m_Y));
o_vec3.m_Y = ((m_Z * ao_vec3.m_X) - (m_X * ao_vec3.m_Z));
o_vec3.m_Z = ((m_X * ao_vec3.m_Y) - (m_Y * ao_vec3.m_X));
return o_vec3;
}
// ---------------------------------------------------------------
// This method returns the direction of the difference vector
// ---------------------------------------------------------------
Vec3 Vec3::direction(const Vec3 &ao_vec3)
{
Vec3 o_vec3 = ao_vec3;
Float64 d_magnitude = o_vec3.magnitude();
if (d_magnitude != 0.0)
{
o_vec3.m_X /= d_magnitude;
o_vec3.m_Y /= d_magnitude;
o_vec3.m_Z /= d_magnitude;
}
return o_vec3;
}
// ---------------------------------------------------------------
// This method returns the distance between two coordinates.
// ---------------------------------------------------------------
Float64 Vec3::length(const Vec3 &ao_coord3) const
{
Vec3 o_coord3(*this);
o_coord3 -= ao_coord3;
return o_coord3.magnitude();
}
// ---------------------------------------------------------------
// This method returns the magnitude of the vector.
// ---------------------------------------------------------------
Float64 Vec3::magnitude() const
{
return sqrt(pow(m_X, Float64(2)) + pow(m_Y, Float64(2)) + pow(m_Z, Float64(2))); // sqrt(x**2 + y**2 + z**2)
}
// ---------------------------------------------------------------
// Operator "-". Negation operator. Each attribute is negated.
// ---------------------------------------------------------------
Vec3 Vec3::operator -() const
{
Vec3 po_tmp;
po_tmp.m_X = -m_X;
po_tmp.m_Y = -m_Y;
po_tmp.m_Z = -m_Z;
return po_tmp;
}
// ---------------------------------------------------------------
// Operator "-". Subtraction of 2 vectors. The attributes of
// the calling object remain unchanged.
// ---------------------------------------------------------------
Vec3 Vec3::operator -(const Vec3 &ao_vec3) const
{
Vec3 pr_Vec3(*this);
pr_Vec3 -= ao_vec3;
return pr_Vec3;
}
// ---------------------------------------------------------------
// Operator "*". The attributes are multiplied by the
// argument and the product is returned. The attributes of
// the calling object remain unchanged.
// ---------------------------------------------------------------
Vec3 Vec3::operator *(Float64 ad_scale) const
{
Vec3 o_vec3(*this);
o_vec3.m_X *= ad_scale;
o_vec3.m_Y *= ad_scale;
o_vec3.m_Z *= ad_scale;
return o_vec3;
}
// ---------------------------------------------------------------
// Operator "*". Dot product (scalar product) of 2 vectors A.
// B = |A|*|B|*cos (alpha), where alpha is the angle between
// the vectors.
// ---------------------------------------------------------------
Float64 Vec3::operator *(const Vec3 &ao_vec3) const
{
return ((m_X * ao_vec3.m_X) + (m_Y * ao_vec3.m_Y) + (m_Z * ao_vec3.m_Z));
}
// ---------------------------------------------------------------
// Operator "*=". The attributes are multiplied by the
// argument and the product is returned. The attributes of
// the calling object are set to the changed value.
// ---------------------------------------------------------------
Vec3 &Vec3::operator *=(Float64 ad_scale)
{
m_X *= ad_scale;
m_Y *= ad_scale;
m_Z *= ad_scale;
return *this;
}
// ---------------------------------------------------------------
// Operator "/". The attributes are divided by the argument
// and the result is returned. The attributes of the calling
// object remain unchanged.
// ---------------------------------------------------------------
Vec3 Vec3::operator /(Float64 ad_scale) const
{
Vec3 o_vec3(*this);
o_vec3.m_X /= ad_scale;
o_vec3.m_Y /= ad_scale;
o_vec3.m_Z /= ad_scale;
return o_vec3;
}
// ---------------------------------------------------------------
// Operator "/=". The attributes are divided by the argument
// and the product is returned. The attributes of the calling
// object are set to the changed value.
// ---------------------------------------------------------------
Vec3 &Vec3::operator /=(Float64 ad_scale)
{
m_X /= ad_scale;
m_Y /= ad_scale;
m_Z /= ad_scale;
return *this;
}
// ---------------------------------------------------------------
// Operator "+". Addition of 2 vectors. The attributes of the
// calling object remain unchanged.
// ---------------------------------------------------------------
Vec3 Vec3::operator +(const Vec3 &ao_vec3) const
{
Vec3 pr_Vec3(*this);
pr_Vec3 += ao_vec3;
return pr_Vec3;
}
// ---------------------------------------------------------------
// Operator "+=". Addition of 2 vectors.
// ---------------------------------------------------------------
Vec3 &Vec3::operator +=(const Vec3 &ao_vec3)
{
m_X += ao_vec3.m_X;
m_Y += ao_vec3.m_Y;
m_Z += ao_vec3.m_Z;
return *this;
}
// ---------------------------------------------------------------
// Operator "-=". Subtraction of 2 vectors.
// ---------------------------------------------------------------
Vec3 &Vec3::operator -=(const Vec3 &ao_vec3)
{
m_X -= ao_vec3.m_X;
m_Y -= ao_vec3.m_Y;
m_Z -= ao_vec3.m_Z;
return *this;
}
// ---------------------------------------------------------------
// Equality operator. This operator returns true if the
// vectors are identical.
// ---------------------------------------------------------------
bool Vec3::operator ==(const Vec3 &ao_vec3) const
{
return ((m_X == ao_vec3.m_X) && (m_Y == ao_vec3.m_Y) && (m_Z == ao_vec3.m_Z));
}
// ---------------------------------------------------------------
// This method is for rotation the vector about Y, X, and then
// in Z-axis (roll, pitch, heading).
// ---------------------------------------------------------------
Vec3 Vec3::rotate(const Angle3 &ao_angle3) const
{
Vec3 o_vec3 = *this;
o_vec3 = o_vec3.rotateY(ao_angle3.m_R);
o_vec3 = o_vec3.rotateX(ao_angle3.m_P);
o_vec3 = o_vec3.rotateZ(ao_angle3.m_H);
return o_vec3;
}
// ---------------------------------------------------------------
// This method is for rotation the vector about Z, X, and then
// in Y-axis (heading, pitch, and roll).
// ---------------------------------------------------------------
Vec3 Vec3::rotateBack(const Angle3 &ao_angle3) const
{
Vec3 o_vec3 = *this;
o_vec3 = o_vec3.rotateZ(ao_angle3.m_H);
o_vec3 = o_vec3.rotateX(ao_angle3.m_P);
o_vec3 = o_vec3.rotateY(ao_angle3.m_R);
return o_vec3;
}
// ---------------------------------------------------------------
// This method is for rotation the vector about X-axis (pitch).
// ---------------------------------------------------------------
Vec3 Vec3::rotateX(const Radian64 &ad_pitch) const
{
if (ad_pitch == 0.0)
return *this;
Float64 d_sin = sin(ad_pitch);
Float64 d_cos = cos(ad_pitch);
Vec3 o_vec3;
o_vec3.m_X = m_X;
o_vec3.m_Y = (m_Y * d_cos) - (m_Z * d_sin);
o_vec3.m_Z = (m_Y * d_sin) + (m_Z * d_cos);
return o_vec3;
}
// ---------------------------------------------------------------
// This method is for rotation the vector about Y-axis (roll).
// ---------------------------------------------------------------
Vec3 Vec3::rotateY(const Radian64 &ad_roll) const
{
if (ad_roll == 0.0)
return *this;
Float64 d_sin = sin(ad_roll);
Float64 d_cos = cos(ad_roll);
Vec3 o_vec3;
o_vec3.m_X = (m_Z * d_sin) + (m_X * d_cos);
o_vec3.m_Y = m_Y;
o_vec3.m_Z = (m_Z * d_cos) - (m_X * d_sin);
return o_vec3;
}
// ---------------------------------------------------------------
// This method is for rotation the vector about Z-axis
// (heading).
// ---------------------------------------------------------------
Vec3 Vec3::rotateZ(const Radian64 &ad_heading) const
{
if (ad_heading == 0.0)
return *this;
Float64 d_sin = sin(ad_heading);
Float64 d_cos = cos(ad_heading);
Vec3 o_vec3;
o_vec3.m_X = (m_X * d_cos) - (m_Y * d_sin);
o_vec3.m_Y = (m_X * d_sin) + (m_Y * d_cos);
o_vec3.m_Z = m_Z;
return o_vec3;
}
@@ -0,0 +1,338 @@
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
#pragma once
#include <GBL_Global/Types.hpp>
#include <istream>
#include "Radian64.hpp"
#include "Angle3.hpp"
#include "Polar3.hpp"
namespace N_Types
{
/**
* This class represents a 3D vector
*
* @author Daniel.Schmid
* @version 1.0
* @created 08-Jul-2009 08:27:44
*/
class Vec3
{
public:
/**
* X value of the 3D cartessian coordinate.
*/
Float64 m_X = 0.0;
/**
* Y value of the 3D cartessian coordinate.
*/
Float64 m_Y = 0.0;
/**
* Z value of the 3D cartessian coordinate.
*/
Float64 m_Z = 0.0;
Vec3() = default;
/**
* Constructor with arguments as X/Y/Z
*
* @param ad_X X value of vector
* @param ad_Y Y value of vector
* @param ad_Z Z value of vector
*/
Vec3(Float64 ad_X, Float64 ad_Y, Float64 ad_Z)
: m_X(ad_X)
, m_Y(ad_Y)
, m_Z(ad_Z)
{}
/**
* Constructor with polar coorinate as argument.
*
* @param ao_polar3
*/
explicit Vec3(const Polar3 &ao_polar3)
{
setPolar3(ao_polar3);
}
/**
* This function returns the X/Y/Z-values of the vector.
*
* @param ad_x
* @param ad_y
* @param ad_z
*/
void get(Float64 &ad_x, Float64 &ad_y, Float64 &ad_z) const
{
ad_x = m_X;
ad_y = m_Y;
ad_z = m_Z;
}
/**
* This function set the X/Y/Z-value of the vector.
*
* @param ad_x X coordinate
* @param ad_y Y coordinate
* @param ad_z Z coordinate
*/
void set(Float64 ad_x, Float64 ad_y, Float64 ad_z)
{
m_X = ad_x;
m_Y = ad_y;
m_Z = ad_z;
}
/**
* This function returns the X-value of the vector.
*/
Float64 getX() const { return m_X; }
/**
* This function set the X-value of the vector.
*
* @param ad_x
*/
void setX(Float64 ad_x) { m_X = ad_x; }
/**
* This function returns the Y-value of the vector.
*/
Float64 getY() const { return m_Y; }
/**
* This function set the Y-value of the vector.
*
* @param ad_y
*/
void setY(Float64 ad_y) { m_Y = ad_y; }
/**
* This function returns the Z-value of the vector.
*/
Float64 getZ() const { return m_Z; }
/**
* This function set the Z-value of the vector.
*
* @param ad_z
*/
void setZ(Float64 ad_z) { m_Z = ad_z; }
/**
* This method returns the 3D polar coordinates of the given vector.
*/
Polar3 getPolar3() const;
/**
* This method set 3D polar coordinates to the vector.
*
* @param ao_polar3
*/
void setPolar3(const Polar3 &ao_polar3);
/**
* This method returns the cross product of the vectors.
*
* @param ao_vec3
*/
Vec3 cross(const Vec3 &ao_vec3) const;
/**
* This method returns the direction of the difference vector
*
* @param ao_vec3
*/
static Vec3 direction(const Vec3 &ao_vec3);
/**
* This method returns the distance between two coordinates.
*
* @param ao_coord3
*/
Float64 length(const Vec3 &ao_coord3) const;
/**
* This method returns the magnitude of the vector.
*/
Float64 magnitude() const;
/**
* Operator "-". Negation operator. Each attribute is negated.
*/
Vec3 operator -() const;
/**
* Operator "-". Subtraction of 2 vectors. The attributes of the calling object
* remain unchanged.
*
* @param ao_vec3
*/
Vec3 operator -(const Vec3 &ao_vec3) const;
/**
* Operator "*". The attributes are multiplied by the argument and the product is
* returned. The attributes of the calling object remain unchanged.
*
* @param ad_scale
*/
Vec3 operator *(Float64 ad_scale) const;
/**
* Operator "*". Dot product (scalar product) of 2 vectors A.B = |A|*|B|*cos
* (alpha), where alpha is the angle between the vectors.
*
* @param ao_vec3
*/
Float64 operator *(const Vec3 &ao_vec3) const;
/**
* Operator "*=". The attributes are multiplied by the argument and the product
* is returned. The attributes of the calling object are set to the changed value.
*
*
* @param ad_scale
*/
Vec3 &operator *=(Float64 ad_scale);
/**
* Operator "/". The attributes are divided by the argument and the result is
* returned. The attributes of the calling object remain unchanged.
*
* @param ad_scale
*/
Vec3 operator /(Float64 ad_scale) const;
/**
* Operator "/=". The attributes are divided by the argument and the product is
* returned. The attributes of the calling object are set to the changed value.
*
* @param ad_scale
*/
Vec3 &operator /=(Float64 ad_scale);
/**
* Operator "+". Addition of 2 vectors. The attributes of the calling object
* remain unchanged.
*
* @param ao_vec3
*/
Vec3 operator +(const Vec3 &ao_vec3) const;
/**
* Operator "+=". Addition of 2 vectors.
*
* @param ao_vec3
*/
Vec3 &operator +=(const Vec3 &ao_vec3);
/**
* Asignment operator with 3d polar coordinates
*
* @param ao_polar3
*/
Vec3 &operator =(const Polar3 &ao_polar3);
/**
* Operator "-=". Subtraction of 2 vectors.
*
* @param ao_vec3
*/
Vec3 &operator -=(const Vec3 &ao_vec3);
/**
* Equality operator. This operator returns true if the vectors are identical.
*
* @param ao_vec3
*/
bool operator ==(const Vec3 &ao_vec3) const;
/**
* This method is for rotation the vector about Y, X, and then in Z-axis (roll,
* pitch, heading).
*
* @param ao_angle3
*/
Vec3 rotate(const Angle3 &ao_angle3) const;
/**
* This method is for rotation the vector about Z, X, and then in Y-axis (heading,
* pitch, and roll).
*
* @param ao_angle3
*/
Vec3 rotateBack(const Angle3 &ao_angle3) const;
/**
* This method is for rotation the vector about X-axis (pitch).
*
* @param ad_pitch
*/
Vec3 rotateX(const Radian64 &ad_pitch) const;
/**
* This method is for rotation the vector about Y-axis (roll).
*
* @param ad_roll
*/
Vec3 rotateY(const Radian64 &ad_roll) const;
/**
* This method is for rotation the vector about Z-axis (heading).
*
* @param ad_heading
*/
Vec3 rotateZ(const Radian64 &ad_heading) const;
/**
* Overloaded stream operator "<<". The X/Y/Z values iof the vector are written to
* the stream in the format: x=???; y=???; z=???
*
* @param ao_os
* @param ao_vec3
*/
friend std::ostream &operator <<(std::ostream &ao_os, const Vec3 &ao_vec3)
{
ao_os << " x=" << ao_vec3.m_X << "; y=" << ao_vec3.m_Y << "; z=" << ao_vec3.m_Z << ";";
return ao_os;
}
friend std::wostream &operator <<(std::wostream &ao_os, const Vec3 &ao_vec3)
{
ao_os << " x=" << ao_vec3.m_X << "; y=" << ao_vec3.m_Y << "; z=" << ao_vec3.m_Z << ";";
return ao_os;
}
/**
* Overloaded stream operator ">>". The X/Y/Z values are read from stream. The
* input sequence X, Y and then Z.
*
* @param ao_is
* @param ao_vec3
*/
friend std::istream &operator >>(std::istream &ao_is, Vec3 &ao_vec3)
{
ao_is >> ao_vec3.m_X >> ao_vec3.m_Y >> ao_vec3.m_Z;
return ao_is;
}
};
}
@@ -0,0 +1,171 @@
# 14 -> G5/G6
# 7 -> M109
[WeaponRestriction]
Types = 7, 14
AmmoList = 5, 6, 7, 8
[Ammunitions]
NumberOfEntries = 8
KeyOfEntries = Ammunition
KeyOfParamEntries = AmmunitionP
[Ammunition1]
Name = "Moerser60mm"
Caliber = 60
Range = 4200
Speed = 200
TimeOut = 60000
Algorithm = RungeKuttaSimple
ReasonToDetonate = OnImpact
ParamType = CWParams
Deviation = 0.0
Derivation = 0
[AmmunitionP1/CWParams]
Weight = 1.805
CW = 0.2026, 0.1987, 0.1983, 0.1983, 0.1984
V0 = 58.800, 98.100, 129.50, 155.90, 179.90
XW = 45.000, 23.500, 17.700, 9.0000, 8.5200
[Ammunition2]
Name = "Moerser60mm_S1"
Caliber = 60
Range = 4200
Speed = 200
TimeOut = 60000
Algorithm = RungeKuttaSimple
ReasonToDetonate = OnImpact
ParamType = CWParams
Deviation = 2.0
Derivation = 0
[AmmunitionP2/CWParams]
Weight = 1.805
CW = 0.2026, 0.1987, 0.1983, 0.1983, 0.1984
V0 = 58.800, 98.100, 129.50, 155.90, 179.90
XW = 45.000, 23.500, 17.700, 9.0000, 8.5200
[Ammunition3]
Name = "M430"
Caliber = 40
Range = 2200
Speed = 240
TimeOut = 60000
Algorithm = RungeKutta
ReasonToDetonate = OnImpact
ParamType = CWParams
Deviation = 2.0
Derivation = 0.00389
[AmmunitionP3/CWParams]
Weight = 0.34
CW = 0.2356
V0 = 242
XW = 0.000
[Ammunition4]
Name = "M385"
Caliber = 40
Range = 2000
Speed = 242
TimeOut = 60000
Algorithm = RungeKuttaSimple
ReasonToDetonate = OnImpact
ParamType = CWParams
Deviation = 2.0
Derivation = 0.00389
[AmmunitionP4/CWParams]
Weight = 0.34
CW = 0.2451
V0 = 242
XW = 0.000
[Ammunition5]
Name = "HE_M1A2"
Caliber = 155
Range = 45000
Speed = 911
TimeOut = 180000
Algorithm = RungeKuttaSimple
ReasonToDetonate = OnImpact
ParamType = CWParams
Deviation = 0.0
Derivation = 0
[AmmunitionP5/CWParams]
Weight = 38.26
CW = 0.2000, 0.2000, 0.1983, 0.1880, 0.1300
V0 = 450.000, 610.000, 765.000, 911.000, 908.000
XW = 45.000, 23.500, 17.700, 9.0000, 8.5200
ElevMin = 2.5, 1.3, 0.8, 0.6, 0.6
ElevMax = 1348.5, 1305.4, 1284.7, 1256.7, 1256.9
Allowed14 = 1, 1, 1, 1, 1
Allowed7 = 1, 1, 1, 1, 1
[Ammunition6]
Name = "VLAP_M9703"
Caliber = 155
Range = 60000
Speed = 912
TimeOut = 180000
Algorithm = RungeKuttaSimple
ReasonToDetonate = OnImpact
ParamType = CWParams
Deviation = 0.0
Derivation = 0
[AmmunitionP6/CWParams]
Weight = 37.26
CW = 0.0800
V0 = 912.000
XW = 8.5200
ElevMin = 234.4, 234.4, 234.4, 234.4, 234.4
ElevMax = 1149.6, 1149.6, 1149.6, 1149.6, 1149.6
Allowed14 = 0, 0, 0, 1, 0
Allowed7 = 0, 0, 0, 1, 0
[Ammunition7]
Name = "SMK_BE_M2"
Caliber = 155
Range = 45000
Speed = 911
TimeOut = 180000
Algorithm = RungeKuttaSimple
ReasonToDetonate = OnImpact
ParamType = CWParams
Deviation = 0.0
Derivation = 0
[AmmunitionP7/CWParams]
Weight = 38.26
CW = 0.2000, 0.2000, 0.1983, 0.1880, 0.1300
V0 = 450.000, 610.000, 765.000, 911.000, 908.000
XW = 45.000, 23.500, 17.700, 9.0000, 8.5200
ElevMin = 2.5, 1.3, 0.8, 0.6, 0.6
ElevMax = 1336.2, 1303.4, 1382.2, 1258.1, 1256.5
Allowed14 = 1, 1, 1, 1, 1
Allowed7 = 1, 1, 1, 0, 1
[Ammunition8]
Name = "CLUSTER_HEHC_M9609"
Caliber = 155
Range = 45000
Speed = 911
TimeOut = 180000
Algorithm = RungeKuttaSimple
ReasonToDetonate = OnImpact
ParamType = CWParams
Deviation = 0.0
Derivation = 0
[AmmunitionP8/CWParams]
Weight = 38.26
CW = 0.2000, 0.2000, 0.1983, 0.1880, 0.1300
V0 = 450.000, 610.000, 765.000, 911.000, 908.000
XW = 45.000, 23.500, 17.700, 9.0000, 8.5200
ElevMin = 2.5, 1.3, 0.8, 0.6, 0.6
ElevMax = 1348.5, 1305.4, 1284.7, 1256.7, 1256.9
Allowed14 = 1, 1, 1, 1, 1
Allowed7 = 1, 1, 1, 0, 1
@@ -0,0 +1,39 @@
#
# CMake file für GeoParing Implementation
# $Id$
# $HeadURL$
# $Author$
#
SET(firingTables
HE-M1-M64Base-TableE.sus
HE-M1-M64Incr3-TableE.sus
HE-M1-M64Incr4-TableE.sus
HE-M1-M64Incr5-TableE.sus
HE-M1-M64Incr5BaseBleed-TableE.sus
VLAP-M64Incr5-TableE.sus
SMK-BE-RED-RED-PHOSPH-M1-M64Base-TableE.sus
SMK-BE-RED-RED-PHOSPH-M1-M64Incr3-TableE.sus
SMK-BE-RED-RED-PHOSPH-M1-M64Incr4-TableE.sus
SMK-BE-RED-RED-PHOSPH-M1-M64Incr5-TableE.sus
SMK-BE-RED-RED-PHOSPH-M1-M64Incr5BaseBleed-TableE.sus
Cluster-M64Base-TableE.sus
Cluster-M64BaseIncr3-TableE.sus
Cluster-M64BaseIncr4-TableE.sus
Cluster-M64BaseIncr5-TableE.sus
Cluster-M64BaseIncr5BaseBleed-TableE.sus
Moerser-60mm-Lad1.sus
Moerser-60mm-Lad2.sus
Moerser-60mm-Lad3.sus
Moerser-60mm-Lad4.sus
Moerser-60mm-Lad5.sus
Moerser-60mm-Lad6.sus
)
NGL_INSTALL(FILES AAR SV ${firingTables} DESTINATION GeoPairing/firingTables)
SET(configFiles
Ammunition.ini
GeoPairing.ini
)
NGL_INSTALL(FILES AAR SV ${configFiles} DESTINATION GeoPairing/firingTables)
@@ -0,0 +1,212 @@
###########################################################################
# #
# Projekt TES : File "HE-M1-M64Base-TableE.sus" zur Munition "M64" #
# #
# Bei der Auspraegung des Ballistik-Moduls vereinbarte Bezeichnungen #
# Tafel_Namen : ENTFERNUNG, AUFSATZ, FLUGZEIT, -- obligatorisch #
# VORHALT -- projektspezifisch #
# Param_Namen : DELTA_V0, LUFTTEMP, LUFTDRUCK, #
# LAENGSWIND, QUERWIND, #
# PULVERTEMP -- Korrektur-Parameter #
# #
###########################################################################
# Aenderung/Stand: 09.07.14-07:52
Schuss_Tafel =
{
Munition = "HE-M1-M64"
Version = "HE M64 Base Table-E"
Muni_Parameter = { Kaliber = 155.0 Masse = 46.30 V0 = 912.0 }
Std_Parameter = { DELTA_V0 = 0.0
LUFTTEMP = 15.0
LUFTDRUCK = 1013.25
LAENGSWIND= 0.0
QUERWIND = 0.0
PULVERTEMP= 21.1 }
Entfernung_Range= { Min = 100.0 Max = 12100.0 Delta = 100.0 Scheitel = 12228.0 }
Ballistik = "Parabel"
###########################################################################
Standard_Tafel =
{
Spaltengruppe =
{ Belegung = { AUFSATZ = (2) [-]
VORHALT = (3) [-]
FLUGZEIT = (4)
DELTA_RGE = (5) [-]
DELTA_ELEV = (6)
FORK = (7) [-]
DRIFT = (8) [-]
}
Zeilenlaenge = 8
Datenblock =
{
#
# RGE ELEV TOF DELTA DELTA FORK BEARING-CORR. RANGE-CORR.
# ENTF AUFSATZ VORHALT FLUGZEIT RGE ELEV DRIFT CW DEC INC
# [m] [mil] [mil] [sec] [mil] [m] [mil] [mil] [mil] [m] [m]
#
100 2.5 0 0.2 2.4 41 1 0.1 0 0.1 -0.1
200 4.9 0 0.4 2.5 41 1 0.3 0.01 0.2 -0.2
300 7.5 0 0.7 2.6 40 1 0.4 0.01 0.3 -0.3
400 10 0 0.9 2.6 40 1 0.5 0.02 0.4 -0.5
500 12.6 0 1.1 2.6 39 1 0.7 0.02 0.5 -0.6
600 15.2 0 1.4 2.6 39 1 0.8 0.03 0.6 -0.7
700 17.8 0 1.6 2.7 38 1 1 0.03 0.7 -0.8
800 20.5 0 1.8 2.7 38 1 1.1 0.04 0.9 -0.9
900 23.1 0 2.1 2.7 37 1 1.2 0.05 0.9 -1
1000 25.9 0 2.3 2.8 37 1 1.4 0.05 1 -1.1
1100 28.6 0 2.6 2.8 37 1 1.5 0.06 1.1 -1.2
1200 31.4 0 2.8 2.8 36 1 1.6 0.06 1.2 -1.3
1300 34.2 0 3.1 2.8 36 1 1.8 0.07 1.3 -1.4
1400 37.1 0 3.3 2.9 35 1 1.9 0.07 1.4 -1.5
1500 40 0 3.6 2.9 35 1 2.1 0.08 1.5 -1.6
1600 42.9 0 3.8 3 34 1 2.2 0.08 1.6 -1.7
1700 45.9 0 4.1 3 34 1 2.4 0.09 1.7 -1.8
1800 48.9 0 4.3 3 34 1 2.5 0.09 1.8 -1.9
1900 51.9 0 4.6 3 33 1 2.6 0.1 1.8 -2
2000 55 0 4.8 3.1 33 2 2.8 0.1 2 -2.1
2100 58.1 0 5.1 3.1 32 2 2.9 0.11 2.1 -2.2
2200 61.2 0 5.4 3.2 32 2 3.1 0.12 2.1 -2.3
2300 64.4 0 5.7 3.2 32 2 3.2 0.12 2.2 -2.4
2400 67.6 0 5.9 3.3 31 2 3.4 0.13 2.3 -2.4
2500 70.9 0 6.2 3.3 31 2 3.5 0.13 2.4 -2.5
2600 74.2 0 6.5 3.3 31 2 3.7 0.14 2.5 -2.6
2700 77.6 0 6.8 3.4 30 2 3.8 0.14 2.6 -2.7
2800 81 0 7 3.4 30 2 4 0.15 2.7 -2.8
2900 84.4 0 7.3 3.5 29 2 4.1 0.16 2.7 -2.9
3000 87.9 0 7.6 3.5 29 2 4.3 0.16 2.8 -3
3100 91.4 0 7.9 3.5 29 2 4.4 0.17 2.9 -3.1
3200 95 0 8.2 3.6 28 2 4.6 0.17 3 -3.2
3300 98.6 0 8.5 3.7 28 2 4.7 0.18 3 -3.3
3400 102.3 0 8.8 3.7 28 2 4.9 0.19 3.1 -3.3
3500 106 0 9.1 3.8 27 3 5.1 0.19 3.2 -3.4
3600 109.8 0 9.4 3.8 27 3 5.2 0.2 3.3 -3.5
3700 113.6 0 9.7 3.8 27 3 5.4 0.2 3.3 -3.5
3800 117.4 0 10 3.9 26 3 5.5 0.21 3.4 -3.6
3900 121.3 0 10.3 4 26 3 5.7 0.21 3.5 -3.7
4000 125.3 0 10.6 3.9 26 3 5.9 0.22 3.5 -3.8
4100 129.2 0 10.9 4 26 3 6 0.22 3.6 -3.8
4200 133.3 0 11.3 4.1 25 3 6.2 0.23 3.6 -3.9
4300 137.3 0 11.6 4 25 3 6.3 0.24 3.7 -3.9
4400 141.4 0 11.9 4.2 25 3 6.5 0.24 3.7 -4
4500 145.6 0 12.2 4.2 24 3 6.7 0.25 3.8 -4.1
4600 149.8 0 12.5 4.2 24 3 6.8 0.25 3.8 -4.1
4700 154 0 12.9 4.3 24 4 7 0.25 3.9 -4.2
4800 158.3 0 13.2 4.3 24 4 7.2 0.26 3.9 -4.2
4900 162.6 0 13.5 4.3 24 4 7.3 0.26 4 -4.3
5000 166.9 0 13.8 4.3 23 4 7.5 0.27 4 -4.3
5100 171.3 0 14.2 4.4 23 4 7.6 0.27 4.1 -4.4
5200 175.7 0 14.5 4.4 23 4 7.8 0.28 4.1 -4.4
5300 180.2 0 14.8 4.5 23 4 8 0.28 4.2 -4.5
5400 184.7 0 15.2 4.6 23 4 8.1 0.29 4.2 -4.5
5500 189.3 0 15.5 4.6 22 4 8.3 0.29 4.3 -4.6
5600 193.9 0 15.8 4.6 22 4 8.4 0.3 4.3 -4.6
5700 198.5 0 16.2 4.7 22 5 8.6 0.3 4.3 -4.7
5800 203.2 0 16.5 4.8 22 5 8.8 0.3 4.4 -4.7
5900 208 0 16.9 4.8 22 5 8.9 0.31 4.4 -4.8
6000 212.7 0 17.2 4.8 21 5 9.1 0.31 4.5 -4.8
6100 217.5 0 17.6 4.8 21 5 9.2 0.32 4.5 -4.8
6200 222.4 0 17.9 4.9 21 5 9.4 0.32 4.6 -4.9
6300 227.3 0 18.3 5 21 5 9.5 0.32 4.6 -4.9
6400 305.4 0 18.6 21 3.0 5 9.7 0.33 4.6 -5
6600 311.4 0 19.3 20 3.3 6 10 0.34 4.7 -5
6800 317.9 0 20.1 20 3.5 6 10.3 0.34 4.8 -5.1
7000 324.9 0 20.8 19 3.8 6 10.5 0.35 4.8 -5.2
7200 332.4 0 21.5 19 3.9 7 10.8 0.36 4.9 -5.3
7400 340.2 0 22.3 19 4.1 7 11.1 0.37 5 -5.3
7600 348.4 0 23 18 4.4 7 11.4 0.37 5.1 -5.4
7800 357.1 0 23.8 18 4.5 7 11.6 0.38 5.1 -5.5
8000 366.2 0 24.6 18 4.8 8 11.9 0.39 5.2 -5.6
8200 375.8 0 25.4 17 5.0 8 12.2 0.4 5.3 -5.7
8400 385.8 0 26.2 17 5.1 9 12.4 0.4 5.4 -5.7
8600 396.1 0 27.1 16 5.5 9 12.7 0.41 5.4 -5.8
8800 407 0 27.9 16 5.6 9 12.9 0.42 5.5 -5.9
9000 418.2 0 28.8 16 6.0 10 13.2 0.43 5.6 -6
9200 430.2 0 29.7 15 6.2 11 13.4 0.43 5.7 -6
9400 442.6 0 30.6 15 6.3 11 13.7 0.44 5.7 -6.1
9600 455.3 0 31.5 14 6.9 12 13.9 0.45 5.8 -6.2
9800 469.1 0 32.5 13 7.2 13 14.1 0.46 5.9 -6.3
10000 483.5 0 33.5 13 7.3 13 14.4 0.47 6 -6.3
10200 498 0 34.5 13 8.1 14 14.6 0.48 6.1 -6.5
10400 514.2 0 35.6 12 8.5 15 14.9 0.48 6.2 -6.6
10600 531.2 0 36.8 12 8.8 16 15.2 0.49 6.3 -6.6
10800 548.9 0 37.9 11 9.9 17 15.4 0.5 6.3 -6.7
11000 568.7 0 39.2 10 10.8 19 15.8 0.51 6.4 -6.8
11200 590.2 0 40.5 9 12.2 21 16.1 0.53 6.5 -6.9
11400 614.6 0 42.0 8 13.6 24 16.6 0.54 6.6 -7.0
11600 641.8 0 43.6 8 16.1 27 17.1 0.55 6.7 -7.1
11800 674 0 45.4 6 23.3 34 17.8 0.57 6.8 -7.2
12000 720.5 0 47.7 5 24.0 48 18.9 0.59 6.9 -7.4
12228 791.7 0 52 78.6 5 48 22 0.66 7.0 -7.5
12100 870.3 0 57.3 53.2 5 48 27.8 0.71 7.1 -7.6
12000 898.1 0 58.7 24.6 5 50 30.1 0.73 7.1 -7.5
11900 919.4 0 59.7 19.8 6 41 32.1 0.75 7.1 -7.5
11800 937.6 0 60.5 17 6 35 33.9 0.76 7 -7.4
11700 953.5 0 61.3 15.2 7 31 35.7 0.78 7 -7.4
11600 968 0 61.9 13.9 8 28 37.4 0.79 6.9 -7.3
11500 981.3 0 62.5 12.9 8 26 39.1 0.81 6.9 -7.3
11400 993.7 0 63 12.1 9 24 40.9 0.82 6.8 -7.2
11300 1005.4 0 63.5 11.4 9 23 42.6 0.83 6.8 -7.2
11200 1016.4 0 64 10.8 10 22 44.3 0.84 6.7 -7.1
11100 1026.9 0 64.4 10.3 10 21 46 0.86 6.7 -7.1
11000 1036.9 0 64.8 9.8 11 20 47.7 0.87 6.6 -7
10900 1046.5 0 65.2 9.5 11 19 49.4 0.88 6.6 -7
10800 1055.8 0 65.6 9.1 11 18 51.2 0.89 6.5 -6.9
10700 1064.7 0 65.9 8.8 12 18 53 0.91 6.5 -6.9
10600 1073.4 0 66.3 8.5 12 17 54.8 0.92 0.92 -6.8
10500 1081.7 0 66.6 8.3 13 16 56.6 0.93 0.93 -6.7
10400 1089.9 0 66.9 8.1 13 16 58.4 0.95 0.95 -6.7
10300 1097.8 0 67.2 7.8 13 15 60.2 0.96 0.96 -6.6
10200 1105.5 0 67.5 7.6 14 15 62.1 0.97 0.97 -6.6
10100 1113 0 67.8 7.4 14 14 64 0.99 0.99 -6.5
10000 1120.3 0 68.1 7.3 14 14 65.9 1.00 1 -6.5
9900 1127.5 0 68.3 7.1 15 14 67.8 1.01 1.01 -6.4
9800 1134.6 0 68.6 7 15 13 69.8 1.03 1.03 -6.3
9700 1141.4 0 68.8 6.8 15 13 71.7 1.04 1.04 -6.3
9600 1148.2 0 69.1 6.7 15 13 73.7 1.06 1.06 -6.2
9500 1154.8 0 69.3 6.6 16 12 75.7 1.07 1.07 -6.2
9400 1161.3 0 69.5 6.4 16 12 77.8 1.09 1.09 -6.1
9300 1167.7 0 69.7 6.3 16 12 79.8 1.10 1.1 -6
9200 1174 0 70 6.2 17 12 81.9 1.12 1.12 -6
9100 1180.1 0 70.2 6.1 17 11 84 1.13 1.13 -5.9
9000 1186.2 0 70.4 6 17 11 86 1.15 1.15 -5.9
8900 1192.2 0 70.6 6 17 11 88.1 1.17 1.17 -5.8
8800 1198.1 0 70.8 5.8 18 11 90.2 1.18 1.18 -5.7
8700 1203.8 0 70.9 5.8 18 11 92.3 1.20 1.2 -5.7
8600 1209.6 0 71.1 5.7 18 10 94.5 1.22 1.22 -5.6
8500 1215.2 0 71.3 5.5 18 10 96.5 1.24 1.24 -5.6
8400 1220.7 0 71.5 5.5 19 10 98.6 1.26 1.26 -5.5
8300 1226.2 0 71.7 5.5 19 10 100.7 1.28 1.28 -5.4
8200 1231.6 0 71.8 5.4 19 10 102.7 1.30 1.3 -5.3
8100 1236.9 0 72 5.3 19 9 104.8 1.32 1.32 -5.3
8000 1242.2 0 72.1 5.3 20 9 106.7 1.34 1.34 -5.2
7900 1247.4 0 72.3 5.2 20 9 108.6 1.36 4.9 -5.2
7800 1252.5 0 72.5 5.1 20 9 110.5 1.39 4.8 -5.1
7700 1257.6 0 72.6 5 20 9 112.2 1.41 4.7 -5
7600 1262.6 0 72.7 5 21 9 113.9 1.43 4.7 -5
7500 1267.5 0 72.9 4.9 21 8 115.4 1.46 4.6 -4.9
7400 1272.3 0 73 4.8 21 8 117 1.49 4.5 -4.9
7300 1277.1 0 73.2 4.8 21 8 118.7 1.51 4.5 -4.8
7200 1281.9 0 73.3 4.8 22 8 120.5 1.54 4.5 -4.7
7100 1286.6 0 73.4 4.8 22 8 122.4 1.57 4.4 -4.7
7000 1291.4 0 73.6 4.8 22 8 124.1 1.6 4.3 -4.6
6900 1296.1 0 73.7 4.8 21 8 125.7 1.63 4.3 -4.5
6800 1300.9 0 73.8 4.8 21 8 127.2 1.66 4.2 -4.5
6700 1305.7 0 73.9 4.8 21 8 128.7 1.69 4.2 -4.4
6600 1310.5 0 74 4.8 21 8 130.1 1.72 4.1 -4.3
6500 1315.3 0 74.1 4.8 21 8 131.3 1.75 4 -4.3
6400 1320.1 0 74.2 4.8 21 8 132.6 1.78 4 -4.2
6300 1324.9 0 74.3 4.8 22 8 133.7 1.82 3.9 -4.2
6200 1329.6 0 74.4 4.8 22 8 134.7 1.85 3.8 -4.1
6100 1334.4 0 74.5 4.8 22 7 135.8 1.88 3.8 -4
6000 1339.1 0 74.6 4.7 22 7 136.8 1.92 3.7 -4
5900 1343.8 0 74.6 4.7 22 7 137.9 1.95 3.6 -3.9
5800 1348.5 0 74.7 4.7 22 7 138.9 1.99 3.6 -3.8
}
} Ende Spaltengruppe
} Ende Standard_Tafel
} Ende Schuss_Tafel
@@ -0,0 +1,311 @@
###########################################################################
# #
# Projekt TES : File "HE-M1-M64Base-TableE.sus" zur Munition "M64" #
# #
# Bei der Auspraegung des Ballistik-Moduls vereinbarte Bezeichnungen #
# Tafel_Namen : ENTFERNUNG, AUFSATZ, FLUGZEIT, -- obligatorisch #
# VORHALT -- projektspezifisch #
# Param_Namen : DELTA_V0, LUFTTEMP, LUFTDRUCK, #
# LAENGSWIND, QUERWIND, #
# PULVERTEMP -- Korrektur-Parameter #
# #
###########################################################################
# Aenderung/Stand: 09.07.14-07:52
Schuss_Tafel =
{
Munition = "HE-M1-M64"
Version = "HE M64 Base Table-E"
Muni_Parameter = { Kaliber = 155.0 Masse = 46.30 V0 = 912.0 }
Std_Parameter = { DELTA_V0 = 0.0
LUFTTEMP = 15.0
LUFTDRUCK = 1013.25
LAENGSWIND= 0.0
QUERWIND = 0.0
PULVERTEMP= 21.1 }
Entfernung_Range= { Min = 100.0 Max = 12100.0 Delta = 100.0 Scheitel = 12228.0 }
Ballistik = "Parabel"
###########################################################################
Standard_Tafel =
{
Spaltengruppe =
{ Belegung = { AUFSATZ = (2) [-]
VORHALT = (3) [-]
FLUGZEIT = (4)
DELTA_RGE = (5) [-]
DELTA_ELEV = (6)
FORK = (7) [-]
DRIFT = (8) [-]
}
Zeilenlaenge = 8
Datenblock =
{
#
# RGE ELEV TOF DELTA DELTA FORK BEARING-CORR. RANGE-CORR.
# ENTF AUFSATZ VORHALT FLUGZEIT RGE ELEV DRIFT CW DEC INC
# [m] [mil] [mil] [sec] [mil] [m] [mil] [mil] [mil] [m] [m]
#
100 1.3 0 0.2 1.4 76 1 0.1 0.00 0.1 -0.2
200 2.7 0 0.3 1.4 75 1 0.2 0.01 0.2 -0.5
300 4.0 0 0.5 1.4 74 1 0.3 0.01 0.4 -0.8
400 5.4 0 0.7 1.3 74 1 0.4 0.01 0.5 -1.0
500 6.7 0 0.8 1.4 73 1 0.5 0.01 0.6 -1.2
600 8.1 0 1.0 1.4 72 1 0.6 0.02 0.7 -1.5
700 9.5 0 1.2 1.4 72 1 0.7 0.02 0.9 -1.8
800 10.9 0 1.3 1.4 71 1 0.8 0.02 1.0 -2.0
900 12.4 0 1.5 1.5 70 1 0.9 0.03 1.1 -2.2
1000 13.8 0 1.7 1.5 70 1 1.0 0.03 1.2 -2.5
1100 15.3 0 1.9 1.5 69 1 1.1 0.03 1.4 -2.7
1200 16.7 0 2.0 1.5 68 1 1.2 0.03 1.4 -2.9
1300 18.2 0 2.2 1.5 68 1 1.3 0.04 1.6 -3.2
1400 19.7 0 2.4 1.5 67 1 1.4 0.04 1.7 -3.4
1500 21.2 0 2.6 1.5 67 1 1.6 0.04 1.8 -3.6
1600 22.7 0 2.8 1.5 66 1 1.7 0.05 1.9 -3.9
1700 24.3 0 3.0 1.5 65 1 1.8 0.05 2.0 -4.1
1800 25.8 0 3.1 1.6 65 1 1.9 0.05 2.1 -4.3
1900 27.4 0 3.3 1.6 64 1 2.0 0.06 2.3 -4.6
2000 28.9 0 3.5 1.6 64 1 2.1 0.06 2.4 -4.8
2100 30.5 0 3.7 1.6 63 1 2.2 0.06 2.5 -5.0
2200 32.1 0 3.9 1.6 62 1 2.3 0.07 2.6 -5.2
2300 33.8 0 4.1 1.7 62 1 2.4 0.07 2.7 -5.4
2400 35.4 0 4.3 1.6 61 1 2.5 0.07 2.8 -5.6
2500 37.1 0 4.5 1.6 61 1 2.6 0.08 3.0 -5.9
2600 38.7 0 4.7 1.7 60 1 2.7 0.08 3.1 -6.1
2700 40.4 0 4.9 1.7 59 1 2.8 0.08 3.2 -6.3
2800 42.1 0 5.1 1.8 59 1 2.9 0.09 3.3 -6.5
2900 43.9 0 5.3 1.8 58 1 3.0 0.09 3.4 -6.7
3000 45.6 0 5.5 1.7 58 1 3.2 0.09 3.5 -6.9
3100 47.3 0 5.7 1.8 57 1 3.3 0.10 3.6 -7.2
3200 49.1 0 5.9 1.8 57 2 3.4 0.10 3.7 -7.4
3300 50.9 0 6.1 1.8 56 2 3.5 0.10 3.8 -7.6
3400 52.7 0 6.3 1.8 55 2 3.6 0.11 3.9 -7.8
3500 54.6 0 6.5 1.9 55 2 3.7 0.11 4.0 -7.9
3600 56.4 0 6.7 1.9 54 2 3.8 0.11 4.0 -8.2
3700 58.3 0 6.9 1.8 54 2 3.9 0.12 4.2 -8.4
3800 60.1 0 7.1 1.9 53 2 4.0 0.12 4.2 -8.6
3900 62.1 0 7.3 2.0 53 2 4.1 0.12 4.4 -8.8
4000 64.0 0 7.5 1.9 52 2 4.2 0.13 4.4 -8.9
4100 65.9 0 7.8 2.0 52 2 4.4 0.13 4.6 -9.1
4200 67.9 0 8.0 2.0 51 2 4.5 0.13 4.6 -9.3
4300 69.9 0 8.2 2.0 51 2 4.6 0.14 4.7 -9.5
4400 71.9 0 8.4 2.0 50 2 4.7 0.14 4.8 -9.6
4500 73.9 0 8.6 2.0 50 2 4.8 0.15 4.9 -9.9
4600 75.9 0 8.9 2.0 49 2 4.9 0.15 5.0 -10.0
4700 78.0 0 9.1 2.1 49 2 5.0 0.15 5.1 -10.3
4800 80.1 0 9.3 2.1 48 2 5.1 0.16 5.2 -10.4
4900 82.2 0 9.6 2.2 48 2 5.2 0.16 5.3 -10.6
5000 84.4 0 9.8 2.2 47 2 5.4 0.16 5.4 -10.7
5100 86.5 0 10.0 2.1 47 2 5.5 0.17 5.5 -11.0
5200 88.7 0 10.3 2.2 46 2 5.6 0.17 5.6 -11.1
5300 90.9 0 10.5 2.2 46 2 5.7 0.18 5.6 -11.3
5400 93.1 0 10.7 2.3 45 2 5.8 0.18 5.7 -11.4
5500 95.4 0 11.0 2.3 45 2 5.9 0.18 5.8 -11.6
5600 97.7 0 11.2 2.3 44 2 6.0 0.19 5.9 -11.7
5700 100.0 0 11.5 2.3 44 2 6.1 0.19 6.0 -11.9
5800 102.3 0 11.7 2.3 43 3 6.3 0.20 6.1 -12.0
5900 104.7 0 12.0 2.3 43 3 6.4 0.20 6.2 -12.2
6000 107.0 0 12.2 2.4 42 3 6.5 0.20 6.2 -12.3
6100 109.4 0 12.5 2.5 42 3 6.6 0.21 6.3 -12.5
6200 111.9 0 12.7 2.5 41 3 6.7 0.21 6.4 -12.7
6300 114.3 0 13.0 2.5 41 3 6.8 0.22 6.5 -12.9
6400 116.8 0 13.3 2.5 40 3 6.9 0.22 6.5 -13.0
6500 119.3 0 13.5 2.5 40 3 7.1 0.23 6.6 -13.2
6600 121.9 0 13.8 2.6 40 3 7.2 0.23 6.7 -13.3
6700 124.5 0 14.1 2.6 39 3 7.3 0.23 6.8 -13.5
6800 127.1 0 14.3 2.6 39 3 7.4 0.24 6.9 -13.7
6900 129.7 0 14.6 2.6 38 3 7.5 0.24 7.0 -13.8
7000 132.4 0 14.9 2.7 38 3 7.6 0.25 7.0 -14.0
7100 135.1 0 15.1 2.7 37 3 7.7 0.25 7.1 -14.1
7200 137.8 0 15.4 2.8 37 3 7.9 0.26 7.2 -14.2
7300 140.6 0 15.7 2.8 37 3 8.0 0.26 7.2 -14.3
7400 143.4 0 16.0 2.8 36 4 8.1 0.26 7.3 -14.5
7500 146.2 0 16.3 2.8 36 4 8.2 0.27 7.4 -14.7
7600 149.0 0 16.6 2.8 35 4 8.3 0.27 7.5 -14.8
7700 151.9 0 16.9 2.9 35 4 8.4 0.28 7.6 -15.0
7800 154.9 0 17.1 3.0 34 4 8.5 0.28 7.6 -15.1
7900 157.8 0 17.4 3.0 34 4 8.7 0.29 7.7 -15.3
8000 160.8 0 17.7 3.0 34 4 8.8 0.29 7.7 -15.3
8100 163.8 0 18.0 3.0 33 4 8.9 0.30 7.8 -15.5
8200 166.9 0 18.3 3.1 33 4 9.0 0.30 7.9 -15.7
8300 170.0 0 18.6 3.2 32 4 9.1 0.31 7.9 -15.8
8400 173.2 0 19.0 3.2 32 4 9.2 0.31 8.0 -16.0
8500 176.3 0 19.3 3.2 32 4 9.3 0.32 8.1 -16.0
8600 179.6 0 19.6 3.3 31 5 9.5 0.32 8.2 -16.2
8700 182.8 0 19.9 3.3 31 5 9.6 0.32 8.2 -16.3
8800 186.1 0 20.2 3.3 31 5 9.7 0.33 8.3 -16.4
8900 189.4 0 20.5 3.3 30 5 9.8 0.33 8.3 -16.6
9000 192.8 0 20.8 3.4 30 5 9.9 0.34 8.4 -16.7
9100 196.2 0 21.2 3.4 30 5 10.0 0.34 8.4 -16.8
9200 199.7 0 21.5 3.5 29 5 10.1 0.35 8.5 -17.0
9300 203.1 0 21.8 3.5 29 5 10.3 0.35 8.6 -17.0
9400 206.7 0 22.1 3.5 29 5 10.4 0.36 8.6 -17.2
9500 210.2 0 22.5 3.6 28 6 10.5 0.36 8.7 -17.3
9600 213.8 0 22.8 3.6 28 6 10.6 0.36 8.8 -17.4
9700 217.4 0 23.1 3.7 28 6 10.7 0.37 8.8 -17.5
9800 221.1 0 23.4 3.7 28 6 10.8 0.37 8.9 -17.6
9900 224.8 0 23.8 3.8 27 6 10.9 0.38 8.9 -17.7
10000 228.6 0 24.1 3.8 27 6 11.0 0.38 9.0 -17.8
10100 232.3 0 24.4 3.8 27 6 11.1 0.39 9.0 -18.0
10200 236.2 0 24.8 3.8 27 6 11.3 0.39 9.1 -18.0
10300 278 0 25.1 26 3.2 6 11.4 0.39 9.1 -18.1
10400 281.2 0 25.5 26 3.2 7 11.5 0.40 9.2 -18.2
10500 284.4 0 25.8 26 3.2 7 11.6 0.40 9.2 -18.3
10600 287.6 0 26.2 26 3.4 7 11.7 0.41 9.3 -18.4
10700 291 0 26.5 25 3.3 7 11.8 0.41 9.3 -18.5
10800 294.3 0 26.9 25 3.4 7 11.9 0.41 9.4 -18.7
10900 297.7 0 27.2 25 3.4 7 12.0 0.42 9.5 -18.7
11000 301.1 0 27.6 25 3.6 7 12.1 0.42 9.5 -18.8
11100 304.7 0 27.9 24 3.5 8 12.2 0.43 9.5 -19.0
11200 308.2 0 28.3 24 3.7 8 12.3 0.43 9.6 -19.0
11300 311.9 0 28.6 24 3.7 8 12.4 0.43 9.6 -19.1
11400 315.6 0 29.0 24 3.8 8 12.5 0.44 9.7 -19.3
11500 319.4 0 29.4 23 3.8 8 12.6 0.44 9.7 -19.4
11600 323.2 0 29.7 23 3.9 8 12.7 0.45 9.8 -19.4
11700 327.1 0 30.1 23 3.9 8 12.7 0.45 9.8 -19.5
11800 331 0 30.5 23 3.9 9 12.8 0.45 9.9 -19.7
11900 334.9 0 30.8 23 4.0 9 12.9 0.46 9.9 -19.7
12000 338.9 0 31.2 23 4.0 9 13.0 0.46 10.0 -19.7
12100 342.9 0 31.6 22 4.2 9 13.1 0.47 10.0 -19.8
12200 347.1 0 32.0 22 4.2 9 13.2 0.47 10.0 -19.9
12300 351.3 0 32.4 22 4.3 10 13.3 0.47 10.1 -20.1
12400 355.6 0 32.7 21 4.3 10 13.3 0.48 10.2 -20.1
12500 359.9 0 33.1 21 4.5 10 13.4 0.48 10.2 -20.2
12600 364.4 0 33.5 21 4.4 10 13.5 0.48 10.2 -20.3
12700 368.8 0 33.9 21 4.5 10 13.6 0.49 10.3 -20.4
12800 373.3 0 34.3 21 4.5 10 13.7 0.49 10.3 -20.5
12900 377.8 0 34.7 20 4.6 11 13.7 0.50 10.4 -20.6
13000 382.4 0 35.1 20 4.7 11 13.8 0.50 10.4 -20.7
13100 387.1 0 35.5 20 4.8 11 13.9 0.50 10.4 -20.7
13200 391.9 0 35.9 20 4.8 11 14.0 0.51 10.5 -20.8
13300 396.7 0 36.3 20 4.9 11 14.0 0.51 10.5 -20.9
13400 401.6 0 36.7 19 4.9 12 14.1 0.51 10.6 -21.0
13500 406.5 0 37.2 19 4.9 12 14.2 0.52 10.6 -21.1
13600 411.4 0 37.6 19 5.2 12 14.2 0.52 10.7 -21.1
13700 416.6 0 38.0 19 5.0 12 14.3 0.52 10.7 -21.2
13800 421.6 0 38.4 19 5.3 12 14.4 0.53 10.7 -21.3
13900 426.9 0 38.9 18 5.2 13 14.4 0.53 10.8 -21.4
14000 432.1 0 39.3 18 5.4 13 14.5 0.54 10.8 -21.5
14100 437.5 0 39.7 18 5.4 13 14.5 0.54 10.9 -21.7
14200 442.9 0 40.2 18 5.6 14 14.6 0.54 10.9 -21.7
14300 448.5 0 40.6 17 5.6 14 14.7 0.55 10.9 -21.7
14400 454.1 0 41.1 17 5.9 14 14.7 0.55 11.0 -21.8
14500 460 0 41.5 17 5.9 15 14.8 0.55 11.1 -21.9
14600 465.9 0 42.0 17 5.8 15 14.9 0.56 11.1 -22.0
14700 471.7 0 42.5 17 5.8 15 14.9 0.56 11.1 -22.1
14800 477.5 0 42.9 17 6.1 15 15.0 0.56 11.2 -22.1
14900 483.6 0 43.4 16 6.1 16 15.0 0.57 11.2 -22.3
15000 489.7 0 43.9 16 6.4 16 15.1 0.57 11.3 -22.3
15100 496.1 0 44.4 16 6.5 17 15.2 0.57 11.3 -22.4
15200 502.6 0 44.9 15 6.6 17 15.2 0.58 11.3 -22.4
15300 509.2 0 45.4 15 6.6 17 15.3 0.58 11.4 -22.6
15400 515.8 0 45.9 15 6.6 17 15.4 0.59 11.4 -22.7
15500 522.4 0 46.4 15 6.9 18 15.4 0.59 11.4 -22.8
15600 529.3 0 46.9 15 7.0 18 15.5 0.59 11.5 -22.8
15700 536.3 0 47.4 14 7.2 19 15.6 0.60 11.5 -22.9
15800 543.5 0 48.0 14 7.3 19 15.7 0.60 11.6 -23.0
15900 550.8 0 48.5 14 7.6 20 15.8 0.60 11.6 -23.1
16000 558.4 0 49.1 13 7.6 20 15.9 0.61 11.6 -23.1
16100 566 0 49.6 13 8.0 21 15.9 0.61 11.8 -23.3
16200 574 0 50.2 13 8.2 22 16.0 0.62 11.8 -23.4
16300 582.2 0 50.8 12 8.6 23 16.2 0.62 11.9 -23.6
16400 590.8 0 51.4 12 8.7 24 16.3 0.62 12.0 -23.8
16500 599.5 0 52.1 12 9.2 25 16.4 0.63 12.0 -23.8
16600 608.7 0 52.7 11 9.6 26 16.6 0.63 12.1 -24.0
16700 618.3 0 53.4 11 10.0 27 16.7 0.64 12.2 -24.1
16800 628.3 0 54.1 10 10.5 28 16.9 0.64 12.3 -24.3
16900 638.8 0 54.8 10 11.1 30 17.1 0.65 12.3 -24.4
17000 649.9 0 55.6 9 11.8 32 17.3 0.65 12.4 -24.6
17100 661.7 0 56.4 9 12.8 34 17.6 0.66 12.5 -24.8
17200 674.5 0 57.3 8 14.0 37 17.9 0.67 12.6 -25.0
17300 688.5 0 58.2 8 15.7 40 18.2 0.67 12.7 -25.1
17400 704.2 0 59.2 7 18.2 45 18.7 0.68 12.8 -25.4
17500 722.4 0 60.3 6 22.8 53 19.2 0.69 12.8 -25.6
17600 745.2 0 61.7 5 25.0 67 19.8 0.70 13.0 -25.8
17700 751.7 0 63.4 40.3 5 68 20.9 0.72 13.1 -26.1
17785 806.0 0 66.0 54.0 4 72 25.0 0.76 13.4 -26.5
17700 859.7 0 70.3 40.5 5 68 27.8 0.79 13.4 -26.7
17600 887.0 0 72.0 23.5 5 70 30.4 0.81 13.4 -26.8
17500 906.7 0 73.2 18.0 6 54 32.6 0.83 13.4 -26.7
17400 922.9 0 74.2 15.1 7 45 34.5 0.84 13.4 -26.6
17300 937.0 0 75.0 13.3 8 40 36.4 0.85 13.3 -26.6
17200 949.5 0 75.7 12.0 9 36 38.2 0.87 13.3 -26.5
17100 961.0 0 76.4 11.0 10 33 39.9 0.88 13.2 -26.5
17000 971.6 0 77.0 10.3 10 31 41.7 0.89 13.2 -26.3
16900 981.6 0 77.6 9.7 11 29 43.3 0.90 13.2 -26.2
16800 990.9 0 78.1 9.1 11 27 45.0 0.91 13.1 -26.1
16700 999.8 0 78.6 8.7 12 26 46.7 0.92 13.0 -26.0
16600 1008.3 0 79.1 8.3 13 25 48.4 0.93 13.0 -25.9
16500 1016.4 0 79.5 7.9 13 23 50.0 0.94 12.9 -25.8
16400 1024.1 0 79.9 7.6 14 23 51.7 0.95 12.8 -25.7
16300 1031.6 0 80.3 7.4 14 22 53.4 0.96 12.8 -25.5
16200 1038.8 0 80.7 7.1 15 21 55.1 0.97 12.7 -25.4
16100 1045.8 0 81.1 6.9 15 20 56.8 0.98 12.7 -25.3
16000 1052.6 0 81.5 6.7 15 20 58.5 0.99 12.6 -25.1
15900 1059.2 0 81.8 6.5 16 19 60.2 1.00 12.5 -25.1
15800 1065.6 0 82.1 6.3 16 18 62.0 1.01 12.5 -24.9
15700 1071.8 0 82.5 6.1 17 18 63.7 1.02 12.4 -24.8
15600 1077.8 0 82.8 5.9 17 17 65.4 1.03 12.4 -24.7
15500 1083.7 0 83.1 5.8 18 17 67.2 1.04 12.3 -24.6
15400 1089.5 0 83.4 5.8 18 17 68.9 1.05 12.2 -24.4
15300 1095.2 0 83.7 5.6 18 16 70.7 1.06 12.1 -24.3
15200 1100.7 0 83.9 5.5 19 16 72.5 1.07 12.1 -24.2
15100 1106.1 0 84.2 5.4 19 15 74.2 1.08 12.0 -24.1
15000 1111.5 0 84.5 5.3 19 15 76.1 1.09 12.0 -23.9
14900 1116.7 0 84.7 5.2 20 15 77.9 1.10 11.9 -23.8
14800 1121.8 0 85.0 5.1 20 14 79.7 1.11 11.8 -23.6
14700 1126.8 0 85.2 4.9 21 14 81.5 1.12 11.7 -23.5
14600 1131.7 0 85.5 4.8 21 14 83.4 1.13 11.6 -23.4
14500 1136.5 0 85.7 4.8 21 14 85.2 1.14 11.6 -23.2
14400 1141.3 0 85.9 4.7 22 13 87.1 1.15 11.5 -23.1
14300 1145.9 0 86.1 4.6 22 13 89.0 1.16 11.5 -23.0
14200 1150.5 0 86.3 4.6 22 13 90.9 1.17 11.4 -22.8
14100 1155.1 0 86.5 4.5 23 13 92.7 1.19 11.3 -22.7
14000 1159.6 0 86.8 4.5 23 12 94.6 1.20 11.3 -22.5
13900 1164.0 0 87.0 4.4 23 12 96.6 1.21 11.2 -22.4
13800 1168.4 0 87.2 4.3 24 12 98.5 1.22 11.1 -22.3
13700 1172.7 0 87.3 4.3 24 12 100.4 1.23 11.1 -22.1
13600 1176.9 0 87.5 4.2 24 12 102.3 1.24 11.0 -22.0
13500 1181.1 0 87.7 4.2 24 12 104.3 1.26 10.9 -21.8
13400 1185.3 0 87.9 4.2 25 11 106.2 1.27 10.8 -21.7
13300 1189.4 0 88.1 4.1 25 11 108.1 1.28 10.7 -21.4
13200 1193.5 0 88.3 4.0 25 11 110.1 1.29 10.7 -21.3
13100 1197.5 0 88.4 4.0 26 11 112.0 1.31 10.6 -21.1
13000 1201.4 0 88.6 4.0 26 11 113.9 1.32 10.5 -21.0
12900 1205.4 0 88.8 4.0 26 11 115.9 1.33 10.4 -20.8
12800 1209.3 0 88.9 3.8 26 10 117.7 1.35 10.3 -20.7
12700 1213.1 0 89.1 3.8 27 10 119.6 1.36 10.3 -20.5
12600 1216.9 0 89.3 3.8 27 10 121.5 1.37 10.2 -20.4
12500 1220.6 0 89.4 3.8 27 10 123.4 1.39 10.2 -20.3
12400 1224.4 0 89.6 3.7 28 10 125.2 1.40 10.0 -20.1
12300 1228.0 0 89.7 3.6 28 10 127.1 1.42 9.9 -19.9
12200 1231.7 0 89.9 3.7 28 10 128.9 1.43 9.8 -19.7
12100 1235.3 0 90.0 3.6 28 10 130.6 1.45 9.8 -19.6
12000 1238.9 0 90.2 3.5 29 9 132.4 1.46 9.7 -19.5
11900 1242.4 0 90.3 3.5 29 9 134.0 1.48 9.6 -19.4
11800 1245.9 0 90.5 3.5 29 9 135.7 1.49 9.5 -19.1
11700 1249.3 0 90.6 3.5 30 9 137.2 1.51 9.4 -19.0
11600 1252.8 0 90.7 3.4 30 9 138.7 1.53 9.3 -18.8
11500 1256.2 0 90.8 3.3 30 9 140.2 1.54 9.3 -18.7
11400 1259.5 0 91.0 3.4 30 9 141.7 1.56 9.2 -18.4
11300 1262.9 0 91.1 3.3 31 9 143.3 1.58 9.1 -18.3
11200 1266.2 0 91.2 3.3 31 9 145.0 1.60 9.0 -18.1
11100 1269.5 0 91.4 3.3 31 9 146.8 1.62 9.0 -18.0
11000 1272.8 0 91.5 3.3 31 8 148.5 1.64 8.9 -17.8
10900 1276.1 0 91.6 3.3 31 8 150.2 1.66 8.8 -17.7
10800 1279.3 0 91.7 3.3 31 8 151.9 1.68 8.7 -17.5
10700 1282.6 0 91.8 3.3 31 8 153.6 1.70 8.7 -17.4
10600 1285.8 0 92.0 3.3 31 8 155.2 1.72 8.6 -17.3
10500 1289.1 0 92.1 3.3 31 8 156.8 1.74 8.5 -17.1
10400 1292.3 0 92.2 3.3 31 8 158.3 1.76 8.5 -17.0
10300 1295.6 0 92.3 3.3 31 8 159.6 1.78 8.4 -16.9
10200 1298.9 0 92.4 3.3 31 8 161.0 1.80 8.4 -16.7
10100 1302.2 0 92.5 3.3 31 8 162.3 1.82 8.3 -16.6
10000 1305.4 0 92.6 3.2 31 8 163.5 1.84 8.2 -16.4
}
} Ende Spaltengruppe
} Ende Standard_Tafel
} Ende Schuss_Tafel
@@ -0,0 +1,385 @@
###########################################################################
# #
# Projekt TES : File "HE-M1-M64Base-TableE.sus" zur Munition "M64" #
# #
# Bei der Auspraegung des Ballistik-Moduls vereinbarte Bezeichnungen #
# Tafel_Namen : ENTFERNUNG, AUFSATZ, FLUGZEIT, -- obligatorisch #
# VORHALT -- projektspezifisch #
# Param_Namen : DELTA_V0, LUFTTEMP, LUFTDRUCK, #
# LAENGSWIND, QUERWIND, #
# PULVERTEMP -- Korrektur-Parameter #
# #
###########################################################################
# Aenderung/Stand: 09.07.14-07:52
Schuss_Tafel =
{
Munition = "HE-M1-M64"
Version = "HE M64 Base Table-E"
Muni_Parameter = { Kaliber = 155.0 Masse = 46.30 V0 = 912.0 }
Std_Parameter = { DELTA_V0 = 0.0
LUFTTEMP = 15.0
LUFTDRUCK = 1013.25
LAENGSWIND= 0.0
QUERWIND = 0.0
PULVERTEMP= 21.1 }
Entfernung_Range= { Min = 100.0 Max = 12100.0 Delta = 100.0 Scheitel = 12228.0 }
Ballistik = "Parabel"
###########################################################################
Standard_Tafel =
{
Spaltengruppe =
{ Belegung = { AUFSATZ = (2) [-]
VORHALT = (3) [-]
FLUGZEIT = (4)
DELTA_RGE = (5) [-]
DELTA_ELEV = (6)
FORK = (7) [-]
DRIFT = (8) [-]
}
Zeilenlaenge = 8
Datenblock =
{
#
# RGE ELEV TOF DELTA DELTA FORK BEARING-CORR. RANGE-CORR.
# ENTF AUFSATZ VORHALT FLUGZEIT RGE ELEV DRIFT CW DEC INC
# [m] [mil] [mil] [sec] [mil] [m] [mil] [mil] [mil] [m] [m]
#
100 0.8 0 0.1 0.9 119 1 0.1 0.00 0.1 -0.3
200 1.7 0 0.3 0.9 118 1 0.1 0.00 0.3 -0.4
300 2.5 0 0.4 0.9 117 1 0.2 0.01 0.5 -0.7
400 3.4 0 0.5 0.9 116 1 0.2 0.01 0.7 -1.0
500 4.3 0 0.7 0.8 115 1 0.3 0.01 0.8 -1.3
600 5.1 0 0.8 0.8 114 1 0.3 0.01 1.0 -1.4
700 6.0 0 0.9 0.9 114 1 0.4 0.01 1.2 -1.7
800 6.9 0 1.1 0.9 113 1 0.5 0.02 1.3 -2.0
900 7.8 0 1.2 0.9 112 1 0.5 0.02 1.5 -2.2
1000 8.7 0 1.3 0.9 111 1 0.6 0.02 1.6 -2.5
1100 9.6 0 1.5 0.9 110 1 0.6 0.02 1.8 -2.8
1200 10.5 0 1.6 0.9 109 1 0.7 0.02 1.9 -3.0
1300 11.5 0 1.8 0.9 108 1 0.8 0.03 2.1 -3.1
1400 12.4 0 1.9 0.9 108 1 0.8 0.03 2.3 -3.4
1500 13.3 0 2.0 1.0 107 1 0.9 0.03 2.4 -3.6
1600 14.3 0 2.2 0.9 106 1 0.9 0.03 2.5 -3.8
1700 15.2 0 2.3 1.0 105 1 1.0 0.03 2.6 -4.0
1800 16.2 0 2.5 1.0 104 1 1.1 0.04 2.7 -4.1
1900 17.2 0 2.6 0.9 103 1 1.1 0.04 2.9 -4.4
2000 18.1 0 2.8 0.9 102 1 1.2 0.04 3.0 -4.6
2100 19.1 0 2.9 1.0 102 1 1.2 0.04 3.2 -4.8
2200 20.1 0 3.1 1.0 101 1 1.3 0.05 3.3 -4.9
2300 21.1 0 3.2 1.0 100 1 1.4 0.05 3.4 -5.1
2400 22.1 0 3.4 1.0 99 1 1.4 0.05 3.5 -5.3
2500 23.1 0 3.5 1.1 98 1 1.5 0.05 3.7 -5.6
2600 24.2 0 3.7 1.1 98 1 1.6 0.05 3.8 -5.8
2700 25.2 0 3.8 1.0 97 1 1.6 0.06 4.0 -5.9
2800 26.2 0 4.0 1.0 96 1 1.7 0.06 4.1 -6.1
2900 27.3 0 4.1 1.1 95 1 1.8 0.06 4.2 -6.3
3000 28.4 0 4.3 1.1 94 1 1.8 0.06 4.4 -6.6
3100 29.4 0 4.4 1.1 94 1 1.9 0.07 4.5 -6.7
3200 30.5 0 4.6 1.1 93 1 1.9 0.07 4.6 -6.9
3300 31.6 0 4.8 1.1 92 1 2.0 0.07 4.7 -7.1
3400 32.7 0 4.9 1.1 91 1 2.1 0.07 4.9 -7.3
3500 33.8 0 5.1 1.1 91 1 2.1 0.07 5.0 -7.5
3600 34.9 0 5.2 1.1 90 1 2.2 0.08 5.2 -7.6
3700 36.0 0 5.4 1.1 89 1 2.3 0.08 5.3 -7.8
3800 37.2 0 5.6 1.1 88 1 2.3 0.08 5.4 -8.1
3900 38.3 0 5.7 1.1 87 1 2.4 0.08 5.6 -8.3
4000 39.5 0 5.9 1.1 87 1 2.5 0.09 5.7 -8.5
4100 40.6 0 6.1 1.1 86 1 2.6 0.09 5.8 -8.6
4200 41.8 0 6.2 1.2 85 1 2.6 0.09 6.0 -8.8
4300 43.0 0 6.4 1.2 85 1 2.7 0.09 6.1 -9.0
4400 44.2 0 6.6 1.2 84 2 2.8 0.10 6.1 -9.2
4500 45.4 0 6.7 1.2 83 2 2.8 0.10 6.3 -9.4
4600 46.6 0 6.9 1.2 82 2 2.9 0.10 6.4 -9.5
4700 47.8 0 7.1 1.3 82 2 3.0 0.10 6.6 -9.7
4800 49.1 0 7.3 1.3 81 2 3.0 0.11 6.6 -9.9
4900 50.3 0 7.4 1.3 80 2 3.1 0.11 6.7 -10.1
5000 51.6 0 7.6 1.3 80 2 3.2 0.11 6.8 -10.3
5100 52.9 0 7.8 1.3 79 2 3.3 0.11 6.9 -10.4
5200 54.1 0 8.0 1.3 78 2 3.3 0.12 7.1 -10.6
5300 55.4 0 8.1 1.3 77 2 3.4 0.12 7.2 -10.8
5400 56.7 0 8.3 1.3 77 2 3.5 0.12 7.3 -10.9
5500 58.1 0 8.5 1.4 76 2 3.5 0.12 7.4 -11.1
5600 59.4 0 8.7 1.3 75 2 3.6 0.13 7.5 -11.2
5700 60.7 0 8.9 1.3 75 2 3.7 0.13 7.7 -11.4
5800 62.1 0 9.1 1.4 74 2 3.8 0.13 7.8 -11.6
5900 63.4 0 9.2 1.4 73 2 3.8 0.14 7.8 -11.7
6000 64.8 0 9.4 1.4 73 2 3.9 0.14 8.0 -11.9
6100 66.2 0 9.6 1.4 72 2 4.0 0.14 8.1 -12.1
6200 67.6 0 9.8 1.4 71 2 4.1 0.14 8.2 -12.2
6300 69.0 0 10.0 1.5 71 2 4.1 0.15 8.3 -12.4
6400 70.5 0 10.2 1.5 70 2 4.2 0.15 8.5 -12.6
6500 71.9 0 10.4 1.5 70 2 4.3 0.15 8.5 -12.7
6600 73.4 0 10.6 1.5 69 2 4.4 0.15 8.6 -12.9
6700 74.8 0 10.8 1.5 68 2 4.4 0.16 8.8 -13.0
6800 76.3 0 11.0 1.5 68 2 4.5 0.16 8.9 -13.1
6900 77.8 0 11.2 1.5 67 2 4.6 0.16 8.9 -13.3
7000 79.3 0 11.4 1.5 66 2 4.7 0.17 9.1 -13.4
7100 80.8 0 11.6 1.5 66 2 4.7 0.17 9.2 -13.6
7200 82.4 0 11.8 1.5 65 2 4.8 0.17 9.2 -13.8
7300 83.9 0 12.0 1.5 65 2 4.9 0.17 9.4 -13.9
7400 85.5 0 12.2 1.6 64 2 5.0 0.18 9.5 -14.0
7500 87.1 0 12.4 1.6 63 2 5.1 0.18 9.5 -14.2
7600 88.7 0 12.6 1.6 63 2 5.1 0.18 9.7 -14.4
7700 90.3 0 12.8 1.6 62 2 5.2 0.19 9.7 -14.5
7800 91.9 0 13.1 1.6 62 2 5.3 0.19 9.9 -14.7
7900 93.6 0 13.3 1.6 61 2 5.4 0.19 10.0 -14.8
8000 95.2 0 13.5 1.7 60 3 5.4 0.20 10.0 -14.9
8100 96.9 0 13.7 1.7 60 3 5.5 0.20 10.2 -15.0
8200 98.6 0 13.9 1.7 59 3 5.6 0.20 10.3 -15.2
8300 100.3 0 14.1 1.7 59 3 5.7 0.20 10.3 -15.3
8400 102.0 0 14.4 1.8 58 3 5.8 0.21 10.5 -15.5
8500 103.8 0 14.6 1.8 58 3 5.9 0.21 10.5 -15.6
8600 105.5 0 14.8 1.8 57 3 5.9 0.21 10.6 -15.7
8700 107.3 0 15.0 1.8 57 3 6.0 0.22 10.7 -15.9
8800 109.1 0 15.3 1.8 56 3 6.1 0.22 10.8 -16.0
8900 110.9 0 15.5 1.8 56 3 6.2 0.22 10.9 -16.2
9000 112.7 0 15.7 1.8 55 3 6.3 0.23 10.9 -16.3
9100 114.6 0 16.0 1.9 54 3 6.4 0.23 11.1 -16.5
9200 116.4 0 16.2 1.9 54 3 6.4 0.23 11.1 -16.6
9300 118.3 0 16.4 1.9 53 3 6.5 0.24 11.3 -16.7
9400 120.2 0 16.7 1.9 53 3 6.6 0.24 11.3 -16.8
9500 122.1 0 16.9 2.0 52 3 6.7 0.24 11.4 -16.9
9600 124.1 0 17.1 2.0 52 3 6.8 0.25 11.5 -17.1
9700 126.0 0 17.4 2.0 51 3 6.9 0.25 11.6 -17.2
9800 128.0 0 17.6 2.0 51 3 7.0 0.25 11.7 -17.4
9900 130.0 0 17.9 2.0 50 3 7.1 0.26 11.7 -17.5
10000 132.0 0 18.1 2.0 50 3 7.1 0.26 11.8 -17.5
10100 134.0 0 18.4 2.1 49 3 7.2 0.26 11.9 -17.7
10200 136.1 0 18.6 2.1 49 4 7.3 0.27 12.0 -17.8
10300 138.2 0 18.9 2.1 48 4 7.4 0.27 12.1 -18.0
10400 140.3 0 19.1 2.1 48 4 7.5 0.27 12.2 -18.1
10500 142.4 0 19.4 2.1 48 4 7.6 0.28 12.2 -18.2
10600 144.5 0 19.6 2.2 47 4 7.7 0.28 12.3 -18.4
10700 146.7 0 19.9 2.2 47 4 7.8 0.28 12.4 -18.4
10800 148.9 0 20.2 2.2 46 4 7.9 0.29 12.5 -18.5
10900 151.1 0 20.4 2.2 46 4 8.0 0.29 12.6 -18.7
11000 153.3 0 20.7 2.2 45 4 8.0 0.29 12.7 -18.8
11100 155.5 0 21.0 2.3 45 4 8.1 0.30 12.7 -18.9
11200 157.8 0 21.2 2.3 44 4 8.2 0.30 12.8 -19.1
11300 160.1 0 21.5 2.3 44 4 8.3 0.30 12.9 -19.2
11400 162.4 0 21.8 2.3 43 4 8.4 0.31 13.0 -19.3
11500 164.8 0 22.1 2.4 43 4 8.5 0.31 13.1 -19.3
11600 167.1 0 22.3 2.3 43 4 8.6 0.31 13.1 -19.5
11700 169.5 0 22.6 2.4 42 5 8.7 0.32 13.3 -19.6
11800 171.9 0 22.9 2.4 42 5 8.8 0.32 13.3 -19.7
11900 174.3 0 23.2 2.5 41 5 8.9 0.33 13.4 -19.8
12000 176.8 0 23.5 2.5 41 5 9.0 0.33 13.4 -19.9
12100 179.3 0 23.7 2.5 41 5 9.1 0.33 13.6 -20.1
12200 181.8 0 24.0 2.5 40 5 9.2 0.34 13.6 -20.2
12300 184.3 0 24.3 2.5 40 5 9.3 0.34 13.7 -20.2
12400 186.9 0 24.6 2.6 39 5 9.4 0.34 13.7 -20.3
12500 189.5 0 24.9 2.6 39 5 9.5 0.35 13.9 -20.5
12600 192.1 0 25.2 2.6 39 5 9.6 0.35 13.9 -20.6
12700 194.7 0 25.5 2.6 38 5 9.7 0.35 14.0 -20.7
12800 197.4 0 25.8 2.7 38 5 9.8 0.36 14.1 -20.9
12900 200.1 0 26.1 2.7 37 6 9.9 0.36 14.2 -21.0
13000 202.8 0 26.4 2.7 37 6 10.0 0.37 14.2 -21.1
13100 205.5 0 26.7 2.8 37 6 10.1 0.37 14.3 -21.2
13200 208.3 0 27.0 2.8 36 6 10.2 0.37 14.4 -21.3
13300 211.1 0 27.4 2.8 36 6 10.3 0.38 14.5 -21.4
13400 214.0 0 27.7 2.8 36 6 10.4 0.38 14.5 -21.5
13500 216.8 0 28.0 2.8 35 6 10.5 0.39 14.6 -21.6
13600 219.7 0 28.3 2.9 35 6 10.6 0.39 14.7 -21.7
13700 222.6 0 28.6 3.0 35 6 10.7 0.39 14.8 -21.8
13800 225.6 0 28.9 2.9 34 6 10.8 0.40 14.8 -21.9
13900 228.5 0 29.3 2.9 34 7 10.9 0.40 14.9 -22.0
14000 231.5 0 29.6 3.1 34 7 11.1 0.40 15.0 -22.1
14100 234.6 0 29.9 3.1 33 7 11.2 0.41 15.1 -22.2
14200 237.6 0 30.2 3.0 33 7 11.3 0.41 15.1 -22.4
14300 240.7 0 30.6 3.1 33 7 11.4 0.41 15.2 -22.5
14400 243.8 0 30.9 3.2 32 7 11.5 0.42 15.3 -22.7
14500 270.6 0 31.2 32 1.4 7 11.6 0.42 15.3 -22.8
14600 273.3 0 31.5 32 1.4 7 11.7 0.43 15.4 -22.9
14700 276.1 0 31.9 32 1.4 7 11.8 0.43 15.5 -22.9
14800 279 0 32.2 31 1.4 8 11.9 0.43 15.6 -23.0
14900 281.8 0 32.5 31 1.5 8 12.1 0.44 15.6 -23.1
15000 284.7 0 32.9 31 1.5 8 12.2 0.44 15.7 -23.3
15100 287.7 0 33.2 31 1.5 8 12.3 0.44 15.8 -23.4
15200 290.7 0 33.6 30 1.5 8 12.4 0.45 15.8 -23.6
15300 293.6 0 33.9 30 1.5 8 12.5 0.45 15.9 -23.7
15400 296.7 0 34.2 30 1.6 8 12.6 0.45 16.0 -23.8
15500 299.8 0 34.6 30 1.5 9 12.7 0.46 16.1 -23.8
15600 302.9 0 34.9 29 1.6 9 12.9 0.46 16.1 -23.9
15700 306.1 0 35.3 29 1.6 9 13.0 0.46 16.2 -24.0
15800 309.3 0 35.6 29 1.6 9 13.1 0.47 16.2 -24.1
15900 312.5 0 36.0 29 1.7 9 13.2 0.47 16.4 -24.3
16000 315.8 0 36.3 28 1.6 9 13.3 0.47 16.4 -24.4
16100 319.1 0 36.7 28 1.7 9 13.4 0.48 16.5 -24.5
16200 322.4 0 37.1 28 1.7 9 13.6 0.48 16.5 -24.6
16300 325.8 0 37.4 28 1.7 10 13.7 0.49 16.7 -24.7
16400 329.2 0 37.8 27 1.8 10 13.8 0.49 16.7 -24.7
16500 332.7 0 38.1 27 1.8 10 13.9 0.49 16.8 -24.8
16600 336.2 0 38.5 27 1.8 10 14.0 0.50 16.8 -25.0
16700 339.7 0 38.9 27 1.8 10 14.2 0.50 16.9 -25.1
16800 343.2 0 39.2 27 1.8 10 14.3 0.50 17.0 -25.2
16900 346.8 0 39.6 26 1.9 11 14.4 0.51 17.0 -25.3
17000 350.5 0 40.0 26 1.8 11 14.5 0.51 17.2 -25.5
17100 354.1 0 40.4 26 1.9 11 14.7 0.51 17.2 -25.6
17200 357.9 0 40.7 26 1.9 11 14.8 0.51 17.3 -25.6
17300 361.6 0 41.1 25 1.9 11 14.9 0.52 17.4 -25.7
17400 365.4 0 41.5 25 2.0 11 15.0 0.52 17.5 -25.8
17500 369.3 0 41.9 25 1.9 11 15.2 0.52 17.5 -26.0
17600 373.1 0 42.3 25 2.0 12 15.3 0.53 17.6 -26.1
17700 377 0 42.6 25 2.0 12 15.4 0.53 17.6 -26.2
17800 381 0 43.0 24 2.0 12 15.5 0.53 17.7 -26.3
17900 385 0 43.4 24 2.0 12 15.7 0.54 17.8 -26.5
18000 389 0 43.8 24 2.0 12 15.8 0.54 17.9 -26.5
18100 393 0 44.2 24 2.1 13 15.9 0.54 17.9 -26.6
18200 397.1 0 44.6 24 2.1 13 16.1 0.55 18.0 -26.7
18300 401.3 0 45.0 23 2.1 13 16.2 0.55 18.1 -26.9
18400 405.5 0 45.4 23 2.1 13 16.3 0.55 18.1 -27.0
18500 409.7 0 45.8 23 2.2 13 16.5 0.56 18.2 -27.1
18600 414 0 46.2 23 2.2 14 16.6 0.56 18.3 -27.3
18700 418.3 0 46.6 23 2.3 14 16.7 0.56 18.4 -27.4
18800 422.8 0 47.1 22 2.2 14 16.9 0.57 18.4 -27.4
18900 427.2 0 47.5 22 2.2 14 17.0 0.57 18.6 -27.5
19000 431.6 0 47.9 22 2.2 14 17.2 0.57 18.6 -27.6
19100 436.1 0 48.3 22 2.4 15 17.3 0.58 18.7 -27.8
19200 440.8 0 48.7 21 2.3 15 17.4 0.58 18.7 -27.9
19300 445.4 0 49.2 21 2.3 15 17.6 0.58 18.8 -28.0
19400 450 0 49.6 21 2.4 15 17.7 0.59 18.9 -28.2
19500 454.8 0 50.0 21 2.4 16 17.9 0.59 19.0 -28.3
19600 459.5 0 50.5 21 2.4 16 18.0 0.59 19.1 -28.3
19700 464.4 0 50.9 20 2.4 16 18.2 0.59 19.2 -28.4
19800 469.2 0 51.4 20 2.5 16 18.3 0.60 19.2 -28.6
19900 474.2 0 51.8 20 2.5 17 18.5 0.60 19.3 -28.7
20000 479.2 0 52.3 20 2.5 17 18.7 0.60 19.5 -28.8
20100 484.3 0 52.7 20 2.6 17 18.8 0.61 19.5 -28.9
20200 489.5 0 53.2 19 2.6 18 19.0 0.61 19.6 -29.1
20300 494.6 0 53.7 19 2.6 18 19.2 0.61 19.7 -29.2
20400 499.9 0 54.1 19 2.7 18 19.3 0.62 19.8 -29.2
20500 505.2 0 54.6 19 2.7 18 19.5 0.62 19.8 -29.5
20600 510.6 0 55.1 19 2.8 19 19.7 0.62 19.9 -29.6
20700 516.1 0 55.6 18 2.8 19 19.9 0.63 20.0 -29.7
20800 521.7 0 56.1 18 2.8 19 20.0 0.63 20.1 -29.9
20900 527.3 0 56.6 18 2.9 20 20.2 0.63 20.1 -30.1
21000 533.1 0 57.1 18 2.9 20 20.4 0.64 20.2 -30.1
21100 538.9 0 57.6 17 2.9 21 20.6 0.64 20.3 -30.1
21200 544.7 0 58.1 17 3.1 21 20.8 0.64 20.4 -30.3
21300 550.8 0 58.6 17 3.0 22 21.0 0.65 20.5 -30.5
21400 556.9 0 59.2 16 3.2 22 21.3 0.65 20.6 -30.6
21500 563.2 0 59.7 16 3.1 23 21.5 0.65 20.6 -30.8
21600 569.5 0 60.3 16 3.3 23 21.7 0.66 20.7 -30.9
21700 576 0 60.8 16 3.3 24 22.0 0.66 20.8 -31.0
21800 582.6 0 61.4 15 3.4 24 22.2 0.67 20.9 -31.1
21900 589.3 0 62.0 15 3.5 25 22.5 0.67 20.9 -31.2
22000 596.3 0 62.6 15 3.5 25 22.7 0.67 21.0 -31.3
22100 603.3 0 63.2 14 3.6 26 23.0 0.68 21.1 -31.5
22200 610.6 0 63.8 14 3.7 27 23.3 0.68 21.2 -31.6
22300 618 0 64.5 14 3.9 28 23.6 0.69 21.3 -31.7
22400 625.7 0 65.1 13 3.9 29 23.9 0.69 21.4 -31.9
22500 633.6 0 65.8 13 4.1 30 24.3 0.69 21.5 -31.9
22600 641.8 0 66.5 13 4.3 31 24.6 0.70 21.6 -32.0
22700 650.3 0 67.2 12 4.4 32 25.0 0.70 21.7 -32.2
22800 659.1 0 68.0 12 4.6 34 25.4 0.71 21.7 -32.3
22900 668.3 0 68.8 11 4.7 35 25.8 0.71 21.8 -32.5
23000 677.8 0 69.6 11 4.8 37 26.3 0.72 22.0 -32.6
23100 680.0 0 70.4 10.3 10 39 26.8 0.73 22.0 -32.8
23200 690.5 0 71.3 11.0 10 42 27.4 0.73 22.1 -32.8
23300 701.9 0 72.3 11.8 9 45 28.0 0.74 22.2 -33.1
23400 714.0 0 73.3 12.7 8 49 28.7 0.75 22.3 -33.2
23500 727.3 0 74.4 14.0 8 55 29.5 0.75 22.4 -33.4
23600 742.1 0 75.7 15.8 7 61 30.4 0.76 22.6 -33.7
23700 758.8 0 77.1 18.0 6 71 31.5 0.77 22.8 -34.0
23800 778.1 0 78.7 22.6 5 89 33.0 0.78 23.0 -34.5
23900 803.9 0 80.7 36.3 4 90 35.0 0.80 23.3 -34.8
23975 850.6 0 85.0 44.4 4 90 40.0 0.83 24.0 -35.5
23900 892.7 0 87.5 32.2 5 90 44.3 0.85 24.7 -36.8
23800 914.9 0 89.1 19.3 6 77 47.3 0.86 24.9 -37.2
23700 931.2 0 90.3 14.8 7 60 49.7 0.87 25.1 -37.6
23600 944.6 0 91.2 12.4 9 50 51.8 0.88 25.4 -37.9
23500 955.9 0 92.0 10.8 10 44 53.0 0.89 25.4 -38.2
23400 966.1 0 92.7 9.8 11 40 54.2 0.90 25.4 -38.2
23300 975.6 0 93.4 9.1 12 37 55.6 0.91 25.5 -38.2
23200 984.3 0 94.0 8.5 12 34 56.9 0.92 25.5 -38.2
23100 992.5 0 94.5 8.0 13 32 58.3 0.92 25.5 -38.2
23000 1000.2 0 95.0 7.5 14 30 59.7 0.93 25.4 -38.3
22900 1007.5 0 95.5 7.1 15 29 61.0 0.94 25.4 -38.3
22800 1014.4 0 96.0 6.8 15 27 62.2 0.95 25.4 -38.3
22700 1021.0 0 96.4 6.5 16 26 63.4 0.95 25.4 -38.3
22600 1027.4 0 96.8 6.3 16 25 64.6 0.96 25.5 -38.2
22500 1033.5 0 97.2 6.0 17 24 65.8 0.97 25.4 -38.2
22400 1039.4 0 97.6 5.8 18 23 67.0 0.97 25.4 -38.3
22300 1045.0 0 97.9 5.5 19 22 68.2 0.98 25.4 -38.2
22200 1050.5 0 98.3 5.4 19 22 69.4 0.99 25.3 -38.1
22100 1055.8 0 98.6 5.3 20 21 70.5 0.99 25.2 -38.1
22000 1061.0 0 98.9 5.1 20 20 71.6 1.00 25.2 -38.1
21900 1066.0 0 99.2 5.0 20 20 72.7 1.01 25.2 -38.0
21800 1071.0 0 99.6 4.9 21 20 73.9 1.01 25.2 -37.9
21700 1075.8 0 99.9 4.8 21 19 75.0 1.02 25.1 -37.8
21600 1080.6 0 100.1 4.8 22 19 76.2 1.03 25.0 -37.8
21500 1085.3 0 100.4 4.6 22 18 77.3 1.03 24.9 -37.6
21400 1089.8 0 100.7 4.5 23 18 78.4 1.04 24.9 -37.5
21300 1094.3 0 101.0 4.4 23 18 79.5 1.05 24.8 -37.4
21200 1098.6 0 101.2 4.3 24 17 80.7 1.05 24.7 -37.3
21100 1102.9 0 101.5 4.3 24 17 81.8 1.06 24.6 -37.2
21000 1107.1 0 101.7 4.1 25 16 82.9 1.07 24.6 -37.2
20900 1111.2 0 102.0 4.0 25 16 84.0 1.07 24.5 -37.1
20800 1115.2 0 102.2 4.0 26 16 85.0 1.08 24.4 -36.9
20700 1119.2 0 102.4 4.0 26 16 86.1 1.09 24.3 -36.8
20600 1123.1 0 102.7 3.9 26 15 87.1 1.09 24.2 -36.7
20500 1126.9 0 102.9 3.8 27 15 88.2 1.10 24.1 -36.5
20400 1130.7 0 103.1 3.8 27 15 89.3 1.11 24.1 -36.4
20300 1134.5 0 103.3 3.7 27 15 90.4 1.11 24.0 -36.3
20200 1138.1 0 103.5 3.6 28 14 91.5 1.12 23.8 -36.2
20100 1141.7 0 103.7 3.6 28 14 92.6 1.13 23.7 -36.0
20000 1145.3 0 103.9 3.6 29 14 93.7 1.14 23.7 -35.8
19900 1148.8 0 104.1 3.5 29 14 94.7 1.14 23.6 -35.6
19800 1152.3 0 104.3 3.4 30 13 95.8 1.15 23.5 -35.4
19700 1155.7 0 104.5 3.4 30 13 96.8 1.16 23.5 -35.4
19600 1159.1 0 104.7 3.4 30 13 97.8 1.17 23.4 -35.2
19500 1162.4 0 104.9 3.3 31 13 98.9 1.17 23.3 -35.1
19400 1165.7 0 105.1 3.3 31 13 99.9 1.18 23.2 -34.9
19300 1168.9 0 105.2 3.2 31 13 100.9 1.19 23.1 -34.8
19200 1172.1 0 105.4 3.2 32 12 101.8 1.20 22.9 -34.6
19100 1175.3 0 105.6 3.2 32 12 102.8 1.20 22.8 -34.5
19000 1178.4 0 105.7 3.1 33 12 103.7 1.21 22.7 -34.3
18900 1181.5 0 105.9 3.1 33 12 104.6 1.22 22.6 -34.1
18800 1184.6 0 106.1 3.0 34 12 105.5 1.23 22.4 -33.9
18700 1187.6 0 106.2 3.0 34 11 106.4 1.24 22.3 -33.7
18600 1190.5 0 106.4 2.9 34 11 107.3 1.25 22.3 -33.7
18500 1193.4 0 106.5 2.9 35 11 108.2 1.25 22.1 -33.5
18400 1196.3 0 106.7 2.9 35 11 109.0 1.26 22.0 -33.3
18300 1199.2 0 106.8 2.8 36 11 109.9 1.27 21.9 -33.1
18200 1202.0 0 107.0 2.9 36 11 110.7 1.28 21.8 -32.9
18100 1204.9 0 107.1 2.8 36 11 111.4 1.29 21.7 -32.8
18000 1207.6 0 107.2 2.8 37 11 112.2 1.30 21.5 -32.6
17900 1210.4 0 107.4 2.8 37 10 112.9 1.31 21.5 -32.4
17800 1213.1 0 107.5 2.7 37 10 113.7 1.32 21.4 -32.2
17700 1215.8 0 107.6 2.7 38 10 114.4 1.33 21.2 -32.0
17600 1218.5 0 107.8 2.7 38 10 115.0 1.34 21.0 -31.9
17500 1221.2 0 107.9 2.7 38 10 115.7 1.34 20.9 -31.7
17400 1223.8 0 108.0 2.6 39 10 116.3 1.35 20.8 -31.6
17300 1226.4 0 108.1 2.6 39 10 117.0 1.36 20.7 -31.5
17200 1229.0 0 108.3 2.6 39 10 117.6 1.37 20.6 -31.3
17100 1231.6 0 108.4 2.5 40 10 118.3 1.38 20.5 -31.2
17000 1234.1 0 108.5 2.5 40 10 119.1 1.39 20.3 -31.0
16900 1236.6 0 108.6 2.5 40 10 119.8 1.41 20.2 -30.9
16800 1239.2 0 108.7 2.5 40 9 120.5 1.42 20.1 -30.7
16700 1241.7 0 108.9 2.5 40 9 121.3 1.43 20.0 -30.6
16600 1244.2 0 109.0 2.6 40 9 122.0 1.44 20.0 -30.5
16500 1246.8 0 109.1 2.6 40 9 122.6 1.45 19.9 -30.5
16400 1249.3 0 109.2 2.5 40 9 123.2 1.46 19.8 -30.4
16300 1251.9 0 109.3 2.5 40 9 123.8 1.47 19.8 -30.3
16200 1254.4 0 109.4 2.5 40 9 124.4 1.48 19.7 -30.1
16100 1257.0 0 109.5 2.5 40 9 124.9 1.49 19.6 -30.1
16000 1259.6 0 109.6 2.5 40 9 125.5 1.50 19.6 -29.9
15900 1262.1 0 109.7 2.5 40 9 126.0 1.51 19.5 -29.8
15800 1264.6 0 109.8 2.5 40 9 126.4 1.52 19.4 -29.7
15700 1267.2 0 109.9 2.5 40 9 126.9 1.53 19.3 -29.6
15600 1269.7 0 110.0 2.5 40 9 127.3 1.54 19.2 -29.5
15500 1272.2 0 110.1 2.5 40 9 127.7 1.56 19.1 -29.3
15400 1274.7 0 110.2 2.5 40 9 128.1 1.57 19.0 -29.2
15300 1277.2 0 110.3 2.5 40 9 128.5 1.58 18.9 -29.1
15200 1279.7 0 110.4 2.5 40 9 128.9 1.59 18.8 -28.9
15100 1282.2 0 110.5 2.5 40 9 129.3 1.60 18.7 -28.7
15000 1284.7 0 110.6 2.5 40 9 129.7 1.61 18.6 -28.6
}
} Ende Spaltengruppe
} Ende Standard_Tafel
} Ende Schuss_Tafel
@@ -0,0 +1,457 @@
###########################################################################
# #
# Projekt TES : File "HE-M1-M64Base-TableE.sus" zur Munition "M64" #
# #
# Bei der Auspraegung des Ballistik-Moduls vereinbarte Bezeichnungen #
# Tafel_Namen : ENTFERNUNG, AUFSATZ, FLUGZEIT, -- obligatorisch #
# VORHALT -- projektspezifisch #
# Param_Namen : DELTA_V0, LUFTTEMP, LUFTDRUCK, #
# LAENGSWIND, QUERWIND, #
# PULVERTEMP -- Korrektur-Parameter #
# #
###########################################################################
# Aenderung/Stand: 09.07.14-07:52
Schuss_Tafel =
{
Munition = "HE-M1-M64"
Version = "HE M64 Base Table-E"
Muni_Parameter = { Kaliber = 155.0 Masse = 46.30 V0 = 912.0 }
Std_Parameter = { DELTA_V0 = 0.0
LUFTTEMP = 15.0
LUFTDRUCK = 1013.25
LAENGSWIND= 0.0
QUERWIND = 0.0
PULVERTEMP= 21.1 }
Entfernung_Range= { Min = 100.0 Max = 12100.0 Delta = 100.0 Scheitel = 12228.0 }
Ballistik = "Parabel"
###########################################################################
Standard_Tafel =
{
Spaltengruppe =
{ Belegung = { AUFSATZ = (2) [-]
VORHALT = (3) [-]
FLUGZEIT = (4)
DELTA_RGE = (5) [-]
DELTA_ELEV = (6)
FORK = (7) [-]
DRIFT = (8) [-]
}
Zeilenlaenge = 8
Datenblock =
{
#
# RGE ELEV TOF DELTA DELTA FORK BEARING-CORR. RANGE-CORR.
# ENTF AUFSATZ VORHALT FLUGZEIT RGE ELEV DRIFT CW DEC INC
# [m] [mil] [mil] [sec] [mil] [m] [mil] [mil] [mil] [m] [m]
#
100 0.6 0 0.1 0.6 169 1 0.0 0.00 0.2 -0.1
200 1.2 0 0.2 0.6 168 1 0.1 0.00 0.3 -0.3
300 1.8 0 0.3 0.6 167 1 0.1 0.00 0.5 -0.5
400 2.4 0 0.4 0.6 165 1 0.1 0.01 0.7 -0.7
500 3.0 0 0.6 0.6 164 1 0.1 0.01 0.8 -0.8
600 3.6 0 0.7 0.6 163 1 0.2 0.01 1.0 -1.0
700 4.2 0 0.8 0.7 162 1 0.2 0.01 1.1 -1.1
800 4.9 0 0.9 0.7 161 1 0.2 0.01 1.4 -1.3
900 5.5 0 1.0 0.6 160 1 0.2 0.01 1.5 -1.5
1000 6.1 0 1.1 0.6 159 1 0.3 0.01 1.7 -1.6
1100 6.7 0 1.2 0.7 158 1 0.3 0.02 1.8 -1.8
1200 7.4 0 1.4 0.7 157 1 0.3 0.02 2.0 -1.9
1300 8.0 0 1.5 0.6 156 1 0.4 0.02 2.1 -2.1
1400 8.7 0 1.6 0.7 155 1 0.4 0.02 2.3 -2.2
1500 9.3 0 1.7 0.7 154 1 0.4 0.02 2.4 -2.4
1600 10.0 0 1.8 0.7 153 1 0.4 0.02 2.6 -2.5
1700 10.6 0 1.9 0.7 152 1 0.5 0.02 2.8 -2.7
1800 11.3 0 2.1 0.7 151 1 0.5 0.03 2.9 -2.8
1900 12.0 0 2.2 0.7 150 1 0.5 0.03 3.1 -3.0
2000 12.6 0 2.3 0.7 149 1 0.6 0.03 3.2 -3.1
2100 13.3 0 2.4 0.7 148 1 0.6 0.03 3.4 -3.3
2200 14.0 0 2.6 0.7 147 1 0.6 0.03 3.5 -3.4
2300 14.7 0 2.7 0.7 146 1 0.6 0.03 3.7 -3.6
2400 15.4 0 2.8 0.7 145 1 0.7 0.04 3.8 -3.7
2500 16.1 0 2.9 0.7 144 1 0.7 0.04 4.0 -3.9
2600 16.8 0 3.0 0.7 143 1 0.7 0.04 4.1 -4.0
2700 17.5 0 3.2 0.7 142 1 0.8 0.04 4.3 -4.2
2800 18.2 0 3.3 0.7 141 1 0.8 0.04 4.5 -4.3
2900 18.9 0 3.4 0.7 140 1 0.8 0.04 4.6 -4.5
3000 19.6 0 3.6 0.8 139 1 0.9 0.04 4.8 -4.6
3100 20.4 0 3.7 0.8 138 1 0.9 0.05 4.9 -4.8
3200 21.1 0 3.8 0.7 137 1 0.9 0.05 5.1 -4.9
3300 21.8 0 3.9 0.8 136 1 0.9 0.05 5.1 -5.1
3400 22.6 0 4.1 0.8 135 1 1.0 0.05 5.3 -5.2
3500 23.3 0 4.2 0.8 134 1 1.0 0.05 5.4 -5.4
3600 24.1 0 4.3 0.8 133 1 1.0 0.05 5.6 -5.5
3700 24.8 0 4.5 0.8 132 1 1.1 0.06 5.7 -5.6
3800 25.6 0 4.6 0.8 131 1 1.1 0.06 5.9 -5.7
3900 26.4 0 4.7 0.8 130 1 1.1 0.06 6.0 -5.9
4000 27.1 0 4.9 0.8 129 1 1.2 0.06 6.1 -6.0
4100 27.9 0 5.0 0.8 128 1 1.2 0.06 6.3 -6.2
4200 28.7 0 5.1 0.8 127 1 1.2 0.06 6.4 -6.3
4300 29.5 0 5.3 0.8 126 1 1.3 0.07 6.6 -6.4
4400 30.3 0 5.4 0.8 125 1 1.3 0.07 6.7 -6.6
4500 31.1 0 5.5 0.8 124 1 1.3 0.07 6.8 -6.7
4600 31.9 0 5.7 0.8 123 1 1.4 0.07 6.9 -6.9
4700 32.7 0 5.8 0.8 122 1 1.4 0.07 7.1 -6.9
4800 33.6 0 6.0 0.9 121 1 1.4 0.08 7.2 -7.1
4900 34.4 0 6.1 0.8 121 1 1.5 0.08 7.3 -7.2
5000 35.2 0 6.2 0.8 120 1 1.5 0.08 7.5 -7.4
5100 36.1 0 6.4 0.9 119 1 1.5 0.08 7.6 -7.5
5200 36.9 0 6.5 0.9 118 1 1.6 0.08 7.8 -7.6
5300 37.8 0 6.7 0.8 117 1 1.6 0.08 7.8 -7.8
5400 38.6 0 6.8 0.9 116 1 1.7 0.09 8.0 -7.8
5500 39.5 0 7.0 0.9 115 1 1.7 0.09 8.1 -8.0
5600 40.4 0 7.1 0.9 114 1 1.7 0.09 8.2 -8.1
5700 41.3 0 7.3 0.8 113 1 1.8 0.09 8.4 -8.2
5800 42.1 0 7.4 0.9 113 2 1.8 0.09 8.5 -8.3
5900 43.0 0 7.6 0.9 112 2 1.8 0.10 8.6 -8.5
6000 43.9 0 7.7 1.0 111 2 1.9 0.10 8.7 -8.6
6100 44.9 0 7.9 0.9 110 2 1.9 0.10 8.9 -8.7
6200 45.8 0 8.0 0.9 109 2 2.0 0.10 9.0 -8.9
6300 46.7 0 8.2 0.9 108 2 2.0 0.10 9.1 -8.9
6400 47.6 0 8.3 0.9 107 2 2.0 0.11 9.2 -9.1
6500 48.6 0 8.5 1.0 107 2 2.1 0.11 9.4 -9.2
6600 49.5 0 8.6 1.0 106 2 2.1 0.11 9.4 -9.3
6700 50.5 0 8.8 1.0 105 2 2.1 0.11 9.6 -9.5
6800 51.4 0 8.9 1.0 104 2 2.2 0.11 9.7 -9.5
6900 52.4 0 9.1 1.0 103 2 2.2 0.12 9.8 -9.7
7000 53.4 0 9.3 1.0 103 2 2.3 0.12 10.0 -9.8
7100 54.4 0 9.4 0.9 102 2 2.3 0.12 10.0 -9.9
7200 55.3 0 9.6 0.9 101 2 2.3 0.12 10.2 -10.0
7300 56.3 0 9.7 1.1 100 2 2.4 0.12 10.3 -10.1
7400 57.4 0 9.9 1.1 99 2 2.4 0.13 10.4 -10.2
7500 58.4 0 10.1 1.0 98 2 2.5 0.13 10.5 -10.4
7600 59.4 0 10.2 1.0 98 2 2.5 0.13 10.6 -10.4
7700 60.4 0 10.4 1.0 97 2 2.6 0.13 10.7 -10.6
7800 61.5 0 10.6 1.0 96 2 2.6 0.13 10.9 -10.7
7900 62.5 0 10.7 1.0 95 2 2.6 0.14 10.9 -10.8
8000 63.6 0 10.9 1.0 95 2 2.7 0.14 11.0 -10.9
8100 64.6 0 11.1 1.0 94 2 2.7 0.14 11.2 -11.0
8200 65.7 0 11.2 1.1 93 2 2.8 0.14 11.2 -11.1
8300 66.8 0 11.4 1.1 92 2 2.8 0.14 11.4 -11.2
8400 67.9 0 11.6 1.1 92 2 2.9 0.15 11.5 -11.3
8500 69.0 0 11.8 1.1 91 2 2.9 0.15 11.6 -11.4
8600 70.1 0 11.9 1.1 90 2 2.9 0.15 11.7 -11.6
8700 71.2 0 12.1 1.2 89 2 3.0 0.15 11.8 -11.6
8800 72.4 0 12.3 1.2 89 2 3.0 0.15 11.9 -11.7
8900 73.5 0 12.5 1.1 88 2 3.1 0.16 12.0 -11.9
9000 74.6 0 12.6 1.2 87 2 3.1 0.16 12.1 -11.9
9100 75.8 0 12.8 1.2 86 2 3.2 0.16 12.2 -12.0
9200 77.0 0 13.0 1.1 86 2 3.2 0.16 12.3 -12.2
9300 78.1 0 13.2 1.2 85 2 3.3 0.17 12.4 -12.2
9400 79.3 0 13.4 1.2 84 2 3.3 0.17 12.5 -12.3
9500 80.5 0 13.6 1.2 84 2 3.4 0.17 12.6 -12.4
9600 81.7 0 13.7 1.3 83 2 3.4 0.17 12.7 -12.5
9700 83.0 0 13.9 1.3 82 2 3.4 0.18 12.8 -12.6
9800 84.2 0 14.1 1.2 82 2 3.5 0.18 12.9 -12.7
9900 85.4 0 14.3 1.3 81 2 3.5 0.18 13.0 -12.8
10000 86.7 0 14.5 1.3 80 2 3.6 0.18 13.1 -12.9
10100 87.9 0 14.7 1.3 80 2 3.6 0.18 13.2 -13.0
10200 89.2 0 14.9 1.3 79 2 3.7 0.19 13.3 -13.1
10300 90.5 0 15.1 1.3 78 2 3.7 0.19 13.4 -13.2
10400 91.8 0 15.3 1.3 78 2 3.8 0.19 13.5 -13.3
10500 93.1 0 15.5 1.3 77 3 3.8 0.19 13.6 -13.3
10600 94.4 0 15.7 1.3 76 3 3.9 0.20 13.7 -13.4
10700 95.7 0 15.9 1.3 76 3 3.9 0.20 13.8 -13.5
10800 97.1 0 16.1 1.4 75 3 4.0 0.20 13.9 -13.6
10900 98.4 0 16.3 1.4 74 3 4.0 0.20 14.0 -13.7
11000 99.8 0 16.5 1.3 74 3 4.1 0.21 14.1 -13.8
11100 101.1 0 16.7 1.3 73 3 4.2 0.21 14.2 -13.9
11200 102.5 0 16.9 1.4 73 3 4.2 0.21 14.3 -14.0
11300 103.9 0 17.1 1.4 72 3 4.3 0.21 14.3 -14.1
11400 105.3 0 17.3 1.4 71 3 4.3 0.22 14.4 -14.2
11500 106.7 0 17.5 1.4 71 3 4.4 0.22 14.5 -14.3
11600 108.2 0 17.7 1.5 70 3 4.4 0.22 14.6 -14.4
11700 109.6 0 17.9 1.5 70 3 4.5 0.22 14.6 -14.5
11800 111.1 0 18.1 1.5 69 3 4.5 0.23 14.8 -14.5
11900 112.5 0 18.3 1.5 68 3 4.6 0.23 14.9 -14.6
12000 114.0 0 18.5 1.5 68 3 4.6 0.23 14.9 -14.8
12100 115.5 0 18.8 1.5 67 3 4.7 0.23 15.0 -14.8
12200 117.0 0 19.0 1.5 67 3 4.8 0.24 15.1 -14.9
12300 118.5 0 19.2 1.5 66 3 4.8 0.24 15.2 -15.0
12400 120.1 0 19.4 1.5 65 3 4.9 0.24 15.2 -15.1
12500 121.6 0 19.6 1.5 65 3 4.9 0.24 15.4 -15.1
12600 123.2 0 19.9 1.5 64 3 5.0 0.25 15.5 -15.2
12700 124.7 0 20.1 1.6 64 3 5.0 0.25 15.5 -15.3
12800 126.3 0 20.3 1.6 63 3 5.1 0.25 15.6 -15.4
12900 127.9 0 20.5 1.6 63 3 5.2 0.25 15.7 -15.5
13000 129.5 0 20.8 1.6 62 3 5.2 0.26 15.8 -15.6
13100 131.2 0 21.0 1.7 62 4 5.3 0.26 15.8 -15.7
13200 132.8 0 21.2 1.7 61 4 5.3 0.26 15.9 -15.7
13300 134.5 0 21.5 1.7 61 4 5.4 0.27 16.0 -15.8
13400 136.1 0 21.7 1.7 60 4 5.5 0.27 16.1 -15.9
13500 137.8 0 21.9 1.7 60 4 5.5 0.27 16.2 -16.0
13600 139.5 0 22.2 1.7 59 4 5.6 0.27 16.3 -16.0
13700 141.2 0 22.4 1.8 59 4 5.7 0.28 16.4 -16.1
13800 143.0 0 22.6 1.8 58 4 5.7 0.28 16.4 -16.3
13900 144.7 0 22.9 1.8 58 4 5.8 0.28 16.5 -16.3
14000 146.5 0 23.1 1.8 57 4 5.9 0.28 16.6 -16.4
14100 148.2 0 23.4 1.8 57 4 5.9 0.29 16.7 -16.5
14200 150.0 0 23.6 1.8 56 4 6.0 0.29 16.7 -16.6
14300 151.8 0 23.9 1.8 56 4 6.0 0.29 16.8 -16.6
14400 153.7 0 24.1 1.8 55 4 6.1 0.30 16.9 -16.7
14500 155.5 0 24.4 1.8 55 4 6.2 0.30 17.0 -16.8
14600 157.4 0 24.6 1.8 54 4 6.3 0.30 17.0 -16.8
14700 159.2 0 24.9 1.9 54 4 6.3 0.30 17.2 -16.9
14800 161.1 0 25.1 1.9 53 4 6.4 0.31 17.3 -17.0
14900 163.0 0 25.4 1.9 53 4 6.5 0.31 17.3 -17.1
15000 164.9 0 25.6 1.9 52 5 6.5 0.31 17.4 -17.1
15100 166.9 0 25.9 2.0 52 5 6.6 0.32 17.5 -17.2
15200 168.8 0 26.1 2.0 52 5 6.7 0.32 17.6 -17.3
15300 170.8 0 26.4 2.0 51 5 6.7 0.32 17.6 -17.4
15400 172.8 0 26.7 2.0 51 5 6.8 0.32 17.7 -17.4
15500 174.8 0 26.9 2.0 50 5 6.9 0.33 17.8 -17.6
15600 176.8 0 27.2 2.0 50 5 7.0 0.33 17.9 -17.7
15700 178.8 0 27.5 2.0 49 5 7.0 0.33 18.0 -17.7
15800 180.9 0 27.7 2.0 49 5 7.1 0.34 18.0 -17.8
15900 182.9 0 28.0 2.1 49 5 7.2 0.34 18.1 -17.9
16000 209.50 0 28.3 48 1.7 5 7.3 0.34 18.2 -18.0
16100 211.20 0 28.6 48 1.9 5 7.3 0.34 18.3 -18.0
16200 213.10 0 28.8 47 1.8 5 7.4 0.35 18.4 -18.1
16300 214.90 0 29.1 47 1.8 5 7.5 0.35 18.5 -18.2
16400 216.70 0 29.4 47 1.8 5 7.6 0.35 18.6 -18.3
16500 218.50 0 29.7 46 1.9 6 7.7 0.36 18.6 -18.3
16600 220.40 0 30.0 46 1.9 6 7.7 0.36 18.7 -18.4
16700 222.30 0 30.2 46 2.0 6 7.8 0.36 18.8 -18.6
16800 224.30 0 30.5 45 1.9 6 7.9 0.37 18.9 -18.6
16900 226.20 0 30.8 45 2.0 6 8.0 0.37 18.9 -18.7
17000 228.20 0 31.1 44 2.0 6 8.1 0.37 19.0 -18.8
17100 230.20 0 31.4 44 2.0 6 8.2 0.37 19.1 -18.9
17200 232.20 0 31.7 44 2.0 6 8.2 0.38 19.2 -18.9
17300 234.20 0 32.0 43 2.0 6 8.3 0.38 19.2 -19.0
17400 236.20 0 32.3 43 2.1 6 8.4 0.38 19.3 -19.1
17500 238.30 0 32.6 43 2.1 6 8.5 0.39 19.5 -19.2
17600 240.40 0 32.9 42 2.1 6 8.6 0.39 19.5 -19.2
17700 242.50 0 33.2 42 2.1 7 8.7 0.39 19.6 -19.3
17800 244.60 0 33.5 42 2.2 7 8.8 0.40 19.7 -19.4
17900 246.80 0 33.8 41 2.2 7 8.9 0.40 19.8 -19.5
18000 249 0 34.1 41 2.2 7 8.9 0.40 19.8 -19.5
18100 251.20 0 34.4 41 2.3 7 9.0 0.40 19.9 -19.6
18200 253.50 0 34.7 40 2.2 7 9.1 0.41 20.0 -19.7
18300 255.70 0 35.0 40 2.3 7 9.2 0.41 20.1 -19.8
18400 258 0 35.3 40 2.3 7 9.3 0.41 20.1 -19.9
18500 260.30 0 35.6 39 2.4 7 9.4 0.42 20.3 -20.0
18600 262.70 0 35.9 39 2.3 7 9.5 0.42 20.4 -20.1
18700 265 0 36.3 39 2.4 7 9.6 0.42 20.4 -20.1
18800 267.40 0 36.6 39 2.3 8 9.7 0.43 20.5 -20.3
18900 269.70 0 36.9 38 2.5 8 9.8 0.43 20.6 -20.4
19000 272.20 0 37.2 38 2.4 8 9.9 0.43 20.7 -20.4
19100 274.60 0 37.5 38 2.4 8 10.0 0.44 20.8 -20.5
19200 277 0 37.9 37 2.6 8 10.1 0.44 20.9 -20.6
19300 279.60 0 38.2 37 2.5 8 10.2 0.44 21.0 -20.7
19400 282.10 0 38.5 37 2.5 8 10.3 0.44 21.0 -20.8
19500 284.60 0 38.8 37 2.5 8 10.4 0.45 21.1 -20.9
19600 287.10 0 39.2 36 2.6 8 10.5 0.45 21.3 -20.9
19700 289.70 0 39.5 36 2.6 9 10.6 0.45 21.3 -21.0
19800 292.30 0 39.8 36 2.7 9 10.7 0.46 21.4 -21.1
19900 295 0 40.2 36 2.6 9 10.8 0.46 21.5 -21.2
20000 297.60 0 40.5 35 2.7 9 10.9 0.46 21.6 -21.3
20100 300.30 0 40.8 35 2.6 9 11.0 0.47 21.7 -21.4
20200 302.90 0 41.1 35 2.7 9 11.1 0.47 21.8 -21.5
20300 305.60 0 41.5 35 2.7 9 11.3 0.47 21.9 -21.6
20400 308.30 0 41.8 34 2.8 9 11.4 0.47 21.9 -21.7
20500 311.10 0 42.2 34 2.7 9 11.5 0.48 22.1 -21.8
20600 313.80 0 42.5 34 2.9 10 11.6 0.48 22.2 -21.8
20700 316.70 0 42.8 34 2.9 10 11.7 0.48 22.3 -21.9
20800 319.60 0 43.2 34 2.8 10 11.8 0.49 22.3 -22.1
20900 322.40 0 43.5 33 2.8 10 11.9 0.49 22.5 -22.1
21000 325.20 0 43.9 33 2.9 10 12.1 0.49 22.6 -22.2
21100 328.10 0 44.2 33 2.9 10 12.2 0.49 22.6 -22.4
21200 331 0 44.6 33 3.0 10 12.3 0.50 22.8 -22.4
21300 334 0 44.9 33 2.9 10 12.4 0.50 22.9 -22.5
21400 336.90 0 45.3 32 3.0 10 12.5 0.50 23.0 -22.7
21500 339.90 0 45.6 32 3.0 11 12.6 0.50 23.1 -22.7
21600 342.90 0 46.0 32 3.1 11 12.8 0.51 23.2 -22.9
21700 346 0 46.3 32 3.0 11 12.9 0.51 23.3 -23.0
21800 349 0 46.7 32 3.1 11 13.0 0.51 23.4 -23.1
21900 352.10 0 47.0 31 3.1 11 13.1 0.52 23.5 -23.2
22000 355.20 0 47.4 31 3.1 11 13.3 0.52 23.5 -23.3
22100 358.30 0 47.7 31 3.1 11 13.4 0.52 23.7 -23.4
22200 361.40 0 48.1 31 3.2 11 13.5 0.52 23.8 -23.5
22300 364.60 0 48.5 31 3.2 12 13.6 0.53 23.8 -23.6
22400 367.80 0 48.8 30 3.2 12 13.8 0.53 23.9 -23.6
22500 371 0 49.2 30 3.2 12 13.9 0.53 24.1 -23.7
22600 374.20 0 49.6 30 3.3 12 14.0 0.53 24.1 -23.8
22700 377.50 0 49.9 30 3.3 12 14.2 0.54 24.3 -23.9
22800 380.80 0 50.3 30 3.3 12 14.3 0.54 24.4 -24.0
22900 384.10 0 50.7 29 3.4 12 14.4 0.54 24.5 -24.2
23000 387.50 0 51.1 29 3.4 13 14.6 0.55 24.6 -24.2
23100 390.90 0 51.4 29 3.3 13 14.7 0.55 24.7 -24.4
23200 394.20 0 51.8 29 3.4 13 14.9 0.55 24.8 -24.5
23300 397.60 0 52.2 29 3.5 13 15.0 0.55 25.0 -24.6
23400 401.10 0 52.6 28 3.5 13 15.1 0.56 25.0 -24.8
23500 404.60 0 53.0 28 3.5 13 15.3 0.56 25.2 -24.8
23600 408.10 0 53.4 28 3.5 14 15.4 0.56 25.3 -25.0
23700 411.60 0 53.8 28 3.4 14 15.6 0.56 25.4 -25.0
23800 415 0 54.1 28 3.6 14 15.7 0.57 25.6 -25.2
23900 418.60 0 54.5 28 3.6 14 15.9 0.57 25.7 -25.3
24000 422.20 0 54.9 27 3.7 14 16.0 0.57 25.8 -25.4
24100 425.90 0 55.3 27 3.6 14 16.2 0.58 25.9 -25.5
24200 429.50 0 55.7 27 3.7 14 16.3 0.58 26.0 -25.6
24300 433.20 0 56.1 27 3.7 15 16.5 0.58 26.2 -25.7
24400 436.90 0 56.5 27 3.8 15 16.6 0.58 26.2 -25.9
24500 440.70 0 57.0 26 3.7 15 16.8 0.59 26.4 -26.0
24600 444.40 0 57.4 26 3.8 15 16.9 0.59 26.5 -26.1
24700 448.20 0 57.8 26 3.9 15 17.1 0.59 26.6 -26.2
24800 452.10 0 58.2 26 3.8 16 17.3 0.59 26.8 -26.4
24900 455.90 0 58.6 26 3.9 16 17.4 0.60 26.9 -26.5
25000 459.80 0 59.1 26 4.0 16 17.6 0.60 27.1 -26.7
25100 463.80 0 59.5 25 4.0 16 17.8 0.60 27.2 -26.8
25200 467.80 0 59.9 25 3.9 16 17.9 0.61 27.3 -27.0
25300 471.70 0 60.3 25 4.0 17 18.1 0.61 27.5 -27.2
25400 475.70 0 60.8 25 4.1 17 18.3 0.61 27.7 -27.4
25500 479.80 0 61.2 25 4.1 17 18.5 0.61 27.8 -27.4
25600 483.90 0 61.7 24 4.2 17 18.6 0.62 28.0 -27.6
25700 488.10 0 62.1 24 4.1 17 18.8 0.62 28.1 -27.7
25800 492.20 0 62.6 24 4.2 18 19.0 0.62 28.3 -27.9
25900 496.40 0 63.0 24 4.2 18 19.2 0.63 28.4 -28.0
26000 500.60 0 63.5 24 4.3 18 19.4 0.63 28.6 -28.2
26100 504.90 0 63.9 23 4.3 18 19.6 0.63 28.7 -28.3
26200 509.20 0 64.4 23 4.4 19 19.7 0.63 29.0 -28.6
26300 513.60 0 64.9 23 4.4 19 19.9 0.64 29.1 -28.8
26400 518 0 65.3 23 4.4 19 20.1 0.64 29.3 -28.9
26500 522.40 0 65.8 23 4.5 19 20.3 0.64 29.5 -29.1
26600 526.90 0 66.3 22 4.6 20 20.5 0.65 29.6 -29.2
26700 531.50 0 66.8 22 4.5 20 20.8 0.65 29.9 -29.3
26800 536 0 67.3 22 4.6 20 21.0 0.65 30.0 -29.5
26900 540.60 0 67.8 22 4.7 20 21.2 0.65 30.2 -29.7
27000 545.30 0 68.3 22 4.7 21 21.4 0.66 30.5 -30.0
27100 550 0 68.8 21 4.9 21 21.6 0.66 30.7 -30.2
27200 554.90 0 69.3 21 4.7 21 21.8 0.66 30.8 -30.4
27300 559.60 0 69.8 21 4.9 22 22.1 0.67 31.2 -30.6
27400 564.50 0 70.3 21 4.9 22 22.3 0.67 31.4 -30.9
27500 569.40 0 70.9 21 4.9 22 22.5 0.67 31.7 -31.2
27600 574.30 0 71.4 20 5.1 22 22.8 0.68 32.0 -31.5
27700 579.40 0 71.9 20 5.0 23 23.0 0.68 32.4 -31.8
27800 584.40 0 72.5 20 5.0 23 23.3 0.68 32.7 -32.1
27900 589.40 0 73.0 20 5.2 23 23.5 0.69 33.1 -32.4
28000 594.60 0 73.5 20 5.1 23 23.8 0.69 33.4 -32.8
28100 599.70 0 74.1 20 5.2 24 24.0 0.69 33.8 -33.2
28200 604.90 0 74.6 20 5.2 24 24.3 0.69 34.1 -33.5
28300 610.10 0 75.2 19 5.3 24 24.6 0.70 34.4 -33.8
28400 615.40 0 75.7 19 5.4 25 24.9 0.70 34.6 -34.1
28500 620.80 0 76.3 19 5.3 25 25.1 0.70 34.9 -34.3
28600 626.10 0 76.8 19 5.5 25 25.4 0.70 35.2 -34.6
28700 631.60 0 77.4 18 5.5 26 25.7 0.71 35.5 -34.8
28800 637.10 0 77.9 18 5.7 26 26.0 0.71 35.8 -35.1
28900 642.80 0 78.5 18 5.8 27 26.3 0.71 36.0 -35.4
29000 648.60 0 79.1 18 5.8 27 26.7 0.71 36.3 -35.6
29100 654.40 0 79.6 17 5.9 28 27.0 0.72 36.6 -35.9
29200 660.30 0 80.2 17 6.0 28 27.3 0.72 36.9 -36.2
29300 666.30 0 80.8 17 6.2 29 27.7 0.72 37.2 -36.5
29400 672.50 0 81.4 17 6.3 30 28.0 0.72 37.4 -36.8
29500 678.80 0 82.0 16 6.4 30 28.4 0.73 37.7 -37.1
29600 681.3 0 82.7 6.4 16 31 28.8 0.73 38.0 -37.3
29700 687.8 0 83.3 6.6 16 32 29.2 0.73 38.4 -37.6
29800 694.5 0 84.0 6.8 15 33 29.6 0.74 38.7 -37.9
29900 701.4 0 84.6 7.0 15 34 30.0 0.74 39.1 -38.3
30000 708.4 0 85.3 7.1 14 35 30.5 0.74 39.4 -38.6
30100 715.7 0 86.0 7.4 14 36 31.0 0.74 39.7 -39.0
30200 723.2 0 86.7 7.6 14 37 31.5 0.75 40.1 -39.4
30300 730.9 0 87.5 7.9 13 39 32.0 0.75 40.5 -39.7
30400 739.0 0 88.2 8.3 13 41 32.6 0.75 41.0 -40.1
30500 747.4 0 89.0 8.6 12 43 33.1 0.75 41.3 -40.5
30600 756.2 0 89.9 9.0 12 45 33.8 0.76 41.8 -40.9
30700 765.4 0 90.8 9.5 11 48 34.5 0.76 42.2 -41.3
30800 775.3 0 91.7 10.3 10 51 35.2 0.77 42.7 -41.7
30900 785.9 0 92.7 11.1 9 56 36.1 0.77 43.2 -42.2
31000 797.6 0 93.8 12.3 9 62 37.0 0.77 43.7 -42.6
31100 810.6 0 95.0 14.0 8 71 38.1 0.78 44.0 -43.1
31200 825.5 0 96.3 15.9 7 81 39.4 0.78 44.4 -43.5
31300 842.4 0 97.9 19.8 6 101 41.0 0.79 44.7 -43.8
31400 865.0 0 99.9 33.3 3 171 43.3 0.80 44.9 -44.1
31500 909.1 0 103.8 39.5 2 180 48.3 0.81 45.0 -44.4
31588 943.9 0 106.0 32.8 2 180 50.0 0.81 45.1 -44.6
31500 974.6 0 109.5 23.2 6 90 58.3 0.82 45.2 -44.7
31400 990.3 0 110.8 13.7 8 71 61.1 0.83 45.3 -44.7
31300 1001.9 0 111.8 10.7 10 56 63.4 0.83 45.4 -44.8
31200 1011.7 0 112.6 9.3 11 48 65.4 0.84 45.5 -44.9
31100 1020.4 0 113.3 8.2 13 43 67.2 0.84 45.6 -45.0
31000 1028.1 0 113.9 7.4 14 39 69.0 0.84 45.6 -45.0
30900 1035.2 0 114.5 6.9 15 36 70.6 0.85 45.6 -45.1
30800 1041.8 0 115.0 6.4 16 33 72.2 0.85 45.6 -45.2
30700 1047.9 0 115.5 5.8 17 31 73.7 0.86 45.7 -45.2
30600 1053.5 0 116.0 5.5 19 29 75.1 0.86 45.8 -45.2
30500 1058.9 0 116.4 5.2 20 27 76.5 0.86 45.9 -45.1
30400 1063.9 0 116.8 5.0 21 26 77.8 0.87 46.0 -45.1
30300 1068.8 0 117.2 4.8 22 25 79.3 0.87 46.2 -45.1
30200 1073.4 0 117.5 4.5 23 24 80.6 0.87 46.2 -45.0
30100 1077.9 0 117.9 4.3 24 23 81.8 0.88 46.2 -45.0
30000 1082.0 0 118.2 4.0 25 22 82.5 0.88 46.1 -45.0
29900 1086.0 0 118.5 3.9 26 21 82.9 0.89 46.1 -45.0
29800 1089.8 0 118.8 3.8 27 20 83.1 0.89 46.1 -45.0
29700 1093.5 0 119.0 3.6 28 19 83.2 0.89 46.0 -44.9
29600 1097.1 0 119.3 3.5 29 19 83.3 0.90 46.0 -44.9
29500 1100.6 0 119.5 3.5 29 18 83.4 0.90 46.0 -44.9
29400 1104.1 0 119.8 3.4 30 18 83.5 0.90 45.9 -44.8
29300 1107.4 0 120.0 3.4 30 18 83.7 0.91 45.9 -44.8
29200 1110.8 0 120.2 3.3 31 17 83.9 0.91 45.8 -44.8
29100 1114.0 0 120.5 3.2 31 17 84.3 0.92 45.7 -44.7
29000 1117.2 0 120.7 3.2 32 17 84.7 0.92 45.6 -44.7
28900 1120.4 0 120.9 3.2 32 17 85.1 0.92 45.6 -44.7
28800 1123.5 0 121.1 3.0 33 16 85.6 0.93 45.5 -44.6
28700 1126.5 0 121.3 3.0 34 16 85.9 0.93 45.4 -44.5
28600 1129.5 0 121.5 3.0 34 16 86.1 0.94 45.3 -44.4
28500 1132.4 0 121.7 2.9 35 15 86.3 0.94 45.3 -44.3
28400 1135.3 0 121.9 2.8 36 15 86.5 0.94 45.2 -44.2
28300 1138.1 0 122.1 2.8 36 15 86.7 0.95 44.9 -44.1
28200 1140.9 0 122.3 2.8 37 15 86.9 0.95 44.6 -44.0
28100 1143.7 0 122.5 2.8 37 14 87.2 0.96 44.3 -44.0
28000 1146.4 0 122.7 2.7 38 14 87.5 0.96 44.1 -43.9
27900 1149.0 0 122.9 2.6 38 14 87.8 0.96 43.9 -43.8
27800 1151.6 0 123.0 2.6 39 14 88.1 0.97 43.7 -43.8
27700 1154.2 0 123.2 2.6 39 14 88.5 0.97 43.5 -43.6
27600 1156.8 0 123.4 2.6 40 13 88.8 0.98 43.3 -43.3
27500 1159.3 0 123.5 2.5 41 13 89.0 0.98 43.1 -43.0
27400 1161.8 0 123.7 2.4 41 13 89.3 0.99 42.9 -42.7
27300 1164.2 0 123.9 2.4 42 13 89.6 0.99 42.8 -42.3
27200 1166.6 0 124.0 2.4 42 13 89.8 1.00 42.5 -42.0
27100 1169.0 0 124.2 2.4 43 13 90.0 1.00 42.4 -41.8
27000 1171.4 0 124.3 2.3 43 12 90.2 1.00 42.2 -41.6
26900 1173.7 0 124.5 2.3 44 12 90.4 1.01 42.0 -41.4
26800 1176.0 0 124.6 2.3 44 12 90.6 1.01 41.9 -41.3
26700 1178.3 0 124.8 2.3 44 12 90.7 1.02 41.6 -41.2
26600 1180.6 0 124.9 2.3 45 12 90.9 1.02 41.6 -41.0
26500 1182.8 0 125.1 2.3 45 12 91.0 1.03 41.4 -40.9
26400 1185.1 0 125.2 2.3 45 12 91.1 1.03 41.3 -40.9
26300 1187.3 0 125.4 2.2 46 12 91.3 1.04 41.3 -40.8
26200 1189.5 0 125.5 2.2 46 12 91.5 1.04 41.2 -40.7
26100 1191.7 0 125.6 2.2 46 12 91.6 1.05 41.0 -40.7
26000 1193.9 0 125.8 2.2 46 12 91.7 1.05 40.9 -40.7
25900 1196.1 0 125.9 2.2 46 12 91.9 1.06 40.7 -40.7
25800 1198.3 0 126.0 2.2 46 11 92.0 1.06 40.7 -40.7
25700 1200.4 0 126.2 2.1 46 11 92.1 1.07 40.6 -40.6
25600 1202.6 0 126.3 2.2 46 11 92.3 1.07 40.5 -40.6
25500 1204.8 0 126.4 2.2 47 11 92.4 1.08 40.4 -40.6
25400 1207.0 0 126.5 2.1 47 11 92.5 1.08 40.4 -40.6
25300 1209.1 0 126.6 2.2 47 11 92.6 1.09 40.3 -40.6
25200 1211.3 0 126.8 2.2 47 11 92.7 1.09 40.1 -40.6
25100 1213.4 0 126.9 2.1 47 11 92.8 1.10 40.1 -40.5
25000 1215.6 0 127.0 2.1 47 11 92.8 1.10 40.0 -40.5
24900 1217.7 0 127.1 2.2 47 11 92.8 1.11 39.9 -40.4
24800 1219.9 0 127.2 2.2 47 11 92.8 1.11 39.8 -40.4
24700 1222.0 0 127.3 2.1 47 11 92.7 1.11 39.7 -40.3
24600 1224.1 0 127.5 2.1 48 11 92.6 1.12 39.7 -39.9
24500 1226.2 0 127.6 2.1 48 11 92.6 1.12 39.6 -39.4
24400 1228.3 0 127.7 2.1 48 11 92.5 1.13 39.5 -39.1
24300 1230.4 0 127.8 2.1 48 11 92.5 1.13 39.4 -38.8
24200 1232.5 0 127.9 2.1 49 11 92.5 1.14 39.3 -38.7
24100 1234.6 0 128.0 2.0 49 11 92.4 1.14 39.2 -38.5
24000 1236.6 0 128.1 2.0 49 11 92.5 1.15 39.1 -38.4
23900 1238.7 0 128.2 2.0 49 11 92.5 1.15 39.0 -38.3
23800 1240.7 0 128.3 2.0 50 11 92.5 1.16 38.8 -38.2
23700 1242.7 0 128.4 2.1 50 11 92.5 1.16 38.8 -38.1
23600 1244.8 0 128.5 2.1 50 10 92.5 1.17 38.5 -38.0
23500 1246.8 0 128.6 2.0 50 10 92.5 1.17 38.2 -37.9
23400 1248.8 0 128.7 2.0 50 10 92.6 1.18 37.8 -37.7
23300 1250.8 0 128.8 2.0 51 10 92.6 1.19 37.3 -37.6
23200 1252.8 0 128.9 2.0 51 10 92.7 1.19 36.9 -37.4
23100 1254.8 0 129.0 1.9 51 10 92.7 1.20 36.4 -37.3
23000 1256.7 0 129.1 1.9 51 10 92.7 1.20 36.1 -37.2
}
} Ende Spaltengruppe
} Ende Standard_Tafel
} Ende Schuss_Tafel
@@ -0,0 +1,580 @@
###########################################################################
# #
# Projekt TES : File "HE-M1-M64Base-TableE.sus" zur Munition "M64" #
# #
# Bei der Auspraegung des Ballistik-Moduls vereinbarte Bezeichnungen #
# Tafel_Namen : ENTFERNUNG, AUFSATZ, FLUGZEIT, -- obligatorisch #
# VORHALT -- projektspezifisch #
# Param_Namen : DELTA_V0, LUFTTEMP, LUFTDRUCK, #
# LAENGSWIND, QUERWIND, #
# PULVERTEMP -- Korrektur-Parameter #
# #
###########################################################################
# Aenderung/Stand: 09.07.14-07:52
Schuss_Tafel =
{
Munition = "HE-M1-M64"
Version = "HE M64 Base Table-E"
Muni_Parameter = { Kaliber = 155.0 Masse = 46.30 V0 = 912.0 }
Std_Parameter = { DELTA_V0 = 0.0
LUFTTEMP = 15.0
LUFTDRUCK = 1013.25
LAENGSWIND= 0.0
QUERWIND = 0.0
PULVERTEMP= 21.1 }
Entfernung_Range= { Min = 100.0 Max = 12100.0 Delta = 100.0 Scheitel = 12228.0 }
Ballistik = "Parabel"
###########################################################################
Standard_Tafel =
{
Spaltengruppe =
{ Belegung = { AUFSATZ = (2) [-]
VORHALT = (3) [-]
FLUGZEIT = (4)
DELTA_RGE = (5) [-]
DELTA_ELEV = (6)
FORK = (7) [-]
DRIFT = (8) [-]
}
Zeilenlaenge = 8
Datenblock =
{
#
# RGE ELEV TOF DELTA DELTA FORK BEARING-CORR. RANGE-CORR.
# ENTF AUFSATZ VORHALT FLUGZEIT RGE ELEV DRIFT CW DEC INC
# [m] [mil] [mil] [sec] [mil] [m] [mil] [mil] [mil] [m] [m]
#
100 0.6 0 0.1 0.6 167 1 0.0 0.00 0.2 -0.1
200 1.2 0 0.2 0.6 166 1 0.1 0.00 0.3 -0.3
300 1.8 0 0.3 0.6 165 1 0.1 0.00 0.6 -0.4
400 2.4 0 0.4 0.6 165 1 0.1 0.00 0.7 -0.7
500 3.0 0 0.6 0.6 164 1 0.1 0.00 0.9 -0.8
600 3.6 0 0.7 0.7 163 1 0.1 0.00 1.0 -1.0
700 4.3 0 0.8 0.7 162 1 0.2 0.00 1.2 -1.1
800 4.9 0 0.9 0.6 161 1 0.2 0.00 1.4 -1.3
900 5.5 0 1.0 0.6 160 1 0.2 0.00 1.6 -1.4
1000 6.1 0 1.1 0.7 160 1 0.2 0.00 1.8 -1.6
1100 6.8 0 1.2 0.7 159 1 0.3 0.00 1.9 -1.7
1200 7.4 0 1.4 0.6 158 1 0.3 0.01 2.1 -1.9
1300 8.0 0 1.5 0.6 157 1 0.3 0.01 2.2 -2.0
1400 8.7 0 1.6 0.7 156 1 0.3 0.01 2.4 -2.2
1500 9.3 0 1.7 0.7 156 1 0.4 0.01 2.6 -2.3
1600 10.0 0 1.8 0.7 155 1 0.4 0.01 2.8 -2.5
1700 10.6 0 1.9 0.7 154 1 0.4 0.01 3.0 -2.6
1800 11.3 0 2.1 0.6 153 1 0.5 0.01 3.1 -2.8
1900 11.9 0 2.2 0.7 153 1 0.5 0.01 3.3 -2.9
2000 12.6 0 2.3 0.7 152 1 0.5 0.01 3.5 -3.1
2100 13.2 0 2.4 0.6 151 1 0.5 0.02 3.6 -3.2
2200 13.9 0 2.5 0.7 150 1 0.6 0.02 3.8 -3.4
2300 14.6 0 2.6 0.7 149 1 0.6 0.02 3.9 -3.5
2400 15.2 0 2.8 0.6 149 1 0.6 0.02 4.1 -3.7
2500 15.9 0 2.9 0.7 148 1 0.6 0.02 4.3 -3.8
2600 16.6 0 3.0 0.7 147 1 0.7 0.02 4.4 -4.0
2700 17.3 0 3.1 0.7 146 1 0.7 0.02 4.6 -4.1
2800 18.0 0 3.3 0.7 146 1 0.7 0.02 4.7 -4.2
2900 18.7 0 3.4 0.7 145 1 0.7 0.03 4.9 -4.4
3000 19.4 0 3.5 0.7 144 1 0.8 0.03 5.1 -4.5
3100 20.1 0 3.6 0.7 143 1 0.8 0.03 5.2 -4.7
3200 20.8 0 3.7 0.7 143 1 0.8 0.03 5.4 -4.8
3300 21.5 0 3.9 0.7 142 1 0.9 0.03 5.5 -4.9
3400 22.2 0 4.0 0.7 141 1 0.9 0.03 5.7 -5.1
3500 22.9 0 4.1 0.7 140 1 0.9 0.03 5.9 -5.2
3600 23.6 0 4.2 0.7 140 1 0.9 0.03 6.0 -5.4
3700 24.3 0 4.4 0.7 139 1 1.0 0.03 6.2 -5.5
3800 25.0 0 4.5 0.8 138 1 1.0 0.04 6.3 -5.7
3900 25.8 0 4.6 0.8 138 1 1.0 0.04 6.4 -5.8
4000 26.5 0 4.8 0.7 137 1 1.1 0.04 6.6 -6.0
4100 27.2 0 4.9 0.8 136 1 1.1 0.04 6.7 -6.0
4200 28.0 0 5.0 0.8 135 1 1.1 0.04 6.9 -6.2
4300 28.7 0 5.1 0.8 135 1 1.1 0.04 7.1 -6.3
4400 29.5 0 5.3 0.8 134 1 1.2 0.04 7.2 -6.5
4500 30.2 0 5.4 0.8 133 1 1.2 0.04 7.3 -6.6
4600 31.0 0 5.5 0.8 133 1 1.2 0.05 7.5 -6.7
4700 31.7 0 5.7 0.8 132 1 1.3 0.05 7.6 -6.9
4800 32.5 0 5.8 0.8 131 1 1.3 0.05 7.8 -7.0
4900 33.3 0 5.9 0.8 131 1 1.3 0.05 7.9 -7.2
5000 34.0 0 6.1 0.8 130 1 1.3 0.05 8.1 -7.2
5100 34.8 0 6.2 0.8 129 1 1.4 0.05 8.2 -7.4
5200 35.6 0 6.3 0.8 128 1 1.4 0.05 8.4 -7.5
5300 36.4 0 6.5 0.8 128 1 1.4 0.05 8.5 -7.7
5400 37.2 0 6.6 0.8 127 1 1.5 0.06 8.7 -7.8
5500 38.0 0 6.7 0.8 126 1 1.5 0.06 8.8 -7.9
5600 38.7 0 6.9 0.8 126 1 1.5 0.06 8.9 -8.1
5700 39.5 0 7.0 0.9 125 1 1.6 0.06 9.1 -8.1
5800 40.4 0 7.1 0.9 124 2 1.6 0.06 9.2 -8.3
5900 41.2 0 7.3 0.8 124 2 1.6 0.06 9.4 -8.4
6000 42.0 0 7.4 0.8 123 2 1.6 0.06 9.5 -8.6
6100 42.8 0 7.6 0.8 122 2 1.7 0.06 9.6 -8.6
6200 43.6 0 7.7 0.8 122 2 1.7 0.07 9.8 -8.8
6300 44.4 0 7.8 0.9 121 2 1.7 0.07 9.9 -8.9
6400 45.3 0 8.0 0.8 120 2 1.8 0.07 10.0 -9.0
6500 46.1 0 8.1 0.9 120 2 1.8 0.07 10.2 -9.2
6600 47.0 0 8.3 0.9 119 2 1.8 0.07 10.4 -9.3
6700 47.8 0 8.4 0.9 118 2 1.9 0.07 10.4 -9.4
6800 48.7 0 8.5 0.9 118 2 1.9 0.07 10.6 -9.5
6900 49.5 0 8.7 0.9 117 2 1.9 0.08 10.8 -9.6
7000 50.4 0 8.8 0.9 117 2 2.0 0.08 10.8 -9.8
7100 51.2 0 9.0 0.8 116 2 2.0 0.08 11.0 -9.9
7200 52.1 0 9.1 0.9 115 2 2.0 0.08 11.1 -10.0
7300 53.0 0 9.3 0.9 115 2 2.1 0.08 11.2 -10.1
7400 53.8 0 9.4 0.9 114 2 2.1 0.08 11.4 -10.2
7500 54.7 0 9.6 0.9 113 2 2.1 0.08 11.5 -10.4
7600 55.6 0 9.7 0.9 113 2 2.2 0.08 11.6 -10.4
7700 56.5 0 9.9 0.9 112 2 2.2 0.09 11.8 -10.6
7800 57.4 0 10.0 0.9 112 2 2.2 0.09 11.9 -10.7
7900 58.3 0 10.2 0.9 111 2 2.3 0.09 12.0 -10.8
8000 59.2 0 10.3 0.9 110 2 2.3 0.09 12.1 -11.0
8100 60.1 0 10.5 0.9 110 2 2.3 0.09 12.3 -11.0
8200 61.1 0 10.6 1.0 109 2 2.4 0.09 12.4 -11.2
8300 62.0 0 10.8 0.9 109 2 2.4 0.09 12.5 -11.3
8400 62.9 0 10.9 0.9 108 2 2.4 0.10 12.7 -11.4
8500 63.8 0 11.1 1.0 107 2 2.5 0.10 12.8 -11.5
8600 64.8 0 11.2 0.9 107 2 2.5 0.10 12.9 -11.6
8700 65.7 0 11.4 0.9 106 2 2.5 0.10 13.0 -11.7
8800 66.7 0 11.5 1.0 106 2 2.6 0.10 13.2 -11.9
8900 67.6 0 11.7 1.0 105 2 2.6 0.10 13.2 -11.9
9000 68.6 0 11.8 1.0 104 2 2.6 0.10 13.4 -12.1
9100 69.5 0 12.0 1.0 104 2 2.7 0.11 13.6 -12.2
9200 70.5 0 12.2 1.0 103 2 2.7 0.11 13.6 -12.3
9300 71.5 0 12.3 1.0 103 2 2.7 0.11 13.8 -12.4
9400 72.5 0 12.5 1.0 102 2 2.8 0.11 13.9 -12.5
9500 73.5 0 12.6 1.0 102 2 2.8 0.11 14.1 -12.6
9600 74.5 0 12.8 1.0 101 2 2.8 0.11 14.1 -12.7
9700 75.4 0 13.0 1.0 100 2 2.9 0.11 14.3 -12.8
9800 76.5 0 13.1 1.0 100 2 2.9 0.12 14.4 -13.0
9900 77.5 0 13.3 1.0 99 2 2.9 0.12 14.5 -13.0
10000 78.5 0 13.5 1.0 99 2 3.0 0.12 14.6 -13.1
10100 79.5 0 13.6 1.0 98 2 3.0 0.12 14.8 -13.3
10200 80.5 0 13.8 1.0 97 2 3.1 0.12 14.9 -13.3
10300 81.6 0 14.0 1.0 97 2 3.1 0.12 15.0 -13.5
10400 82.6 0 14.1 1.0 96 2 3.1 0.13 15.1 -13.6
10500 83.7 0 14.3 1.0 96 2 3.2 0.13 15.3 -13.7
10600 84.7 0 14.5 1.1 95 2 3.2 0.13 15.3 -13.8
10700 85.8 0 14.6 1.1 95 2 3.2 0.13 15.5 -13.9
10800 86.8 0 14.8 1.0 94 2 3.3 0.13 15.6 -14.0
10900 87.9 0 15.0 1.1 94 2 3.3 0.13 15.7 -14.2
11000 89.0 0 15.1 1.1 93 2 3.3 0.13 15.8 -14.2
11100 90.1 0 15.3 1.1 92 2 3.4 0.14 16.0 -14.4
11200 91.2 0 15.5 1.1 92 2 3.4 0.14 16.1 -14.5
11300 92.3 0 15.7 1.1 91 2 3.5 0.14 16.2 -14.6
11400 93.4 0 15.8 1.1 91 2 3.5 0.14 16.3 -14.7
11500 94.5 0 16.0 1.1 90 2 3.5 0.14 16.5 -14.8
11600 95.6 0 16.2 1.1 90 2 3.6 0.14 16.5 -14.9
11700 96.7 0 16.4 1.1 89 2 3.6 0.15 16.7 -15.0
11800 97.8 0 16.5 1.2 89 2 3.7 0.15 16.8 -15.1
11900 99.0 0 16.7 1.1 88 2 3.7 0.15 16.9 -15.2
12000 100.1 0 16.9 1.2 88 2 3.7 0.15 17.0 -15.3
12100 101.3 0 17.1 1.2 87 2 3.8 0.15 17.1 -15.4
12200 102.4 0 17.3 1.1 86 2 3.8 0.15 17.3 -15.5
12300 103.6 0 17.5 1.2 86 2 3.8 0.16 17.3 -15.7
12400 104.8 0 17.6 1.2 85 2 3.9 0.16 17.4 -15.7
12500 106.0 0 17.8 1.1 85 2 3.9 0.16 17.6 -15.9
12600 107.1 0 18.0 1.2 84 2 4.0 0.16 17.7 -16.0
12700 108.3 0 18.2 1.2 84 2 4.0 0.16 17.8 -16.1
12800 109.5 0 18.4 1.3 83 2 4.0 0.16 17.9 -16.2
12900 110.8 0 18.6 1.3 83 2 4.1 0.17 18.1 -16.3
13000 112.0 0 18.8 1.2 82 2 4.1 0.17 18.1 -16.4
13100 113.2 0 19.0 1.2 82 2 4.2 0.17 18.2 -16.5
13200 114.4 0 19.1 1.3 81 2 4.2 0.17 18.4 -16.6
13300 115.7 0 19.3 1.3 81 2 4.2 0.17 18.5 -16.7
13400 116.9 0 19.5 1.3 80 2 4.3 0.18 18.6 -16.8
13500 118.2 0 19.7 1.3 80 2 4.3 0.18 18.7 -16.9
13600 119.4 0 19.9 1.3 79 2 4.4 0.18 18.8 -17.0
13700 120.7 0 20.1 1.3 79 2 4.4 0.18 18.9 -17.1
13800 122.0 0 20.3 1.3 78 2 4.5 0.18 19.0 -17.2
13900 123.3 0 20.5 1.3 78 2 4.5 0.18 19.2 -17.3
14000 124.6 0 20.7 1.3 77 3 4.5 0.19 19.3 -17.4
14100 125.9 0 20.9 1.3 77 3 4.6 0.19 19.4 -17.5
14200 127.2 0 21.1 1.3 77 3 4.6 0.19 19.5 -17.6
14300 128.5 0 21.3 1.3 76 3 4.7 0.19 19.6 -17.7
14400 129.8 0 21.5 1.3 76 3 4.7 0.19 19.7 -17.8
14500 131.2 0 21.7 1.3 75 3 4.8 0.20 19.8 -17.9
14600 132.5 0 21.9 1.3 75 3 4.8 0.20 19.9 -18.0
14700 133.9 0 22.1 1.3 74 3 4.8 0.20 20.0 -18.1
14800 135.2 0 22.3 1.4 74 3 4.9 0.20 20.2 -18.2
14900 136.6 0 22.5 1.4 73 3 4.9 0.20 20.2 -18.3
15000 138.0 0 22.7 1.4 73 3 5.0 0.20 20.3 -18.3
15100 139.4 0 22.9 1.4 72 3 5.0 0.21 20.4 -18.5
15200 140.8 0 23.2 1.4 72 3 5.1 0.21 20.6 -18.6
15300 142.2 0 23.4 1.4 72 3 5.1 0.21 20.6 -18.7
15400 143.6 0 23.6 1.4 71 3 5.1 0.21 20.7 -18.8
15500 145.0 0 23.8 1.4 71 3 5.2 0.21 20.8 -18.9
15600 146.4 0 24.0 1.4 70 3 5.2 0.22 21.0 -19.0
15700 147.9 0 24.2 1.5 70 3 5.3 0.22 21.0 -19.1
15800 149.3 0 24.4 1.5 69 3 5.3 0.22 21.1 -19.2
15900 150.8 0 24.7 1.4 69 3 5.4 0.22 21.3 -19.3
16000 152.2 0 24.9 1.4 69 3 5.4 0.22 21.4 -19.4
16100 153.7 0 25.1 1.5 68 3 5.5 0.23 21.5 -19.5
16200 155.2 0 25.3 1.5 68 3 5.5 0.23 21.6 -19.6
16300 156.7 0 25.5 1.5 67 3 5.6 0.23 21.8 -19.8
16400 158.2 0 25.7 1.5 67 3 5.6 0.23 21.8 -19.8
16500 159.7 0 26.0 1.5 67 3 5.6 0.23 22.0 -20.0
16600 161.2 0 26.2 1.5 66 3 5.7 0.24 22.1 -20.1
16700 162.7 0 26.4 1.6 66 3 5.7 0.24 22.2 -20.1
16800 164.3 0 26.6 1.6 65 3 5.8 0.24 22.3 -20.3
16900 165.8 0 26.9 1.5 65 3 5.8 0.24 22.5 -20.4
17000 167.3 0 27.1 1.5 65 3 5.9 0.24 22.6 -20.5
17100 168.9 0 27.3 1.6 64 3 5.9 0.24 22.7 -20.7
17200 170.5 0 27.6 1.6 64 3 6.0 0.25 22.9 -20.7
17300 172.1 0 27.8 1.6 64 3 6.0 0.25 23.0 -20.9
17400 173.6 0 28.0 1.5 63 3 6.1 0.25 23.1 -20.9
17500 175.2 0 28.2 1.6 63 3 6.1 0.25 23.2 -21.1
17600 176.9 0 28.5 1.7 63 4 6.2 0.25 23.4 -21.2
17700 200.3 0 28.7 62 1.3 4 6.2 0.26 23.4 -21.3
17800 201.6 0 28.9 62 1.3 4 6.3 0.26 23.6 -21.4
17900 202.9 0 29.2 61 1.5 4 6.3 0.26 23.7 -21.5
18000 204.4 0 29.4 61 1.3 4 6.3 0.26 23.8 -21.6
18100 205.7 0 29.7 61 1.5 4 6.4 0.26 23.8 -21.7
18200 207.2 0 29.9 60 1.4 4 6.4 0.27 23.9 -21.8
18300 208.6 0 30.1 60 1.5 4 6.5 0.27 24.0 -21.8
18400 210.1 0 30.4 60 1.3 4 6.5 0.27 24.2 -21.9
18500 211.4 0 30.6 59 1.6 4 6.6 0.27 24.2 -22.0
18600 213 0 30.9 59 1.4 4 6.6 0.27 24.3 -22.1
18700 214.4 0 31.1 59 1.5 4 6.7 0.28 24.4 -22.1
18800 215.9 0 31.4 58 1.5 4 6.7 0.28 24.6 -22.2
18900 217.4 0 31.6 58 1.5 4 6.8 0.28 24.6 -22.4
19000 218.9 0 31.8 58 1.5 4 6.8 0.28 24.7 -22.4
19100 220.4 0 32.1 57 1.6 4 6.9 0.28 24.9 -22.6
19200 222 0 32.3 57 1.4 4 6.9 0.29 25.0 -22.7
19300 223.4 0 32.6 57 1.6 4 7.0 0.29 25.1 -22.7
19400 225 0 32.8 57 1.6 4 7.0 0.29 25.2 -22.9
19500 226.6 0 33.1 56 1.6 4 7.1 0.29 25.4 -23.0
19600 228.2 0 33.3 56 1.6 4 7.1 0.29 25.5 -23.1
19700 229.8 0 33.6 56 1.5 4 7.2 0.30 25.6 -23.2
19800 231.3 0 33.8 56 1.6 4 7.2 0.30 25.7 -23.3
19900 232.9 0 34.1 55 1.7 5 7.3 0.30 25.9 -23.4
20000 234.6 0 34.4 55 1.6 5 7.3 0.30 25.9 -23.5
20100 236.2 0 34.6 55 1.7 5 7.4 0.30 26.1 -23.6
20200 237.9 0 34.9 54 1.6 5 7.4 0.31 26.2 -23.7
20300 239.5 0 35.1 54 1.7 5 7.5 0.31 26.3 -23.8
20400 241.2 0 35.4 54 1.7 5 7.5 0.31 26.4 -23.9
20500 242.9 0 35.7 53 1.7 5 7.6 0.31 26.6 -24.1
20600 244.6 0 35.9 53 1.7 5 7.6 0.31 26.7 -24.3
20700 246.3 0 36.2 53 1.7 5 7.7 0.32 26.8 -24.5
20800 248 0 36.4 53 1.7 5 7.7 0.32 27.0 -24.7
20900 249.7 0 36.7 52 1.9 5 7.8 0.32 27.1 -24.8
21000 251.6 0 37.0 52 1.7 5 7.8 0.32 27.2 -25.0
21100 253.3 0 37.2 52 1.8 5 7.9 0.32 27.3 -25.2
21200 255.1 0 37.5 52 1.7 5 7.9 0.33 27.5 -25.3
21300 256.8 0 37.8 51 1.8 5 8.0 0.33 27.5 -25.3
21400 258.6 0 38.0 51 1.9 5 8.0 0.33 27.6 -25.1
21500 260.5 0 38.3 51 1.7 5 8.1 0.33 27.7 -25.4
21600 262.2 0 38.6 51 1.8 5 8.1 0.33 27.8 -25.5
21700 264.01 0 38.8 51 1.8 5 8.2 0.34 27.9 -25.5
21800 265.8 0 39.1 50 2.0 6 8.2 0.34 28.0 -25.6
21900 267.8 0 39.4 50 1.8 6 8.3 0.34 28.2 -25.6
22000 269.6 0 39.7 50 1.9 6 8.4 0.34 28.4 -25.7
22100 271.5 0 39.9 50 1.8 6 8.4 0.34 28.6 -25.9
22200 273.3 0 40.2 49 1.9 6 8.5 0.35 28.8 -26.1
22300 275.2 0 40.5 49 1.9 6 8.5 0.35 29.1 -26.3
22400 277.1 0 40.8 49 1.9 6 8.6 0.35 29.2 -26.5
22500 279 0 41.0 49 2.0 6 8.6 0.35 29.4 -26.7
22600 281 0 41.3 48 1.9 6 8.7 0.35 29.6 -26.8
22700 282.9 0 41.6 48 2.0 6 8.7 0.35 29.6 -27.0
22800 284.9 0 41.9 48 1.9 6 8.8 0.36 29.7 -27.1
22900 286.8 0 42.2 48 2.0 6 8.8 0.36 29.8 -27.1
23000 288.8 0 42.4 48 1.9 6 8.9 0.36 29.8 -27.1
23100 290.7 0 42.7 47 2.1 6 8.9 0.36 29.9 -27.1
23200 292.8 0 43.0 47 2.0 7 9.0 0.36 29.9 -27.2
23300 294.8 0 43.3 47 2.0 7 9.1 0.37 29.9 -27.3
23400 296.8 0 43.6 47 2.0 7 9.1 0.37 30.2 -27.4
23500 298.8 0 43.9 47 2.1 7 9.2 0.37 30.4 -27.5
23600 300.9 0 44.2 47 2.0 7 9.2 0.37 30.6 -27.7
23700 302.9 0 44.4 46 2.1 7 9.3 0.37 30.8 -28.0
23800 305 0 44.7 46 2.1 7 9.3 0.37 31.1 -28.1
23900 307.1 0 45.0 46 2.0 7 9.4 0.38 31.3 -28.3
24000 309.1 0 45.3 46 2.1 7 9.4 0.38 31.5 -28.5
24100 311.2 0 45.6 46 2.1 7 9.5 0.38 31.6 -28.6
24200 313.3 0 45.9 45 2.1 7 9.5 0.38 31.6 -28.7
24300 315.4 0 46.2 45 2.1 7 9.6 0.38 31.6 -28.7
24400 317.5 0 46.5 45 2.1 7 9.7 0.39 31.6 -28.7
24500 319.6 0 46.8 45 2.2 7 9.7 0.39 31.6 -28.7
24600 321.8 0 47.1 45 2.2 8 9.8 0.39 31.6 -28.8
24700 324 0 47.4 44 2.1 8 9.8 0.39 31.7 -28.8
24800 326.1 0 47.6 44 2.2 8 9.9 0.39 32.0 -28.9
24900 328.3 0 47.9 44 2.1 8 9.9 0.39 32.1 -29.1
25000 330.4 0 48.2 44 2.3 8 10.0 0.40 32.4 -29.3
25100 332.7 0 48.5 44 2.2 8 10.1 0.40 32.6 -29.5
25200 334.9 0 48.8 44 2.2 8 10.1 0.40 32.8 -29.8
25300 337.1 0 49.1 43 2.2 8 10.2 0.40 33.1 -30.0
25400 339.3 0 49.4 43 2.3 8 10.2 0.40 33.3 -30.3
25500 341.6 0 49.7 43 2.2 8 10.3 0.40 33.5 -30.4
25600 343.8 0 50.0 43 2.3 8 10.3 0.41 33.7 -30.6
25700 346.1 0 50.3 43 2.2 8 10.4 0.41 33.9 -30.8
25800 348.3 0 50.6 43 2.3 9 10.5 0.41 34.0 -30.9
25900 350.6 0 51.0 43 2.3 9 10.5 0.41 34.2 -31.1
26000 352.9 0 51.3 42 2.3 9 10.6 0.41 34.3 -31.2
26100 355.2 0 51.6 42 2.2 9 10.6 0.41 34.3 -31.3
26200 357.4 0 51.9 42 2.4 9 10.7 0.42 34.4 -31.3
26300 359.8 0 52.2 42 2.3 9 10.8 0.42 34.4 -31.4
26400 362.1 0 52.5 42 2.3 9 10.8 0.42 34.4 -31.4
26500 364.4 0 52.8 42 2.4 9 10.9 0.42 34.4 -31.5
26600 366.8 0 53.1 41 2.4 9 10.9 0.42 34.6 -31.5
26700 369.2 0 53.4 41 2.3 9 11.0 0.42 34.8 -31.7
26800 371.5 0 53.7 41 2.4 10 11.1 0.43 35.1 -31.9
26900 373.9 0 54.0 41 2.4 10 11.1 0.43 35.4 -32.1
27000 376.3 0 54.3 41 2.4 10 11.2 0.43 35.6 -32.4
27100 378.7 0 54.7 41 2.3 10 11.3 0.43 36.0 -32.7
27200 381 0 55.0 41 2.5 10 11.3 0.43 36.2 -32.9
27300 383.5 0 55.3 41 2.4 10 11.4 0.43 36.4 -33.1
27400 385.9 0 55.6 40 2.4 10 11.5 0.44 36.6 -33.2
27500 388.3 0 55.9 40 2.5 10 11.5 0.44 36.8 -33.4
27600 390.8 0 56.2 40 2.5 10 11.6 0.44 36.9 -33.5
27700 393.3 0 56.5 40 2.4 11 11.6 0.44 37.1 -33.8
27800 395.7 0 56.9 40 2.5 11 11.7 0.44 37.3 -33.9
27900 398.2 0 57.2 40 2.4 11 11.8 0.44 37.4 -34.1
28000 400.6 0 57.5 40 2.6 11 11.8 0.44 37.7 -34.2
28100 403.2 0 57.8 39 2.5 11 11.9 0.45 37.8 -34.4
28200 405.7 0 58.1 39 2.4 11 12.0 0.45 38.1 -34.7
28300 408.1 0 58.5 39 2.6 11 12.0 0.45 38.2 -34.8
28400 410.7 0 58.8 39 2.5 11 12.1 0.45 38.5 -35.0
28500 413.2 0 59.1 39 2.5 11 12.2 0.45 38.7 -35.2
28600 415.7 0 59.4 39 2.5 11 12.3 0.45 38.9 -35.3
28700 418.2 0 59.8 39 2.6 12 12.3 0.46 39.2 -35.5
28800 420.8 0 60.1 39 2.5 12 12.4 0.46 39.4 -35.6
28900 423.3 0 60.4 39 2.7 12 12.5 0.46 39.7 -35.8
29000 426 0 60.7 38 2.5 12 12.5 0.46 39.8 -35.9
29100 428.5 0 61.1 38 2.6 12 12.6 0.46 40.0 -36.1
29200 431.1 0 61.4 38 2.7 12 12.7 0.46 40.1 -36.3
29300 433.8 0 61.7 38 2.5 12 12.8 0.46 40.1 -36.5
29400 436.3 0 62.0 38 2.7 13 12.8 0.46 40.3 -36.7
29500 439 0 62.4 38 2.6 13 12.9 0.47 40.5 -36.8
29600 441.6 0 62.7 38 2.6 13 13.0 0.47 40.6 -37.1
29700 444.2 0 63.0 37 2.7 13 13.1 0.47 40.9 -37.3
29800 446.9 0 63.4 37 2.7 13 13.1 0.47 41.0 -37.4
29900 449.6 0 63.7 37 2.7 13 13.2 0.47 41.3 -37.6
30000 452.3 0 64.0 37 2.6 13 13.3 0.47 41.5 -37.9
30100 454.9 0 64.4 37 2.8 13 13.4 0.47 41.8 -38.1
30200 457.7 0 64.7 37 2.6 14 13.4 0.48 42.0 -38.3
30300 460.3 0 65.1 37 2.8 14 13.5 0.48 42.2 -38.6
30400 463.1 0 65.4 37 2.7 14 13.6 0.48 42.5 -38.8
30500 465.8 0 65.7 36 2.8 14 13.7 0.48 42.7 -39.1
30600 468.6 0 66.1 36 2.7 14 13.8 0.48 43.0 -39.4
30700 471.3 0 66.4 36 2.7 14 13.8 0.48 43.4 -39.7
30800 474 0 66.8 36 2.7 14 13.9 0.48 43.8 -40.0
30900 476.7 0 67.1 36 2.9 14 14.0 0.48 44.2 -40.3
31000 479.6 0 67.4 36 2.8 15 14.1 0.49 44.6 -40.6
31100 482.4 0 67.8 36 2.7 15 14.2 0.49 45.0 -40.9
31200 485.1 0 68.1 36 2.8 15 14.3 0.49 45.4 -41.2
31300 487.9 0 68.5 36 2.8 15 14.3 0.49 45.6 -41.4
31400 490.7 0 68.8 36 2.8 15 14.4 0.49 45.9 -41.6
31500 493.5 0 69.2 35 2.8 15 14.5 0.49 46.1 -41.7
31600 496.3 0 69.5 35 2.9 15 14.6 0.49 46.3 -42.0
31700 499.2 0 69.9 35 2.9 16 14.7 0.49 46.4 -42.0
31800 502.1 0 70.2 35 2.8 16 14.8 0.49 46.5 -42.2
31900 504.9 0 70.6 35 2.9 16 14.9 0.50 46.5 -42.3
32000 507.8 0 70.9 35 2.9 16 15.0 0.50 46.6 -42.3
32100 510.7 0 71.3 34 2.9 16 15.1 0.50 46.6 -42.5
32200 513.6 0 71.6 34 3.0 17 15.2 0.50 46.7 -42.6
32300 516.6 0 72.0 34 2.9 17 15.2 0.50 47.0 -42.8
32400 519.5 0 72.3 34 2.9 17 15.3 0.50 47.2 -43.0
32500 522.4 0 72.7 34 3.0 17 15.4 0.50 47.5 -43.3
32600 525.4 0 73.0 34 2.9 17 15.5 0.50 47.9 -43.7
32700 528.3 0 73.4 34 3.1 17 15.6 0.50 48.3 -44.0
32800 531.4 0 73.8 34 3.0 17 15.7 0.51 48.7 -44.4
32900 534.4 0 74.1 34 2.9 18 15.8 0.51 49.1 -44.7
33000 537.3 0 74.5 33 3.1 18 15.9 0.51 49.5 -45.0
33100 540.4 0 74.8 33 3.0 18 16.0 0.51 50.0 -45.4
33200 543.4 0 75.2 33 3.0 18 16.2 0.51 50.3 -45.7
33300 546.4 0 75.6 33 3.1 18 16.3 0.51 50.7 -46.1
33400 549.5 0 75.9 33 3.1 19 16.4 0.51 51.0 -46.3
33500 552.6 0 76.3 33 3.0 19 16.5 0.51 51.3 -46.6
33600 555.6 0 76.7 33 3.1 19 16.6 0.51 51.6 -46.8
33700 558.7 0 77.0 32 3.2 19 16.7 0.51 51.9 -47.0
33800 561.9 0 77.4 32 3.1 19 16.8 0.52 52.2 -47.3
33900 565 0 77.8 32 3.1 20 16.9 0.52 52.5 -47.6
34000 568.1 0 78.2 32 3.2 20 17.0 0.52 52.8 -47.9
34100 571.3 0 78.5 32 3.2 20 17.2 0.52 53.2 -48.1
34200 574.5 0 78.9 32 3.1 20 17.3 0.52 53.4 -48.4
34300 577.6 0 79.3 31 3.2 20 17.4 0.52 53.7 -48.6
34400 580.8 0 79.7 31 3.3 21 17.5 0.52 54.0 -48.9
34500 584.1 0 80.1 31 3.2 21 17.6 0.52 54.3 -49.2
34600 587.3 0 80.4 31 3.2 21 17.8 0.52 54.7 -49.5
34700 590.5 0 80.8 31 3.3 21 17.9 0.52 55.1 -49.9
34800 593.8 0 81.2 31 3.4 22 18.0 0.52 55.5 -50.2
34900 597.2 0 81.6 31 3.3 22 18.2 0.52 56.0 -50.7
35000 600.5 0 82.0 30 3.4 22 18.3 0.53 56.3 -51.1
35100 603.9 0 82.4 30 3.2 22 18.4 0.53 56.5 -51.4
35200 607.1 0 82.8 30 3.4 23 18.6 0.53 56.8 -51.7
35300 610.5 0 83.2 30 3.5 23 18.7 0.53 57.0 -51.9
35400 614 0 83.6 30 3.4 23 18.8 0.53 57.2 -52.0
35500 617.4 0 84.0 29 3.5 23 19.0 0.53 57.5 -52.2
35600 620.9 0 84.4 29 3.5 24 19.1 0.53 57.8 -52.3
35700 624.4 0 84.8 29 3.4 24 19.3 0.53 58.1 -52.6
35800 627.8 0 85.2 29 3.6 24 19.4 0.53 58.5 -53.0
35900 631.4 0 85.6 29 3.5 25 19.6 0.53 58.9 -53.4
36000 634.9 0 86.0 28 3.6 25 19.7 0.53 59.3 -53.7
36100 638.5 0 86.4 28 3.7 25 19.9 0.53 59.7 -54.0
36200 642.2 0 86.8 28 3.6 26 20.1 0.53 60.1 -54.4
36300 645.8 0 87.2 28 3.6 26 20.2 0.54 60.5 -54.7
36400 649.4 0 87.7 27 3.8 26 20.4 0.54 60.9 -55.1
36500 653.2 0 88.1 27 3.7 27 20.6 0.54 61.2 -55.5
36600 656.9 0 88.5 27 3.8 27 20.7 0.54 61.6 -55.8
36700 660.7 0 89.0 27 3.9 27 20.9 0.54 62.0 -56.1
36800 664.6 0 89.4 26 3.8 28 21.1 0.54 62.4 -56.6
36900 668.4 0 89.8 26 4.0 28 21.3 0.54 62.8 -57.0
37000 672.4 0 90.3 26 3.9 29 21.5 0.54 63.3 -57.6
37100 676.3 0 90.7 26 4.0 29 21.7 0.54 63.8 -58.1
37200 680.3 0 91.2 25 4.0 30 21.9 0.54 64.6 -58.6
37300 684.3 0 91.6 25 4.0 30 22.1 0.54 65.3 -59.1
37400 688.3 0 92.1 25 4.2 31 22.3 0.54 66.0 -59.6
37500 692.5 0 92.5 25 4.1 31 22.5 0.54 66.6 -60.2
37600 696.6 0 93.0 24 4.3 32 22.7 0.54 67.0 -60.7
37700 700.9 0 93.5 24 4.3 32 23.0 0.54 67.5 -61.1
37800 705.2 0 94.0 24 4.3 33 23.2 0.54 68.0 -61.7
37900 709.5 0 94.4 23 4.4 34 23.4 0.55 68.6 -62.1
38000 713.9 0 94.9 23 4.5 34 23.7 0.55 69.1 -62.5
38100 718.4 0 95.4 23 4.6 35 23.9 0.55 69.6 -63.0
38200 723 0 95.9 22 4.6 36 24.2 0.55 70.3 -63.4
38300 727.6 0 96.4 22 4.7 36 24.5 0.55 70.9 -64.0
38400 732.3 0 96.9 22 4.7 37 24.7 0.55 71.5 -64.6
38500 737 0 97.5 22 4.8 37 25.0 0.55 72.2 -65.1
38600 741.8 0 98.0 21 4.8 38 25.3 0.55 72.9 -65.7
38700 746.6 0 98.5 21 4.9 39 25.6 0.55 73.5 -66.3
38800 751.5 0 99.0 21 5.0 39 25.9 0.55 74.1 -66.8
38900 756.5 0 99.6 20 5.1 40 26.2 0.55 74.7 -67.3
39000 761.6 0 100.1 20 5.2 42 26.5 0.55 75.2 -67.5
39100 766.8 0 100.7 19 5.5 43 26.8 0.55 75.4 -67.8
39200 772.3 0 101.2 19 5.5 44 27.2 0.55 75.6 -68.0
39300 777.8 0 101.8 18 5.8 46 27.5 0.55 75.9 -68.7
39400 783.6 0 102.4 18 5.9 48 27.9 0.55 76.7 -69.6
39500 789.5 0 103.1 17 6.3 50 28.3 0.55 77.7 -70.4
39600 795.8 0 103.7 16 6.5 52 28.7 0.55 78.6 -71.1
39700 802.3 0 104.4 16 6.8 55 29.1 0.55 79.4 -71.7
39800 809.1 0 105.1 15 7.3 58 29.6 0.55 80.1 -72.3
39900 816.4 0 105.8 14 7.8 62 30.1 0.55 80.9 -72.9
40000 824.2 0 106.6 13 8.7 68 30.7 0.55 81.6 -73.5
40100 832.9 0 107.5 12 9.8 75 31.3 0.55 82.2 -74.0
40200 842.7 0 108.4 10 11.5 86 32.1 0.55 82.9 -74.6
40300 854.2 0 109.5 9 14.7 104 32.9 0.55 83.3 -75.0
40400 868.9 0 110.8 8 17.0 120 34.0 0.55 83.8 -75.4
40528 902.9 0 115.0 39.1 5 110 38.0 0.55 84.0 -75.7
40400 941.6 0 118.3 25.6 7 104 41.5 0.56 84.2 -75.8
40300 954.2 0 119.4 11.3 9 98 42.8 0.57 84.6 -76.1
40200 964.1 0 120.3 9.1 11 79 44.0 0.57 84.9 -76.4
40100 972.5 0 121.0 8.0 13 69 45.0 0.57 85.2 -76.6
40000 980.0 0 121.7 7.1 15 61 45.9 0.57 85.4 -76.9
39900 986.7 0 122.3 6.5 16 56 46.7 0.57 85.6 -77.0
39800 992.9 0 122.8 5.9 17 51 47.5 0.58 85.7 -77.2
39700 998.6 0 123.3 5.5 18 48 48.2 0.58 85.8 -77.2
39600 1004.0 0 123.8 5.3 20 45 48.9 0.58 85.8 -77.3
39500 1009.1 0 124.2 5.0 21 43 49.6 0.58 85.8 -77.4
39400 1014.0 0 124.6 4.8 22 41 50.2 0.58 85.8 -77.4
39300 1018.6 0 125.0 4.5 22 39 50.8 0.58 85.7 -77.3
39200 1023.1 0 125.3 4.4 23 38 51.4 0.59 85.5 -77.2
39100 1027.4 0 125.7 4.3 24 36 51.9 0.59 85.4 -77.2
39000 1031.6 0 126.0 4.1 25 35 52.4 0.59 85.2 -77.0
38900 1035.7 0 126.4 4.0 26 34 52.9 0.59 85.0 -76.9
38800 1039.6 0 126.7 3.9 26 33 53.4 0.59 84.8 -76.7
38700 1043.4 0 127.0 3.8 27 32 53.8 0.59 84.5 -76.5
38600 1047.1 0 127.3 3.6 28 31 54.2 0.60 84.3 -76.2
38500 1050.7 0 127.6 3.5 28 30 54.7 0.60 84.1 -76.0
38400 1054.2 0 127.8 3.5 29 29 55.1 0.60 83.7 -75.6
38300 1057.7 0 128.1 3.5 30 29 55.5 0.60 83.4 -75.3
38200 1061.1 0 128.4 3.4 30 28 56.0 0.60 83.1 -75.0
38100 1064.4 0 128.6 3.3 31 27 56.4 0.60 82.8 -74.8
38000 1067.6 0 128.9 3.2 32 27 56.8 0.61 82.5 -74.6
37900 1070.8 0 129.1 3.2 32 26 57.3 0.61 82.2 -74.3
37800 1074.0 0 129.3 3.1 33 26 57.7 0.61 82.0 -74.1
37700 1077.0 0 129.6 3.0 33 25 58.1 0.61 81.7 -73.9
37600 1080.0 0 129.8 3.0 34 24 58.5 0.61 81.5 -73.7
37500 1083.0 0 130.0 3.0 35 24 58.9 0.61 81.2 -73.5
37400 1085.9 0 130.2 2.8 35 23 59.3 0.62 80.9 -73.3
37300 1088.7 0 130.4 2.8 36 23 59.7 0.62 80.5 -73.1
37200 1091.6 0 130.6 2.8 36 23 60.1 0.62 80.1 -72.9
37100 1094.3 0 130.8 2.7 37 22 60.5 0.62 79.7 -72.7
37000 1097.0 0 131.0 2.7 37 22 60.9 0.62 79.3 -72.5
36900 1099.7 0 131.2 2.7 38 21 61.3 0.62 79.2 -72.2
36800 1102.4 0 131.4 2.7 39 21 61.7 0.63 79.0 -72.0
36700 1105.0 0 131.6 2.6 39 21 62.1 0.63 78.9 -71.7
36600 1107.6 0 131.8 2.5 40 20 62.5 0.63 78.8 -71.5
36500 1110.1 0 132.0 2.5 40 20 62.8 0.63 78.7 -71.3
36400 1112.6 0 132.2 2.5 41 20 63.2 0.63 78.5 -71.0
36300 1115.1 0 132.3 2.5 41 19 63.6 0.64 78.3 -70.7
36200 1117.6 0 132.5 2.5 42 19 63.9 0.64 78.0 -70.5
36100 1120.0 0 132.7 2.4 42 19 64.3 0.64 77.6 -70.3
36000 1122.4 0 132.8 2.3 42 19 64.6 0.64 77.3 -70.1
35900 1124.7 0 133.0 2.3 43 18 64.9 0.64 77.0 -69.9
35800 1127.1 0 133.2 2.4 43 18 65.2 0.64 76.7 -69.6
35700 1129.4 0 133.3 2.3 44 18 65.5 0.65 76.3 -69.4
35600 1131.7 0 133.5 2.3 44 18 65.8 0.65 75.9 -69.2
35500 1134.0 0 133.6 2.3 45 17 66.1 0.65 75.5 -69.0
35400 1136.2 0 133.8 2.2 45 17 66.4 0.65 75.1 -68.7
35300 1138.4 0 133.9 2.2 46 17 66.6 0.65 74.7 -68.4
35200 1140.6 0 134.0 2.2 46 17 66.9 0.65 74.4 -68.2
35100 1142.8 0 134.2 2.2 47 16 67.2 0.66 74.0 -68.0
35000 1145.0 0 134.3 2.1 47 16 67.4 0.66 73.9 -67.8
34900 1147.1 0 134.5 2.1 48 16 67.7 0.66 73.7 -67.5
34800 1149.2 0 134.6 2.1 48 16 68.0 0.66 73.5 -67.2
34700 1151.3 0 134.7 2.1 49 15 68.3 0.66 73.4 -67.0
34600 1153.3 0 134.9 2.0 49 15 68.6 0.67 73.2 -66.9
34500 1155.4 0 135.0 2.0 50 15 68.9 0.67 73.1 -66.6
34400 1157.4 0 135.1 2.0 50 15 69.4 0.67 72.9 -66.5
34300 1159.4 0 135.2 2.0 51 15 69.8 0.67 72.7 -66.3
34200 1161.4 0 135.4 2.0 52 14 70.2 0.67 72.6 -66.1
34100 1163.3 0 135.5 1.9 52 14 70.6 0.68 72.3 -66.0
34000 1165.2 0 135.6 1.9 53 14 70.9 0.68 72.2 -65.8
33900 1167.1 0 135.7 1.9 53 14 71.2 0.68 71.9 -65.7
33800 1169.0 0 135.8 1.9 54 14 71.5 0.68 71.7 -65.5
33700 1170.9 0 136.0 1.9 54 13 71.6 0.69 71.5 -65.3
33600 1172.8 0 136.1 1.8 55 13 71.5 0.69 71.3 -65.2
33500 1174.6 0 136.2 1.8 55 13 71.4 0.69 71.1 -65.0
33400 1176.4 0 136.3 1.8 56 13 71.2 0.69 70.8 -64.8
33300 1178.2 0 136.4 1.8 56 13 71.0 0.69 70.6 -64.6
33200 1180.0 0 136.5 1.8 57 13 70.8 0.70 70.3 -64.5
33100 1181.8 0 136.6 1.8 57 12 70.6 0.70 70.1 -64.3
33000 1183.5 0 136.7 1.8 58 12 70.4 0.70 69.9 -64.1
32900 1185.3 0 136.8 1.8 58 12 70.2 0.70 69.5 -63.9
32800 1187.0 0 136.9 1.7 59 12 70.1 0.71 69.3 -63.7
32700 1188.7 0 137.0 1.7 59 12 70.1 0.71 69.1 -63.5
32600 1190.4 0 137.1 1.7 59 12 70.0 0.71 68.8 -63.3
32500 1192.1 0 137.2 1.7 60 12 70.0 0.71 68.6 -63.1
32400 1193.8 0 137.3 1.7 60 12 70.0 0.72 68.3 -62.9
32300 1195.5 0 137.4 1.7 60 11 69.9 0.72 68.1 -62.8
32200 1197.2 0 137.5 1.7 60 11 69.9 0.72 67.8 -62.5
32100 1198.8 0 137.6 1.7 61 11 70.0 0.72 67.6 -62.5
32000 1200.5 0 137.7 1.7 60 11 70.0 0.73 67.4 -62.4
31900 1202.2 0 137.8 1.7 61 11 70.0 0.73 67.3 -62.3
31800 1203.8 0 137.9 1.7 61 11 70.1 0.73 67.2 -62.2
31700 1205.5 0 138.0 1.7 61 11 70.1 0.73 67.1 -62.2
31600 1207.2 0 138.1 1.7 61 11 70.2 0.74 67.0 -62.2
31500 1208.8 0 138.1 1.7 61 11 70.2 0.74 67.0 -62.2
31400 1210.5 0 138.2 1.6 61 11 70.3 0.74 66.9 -62.1
31300 1212.1 0 138.3 1.7 61 11 70.3 0.74 66.8 -62.1
31200 1213.8 0 138.4 1.7 61 11 70.4 0.75 66.7 -62.0
31100 1215.4 0 138.5 1.6 61 11 70.4 0.75 66.6 -61.9
31000 1217.1 0 138.6 1.6 61 11 70.4 0.75 66.6 -61.7
30900 1218.7 0 138.7 1.6 61 11 70.4 0.75 66.4 -61.7
30800 1220.3 0 138.8 1.7 61 10 70.3 0.76 66.2 -61.4
30700 1222.0 0 138.9 1.6 61 10 70.3 0.76 66.1 -61.3
30600 1223.6 0 138.9 1.7 62 10 70.2 0.76 65.9 -61.1
30500 1225.3 0 139.0 1.7 62 10 70.2 0.76 65.8 -61.0
30400 1226.9 0 139.1 1.6 62 10 70.1 0.77 65.6 -60.8
30300 1228.5 0 139.2 1.6 62 10 70.1 0.77 65.4 -60.6
30200 1230.1 0 139.3 1.7 62 10 70.1 0.77 65.2 -60.5
30100 1231.8 0 139.4 1.7 63 10 70.1 0.77 65.0 -60.3
30000 1233.4 0 139.4 1.6 63 10 70.1 0.78 64.9 -60.1
29900 1235.0 0 139.5 1.6 63 10 70.1 0.78 64.7 -59.9
29800 1236.6 0 139.6 1.6 63 10 70.1 0.78 64.6 -59.8
29700 1238.2 0 139.7 1.5 63 10 70.1 0.78 64.3 -59.6
29600 1239.7 0 139.8 1.6 64 10 70.2 0.79 64.2 -59.4
29500 1241.3 0 139.9 1.6 64 9 70.2 0.79 64.0 -59.3
29400 1242.9 0 139.9 1.6 64 9 70.2 0.79 63.8 -59.1
29300 1244.5 0 140.0 1.6 64 9 70.2 0.80 63.6 -59.0
29200 1246.1 0 140.1 1.5 64 9 70.3 0.80 63.4 -58.7
29100 1247.6 0 140.2 1.5 65 9 70.3 0.80 63.2 -58.6
29000 1249.2 0 140.2 1.5 65 9 70.3 0.80 62.9 -58.4
28900 1250.7 0 140.3 1.6 65 9 70.3 0.81 62.7 -58.2
28800 1252.3 0 140.4 1.6 65 9 70.3 0.81 62.5 -58.1
28700 1253.8 0 140.5 1.5 65 9 70.3 0.81 62.2 -57.9
28600 1255.4 0 140.5 1.5 66 9 70.3 0.81 62.0 -57.7
28500 1256.9 0 140.6 1.5 66 9 70.3 0.82 61.7 -57.6
}
} Ende Spaltengruppe
} Ende Standard_Tafel
} Ende Schuss_Tafel
@@ -0,0 +1,995 @@
/**
* @RDE_HEADER@
* GeoPairing
* $Id$
* $HeadURL$
* $Author$
*/
#include "GeoPairing.hpp"
#include <GeoPairingImpl/GeoPairingImplFactory.hpp>
#include <GeoPairingImpl/GeoPairingImplDted.hpp>
#include <GeoPairingImpl/GeoPairingImplBalistic.hpp>
#include <GeoPairingImpl/GeoPairingDataFireReport.hpp>
#include <Schusstafel.h>
#include <QScopedPointer>
#include <FW_Ballistic/AmmunitionTypes.hpp>
#include <GBL_ConfigSystem/ammuconfig.h>
#include "../settings.h"
static const double ANGULAR_MIL = 6400.0 / 360.0;
using namespace N_GeoPairingImpl;
using namespace N_ConfigSystem;
using namespace CentralEffectSimulation;
using namespace NGL;
GeoPairing::GeoPairing(const std::shared_ptr<N_Ballistic::BallisticService> &ballisticService)
: //m_airTargets(new ZSSIWI::AirTargetsInt)
//, m_automaticCannon(new ZSSIWI::AutomaticCannonInt)
//, m_geoPairingData(new ZSSIWI::GeoPairingDataInt)
//, m_mortarHowitzer(new ZSSIWI::MortarHowitzerInt)
//, m_surfaceToAir(new ZSSIWI::SurfaceToAirInt)
m_ballisticService(ballisticService)
, m_logger(CesGeoPairing::getLogger("Plugin.GeoPairing.GeoPairing"))
{
INFO_LOG(m_logger) << "konfigPath = " << ballisticService->getConfigPath() ;
const QString s_configPath = ballisticService->getConfigPath();
INFO_LOG(m_logger) << "GeoPairing Config location : " << s_configPath ;
GeoPairingImpl *l_impl = new GeoPairingImplDted;
INFO_LOG(m_logger) << "--> Installing GeoPairingImplDted..." ;
GeoPairingImplFactory::setImpl(l_impl);
readAmmunitionIni();
// initialize the GeoPairing implementation
if (!GeoPairingImplFactory::initialize(s_configPath))
{
ERROR_LOG(m_logger) << "Couldn't initialize GeoPairingImplFactory with GeoPairingImplDted!" ;
l_impl = new GeoPairingImplBalistic();
INFO_LOG(m_logger) << "--> Installing GeoPairingImplBalistic...";
GeoPairingImplFactory::setImpl(l_impl);
if (!GeoPairingImplFactory::initialize(s_configPath))
{
ERROR_LOG(m_logger) << "Couldn't initialize GeoPairingImplFactory with GeoPairingImplBalistic!" ;
abort();
}
else
INFO_LOG(m_logger) << "GeoPairingImplBalistic correctly initialized" ;
}
else
INFO_LOG(m_logger) << "GeoPairingImplDted correctly initialized" ;
#ifdef _PSEUDO_TARGETS_
// initial lat long position
// N_Math::GeoCoord l_UtmPos;
// l_UtmPos.setLlPositionDegree(22.5, 40.5, 59);
//
// const SInt32 l_NbrOfObjects = 4;
//
// std::cout << "Creating Pseudotargets : " << l_NbrOfObjects << std::endl;
//
// N_Types::Coord3 l_Direction(0, 1000, 0);
//
// for (int i=0;i<l_NbrOfObjects/2; i++)
// {
// N_Types::Coord3 l_PosInitial;
// l_PosInitial.m_X = l_UtmPos.m_UtmEast;
// l_PosInitial.m_Y = l_UtmPos.m_UtmNorth;
// l_PosInitial.m_Z = l_UtmPos.m_UtmHeight;
//
// l_PosInitial += l_Direction;
//
// N_Math::GeoCoord l_Utm1;
// l_Utm1.setTotalUtmPosition(l_PosInitial.m_X, l_PosInitial.m_Y, l_PosInitial.m_Z, l_UtmPos.m_UtmZone, l_UtmPos.m_UtmZoneChar);
//
// ZSSIWI::AirTargetsInt::AirTarget l_Target;
// l_Target.playerId = i+1;
// l_Target.positionLat = l_Utm1.m_LlLat;
// l_Target.positionLon = l_Utm1.m_LlLong;
// l_Target.positionAlt = l_Utm1.m_LlHeight;
// l_Target.positionTime = 1;
// l_Target.state = 0;
//
// m_airTargets->getAirTargetsList().append(l_Target);
//
// l_Direction = l_Direction.rotateZ(-M_PI / (l_NbrOfObjects/2));
// }
ZSSIWI::AirTargetsInt::AirTarget l_Target;
l_Target.playerId = 7701;
l_Target.positionLat = 53.0412;
l_Target.positionLon = 8.87471;
l_Target.positionAlt = 120;
l_Target.positionTime = 1;
l_Target.state = 0;
m_airTargets->getAirTargetsList().append(l_Target);
#endif
INFO_LOG(m_logger) << "Initialization finished";
}
void GeoPairing::calculateAirFire(const QByteArray &transparentData,
const QHash<int, CentralEffectSimulation::HandlerParticipant::CesParticipantData> &aircrafts)
{
INFO_LOG(m_logger) << "calculateAirFire (IGLA)..." ;
GeoPairingDataFireReport l_Report;
if (!l_Report.parse(transparentData))
{
WARNING_LOG(m_logger) << "Error: Couldn't parse Fire Report" ;
return;
}
if (aircrafts.size() == 0)
{
INFO_LOG(m_logger) << "No Aircraft available";
return;
}
QScopedPointer<GeoPairingImplAirTargetUpdater> l_Updater(GeoPairingImplFactory::createAirTargetUpdater());
QHashIterator<int, HandlerParticipant::CesParticipantData> i(aircrafts);
while (i.hasNext())
{
i.next();
SInt32 vulnerabilityState = i.value().vulnerabilityState.underlying();
Float64 lat = i.value().pos().lat() * 180 / M_PI;
Float64 lon = i.value().pos().lon() * 180 / M_PI;
DEBUG_LOG(m_logger) << "GeoPairing::calculateAirFire"
<< "\nl_Updater->update : " << i.key()
<< "\n: participantId=" << i.value().participantId()
<< "\n participantTypeId= " << i.value().participantTypeId()
<< "\n pos lat=" << lat
<< "\n lon=" << lon
<< "\n alt=" << i.value().pos().z()
<< "\n posTime=" << i.value().sampleTime()
<< "\n state=" << i.value().vulnerabilityState
<< "\n state (SInt32)=" << vulnerabilityState;
l_Updater->update(i.value().participantId(),
lat,
lon,
i.value().pos().z(),
i.value().sampleTime() / 1000, //s
vulnerabilityState);
}
// Prepare SensorData to take into account terrain altitude and geomagnetic differences
GeoPairingImplSensorData l_SensorData;
l_SensorData.WeaponPositionLat = m_PositionLat;
l_SensorData.WeaponPositionLong = m_PositionLon;
l_SensorData.FireTime = m_Time;
l_SensorData.WeaponElevation = 0;
INFO_LOG(m_logger) << "--> IGLA : Report Target Fire (createSensorData)"
<< "\nl_SensorData.WeaponPositionLat = " << l_SensorData.WeaponPositionLat
<< "\nl_SensorData.WeaponPositionLong = " << l_SensorData.WeaponPositionLong
<< "\nl_SensorData.WeaponAzimuth=" << l_SensorData.WeaponAzimuth
<< "\nl_SensorData.WeaponElevation=" << l_SensorData.WeaponElevation
<< "\nl_SensorData.FireTime = " << l_SensorData.FireTime
;
SInt32 l_DeviceID = GeoPairingImplFactory::createSensorData(&l_SensorData, transparentData);
INFO_LOG(m_logger) << "createSensorData -> SensorData.WeaponAzimuth=" << l_SensorData.WeaponAzimuth
<< "\nl_SensorData.WeaponElevation=" << l_SensorData.WeaponElevation;
if (l_DeviceID == -1)
{
ERROR_LOG(m_logger) << "Couldn't create SensorData" ;
return;
}
m_PositionHeight = l_SensorData.WeaponPositionHeight;
Float64 l_Azimuth = -l_SensorData.WeaponAzimuth * 180 / M_PI; // negate to convert ccw back to cw
Float64 l_Elevation = l_SensorData.WeaponElevation * 180 / M_PI;
if (l_Report.m_DeviceID == PAN_GP_REQUEST_IGLA)
{
INFO_LOG(m_logger) << " -> IGLA : Request Target Detection " ;
QScopedPointer<GeoPairingImplAirTargetCache> l_Cache(GeoPairingImplFactory::createAirTargetCache(m_equipmentNumber));
int l_TargetPlayerId = 0;
uint64_t l_ImpactTime = 0;
INFO_LOG(m_logger) << "-> IGLA : Request Target Detection -> searchAirTarget (vor dem aufruf)"
<< "\nl_Elevation = " << l_Elevation
<< "\nl_Azimuth = " << l_Azimuth
;
bool l_TargetFound = searchAirTarget(l_Elevation, l_Azimuth, l_TargetPlayerId, l_ImpactTime);
INFO_LOG(m_logger) << "-> IGLA : Request Target Detection -> searchAirTarget (nach dem aufruf)"
<< "\nl_TargetFound = " << l_TargetFound
<< "\nl_TargetPlayerId = " << l_TargetPlayerId
<< "\nl_ImpactTime = " << l_ImpactTime
;
bool l_CachedTrackingState = l_Cache->getLatestTrackState(l_TargetPlayerId);
UInt32 l_CachedTrackingTime = l_Cache->getLatestTrackTime(l_TargetPlayerId);
INFO_LOG(m_logger) << "-> IGLA : Retrieved Target Detection Results from Cache"
<< "\nl_CachedTrackingState = " << l_CachedTrackingState
<< "\nl_CachedTrackingTime = " << l_CachedTrackingTime
;
SInt32 l_DeltaTime = m_Time - l_CachedTrackingTime;
bool l_TimeoutPassed = l_DeltaTime > static_cast<SInt32>(l_Cache->getCacheTimeout());
if (l_TargetFound != l_CachedTrackingState || l_TimeoutPassed)
{
// prepare response for player
m_reportTarget.playerId = i.value().participantId();
m_reportTarget.sendData.clear();
m_reportTarget.sendData.append(0xEB); // Report Target Detection
UInt8 l_DetectionResult = ((UInt8) l_TargetFound) & 0x03;
l_DetectionResult += (l_Report.m_IGLARequestNbr << 2);
m_reportTarget.sendData.append(l_DetectionResult);
// add 3 reserved bytes
m_reportTarget.sendData.append((char)0x00);
m_reportTarget.sendData.append((char)0x00);
m_reportTarget.sendData.append((char)0x00);
m_reportTarget.send = true;
// Richtung Gefechtsfeld
INFO_LOG(m_logger) << "<-- EC : Report Target Detection " ;
INFO_LOG(m_logger) << "Target Found : " << l_TargetFound ;
//m_geoPairingData->sendData(m_PlayerId, l_SendData.data(), l_SendData.size() );
l_Cache->storeLatestTrackState(l_TargetPlayerId, m_Time, l_TargetFound);
}
}
INFO_LOG(m_logger) << "\n\nPAN_GP_REPORT_IGLA m_DeviceID=" << l_Report.m_DeviceID
<< " PAN_GP_REPORT_IGLA=" << PAN_GP_REPORT_IGLA;
if (l_Report.m_DeviceID == PAN_GP_REPORT_IGLA)
{
INFO_LOG(m_logger) << "--> IGLA : Report Target Fire " ;
int l_TargetPlayerId = 0;
UInt64 l_ImpactTime = 0;
QScopedPointer<GeoPairingImplAirTargetTracker> l_Tracker(GeoPairingImplFactory::createAirTargetTracker());
INFO_LOG(m_logger) << "--> IGLA : Report Target Fire (l_Tracker->setPosition)"
<< "\nm_PositionLat = " << m_PositionLat
<< "\nm_PositionLon = " << m_PositionLon
<< "\nm_PositionHeight = " << m_PositionHeight
;
l_Tracker->setPosition(m_PositionLat, m_PositionLon, m_PositionHeight);
INFO_LOG(m_logger) << "--> IGLA : Report Target Fire (setTime)"
<< "\nm_Time = " << m_Time ;
l_Tracker->setTime(m_Time);
INFO_LOG(m_logger) << "--> IGLA : Report Target Fire (vor l_Tracker->track)"
<< "\nl_Azimuth = " << l_Azimuth
<< "\nl_Elevation = " << l_Elevation
<< "\nl_TargetPlayerId = " << l_TargetPlayerId
<< "\nl_ImpactTime = " << l_ImpactTime
;
bool l_TargetFound = l_Tracker->track(l_Azimuth, l_Elevation, l_TargetPlayerId, l_ImpactTime);
INFO_LOG(m_logger) << "--> IGLA : Report Target Fire (nach l_Tracker->track)"
<< "\nl_TargetFound = " << l_TargetFound ;
if (l_TargetFound)
{
int l_AmmunitionType = N_Ballistic::IGLA;
m_fireToAircraft.participantIdTarget = l_TargetPlayerId;
m_fireToAircraft.impactTime = l_ImpactTime;
m_fireToAircraft.ammunitionTypeId = l_AmmunitionType;
m_fireToAircraft.equipmentNumberGunner = m_equipmentNumber;
if (l_Tracker->hitCheck(l_TargetPlayerId, l_Report.m_IGLAModeAuto, l_Report.m_IGLAChangeOverPressed))
{
//m_surfaceToAir->fire(l_TargetPlayerId, l_ImpactTime, l_AmmunitionType, m_PlayerId, true);
m_fireToAircraft.hit = true;
INFO_LOG(m_logger) << "Air Target " << l_TargetPlayerId << " in reach and hit" ;
}
else
{
//m_surfaceToAir->fire(l_TargetPlayerId, l_ImpactTime, l_AmmunitionType, m_PlayerId, false);
m_fireToAircraft.hit = false;
INFO_LOG(m_logger) << "Air Target " << l_TargetPlayerId << " in reach, but not hit" ;
}
}
else
INFO_LOG(m_logger) << "No Air Target withing reach..." ;
}
}
void GeoPairing::calculateAreaFire(const QByteArray &transparentData,
const std::shared_ptr<N_Ballistic::BallisticService> &ballisticService)
{
INFO_LOG(m_logger) << "calculateAreaFire (MK19)..." ;
// Prepare SensorData for Implementation
GeoPairingImplSensorData l_SensorData;
l_SensorData.WeaponPositionLat = m_PositionLat;
l_SensorData.WeaponPositionLong = m_PositionLon;
l_SensorData.FireTime = m_Time;
GeoPairingDataFireReport l_Report;
if (!l_Report.parse(transparentData))
{
ERROR_LOG(m_logger) << "Error: Couldn't parse Fire Report" ;
return;
}
SInt32 l_DeviceID = GeoPairingImplFactory::createSensorData(&l_SensorData, transparentData);
if (l_DeviceID == -1)
{
ERROR_LOG(m_logger) << "Couldn't create SensorData" ;
return;
}
QScopedPointer<GeoPairingImplFiredBullet> l_FiredBullet(GeoPairingImplFactory::createFiredBullet(l_SensorData));
if (l_FiredBullet == nullptr)
{
ERROR_LOG(m_logger) << "Error: Couldn't create FiredBullet object" ;
return;
}
double l_FieldWidth = 0;
double l_FieldLength = 0;
double l_Duration = 0;
double l_Heading = 0;
UInt8 nbrRounds = 0;
nbrRounds = l_Report.m_MK19NbrRounds;
l_FiredBullet->calculateSalve(ballisticService, nbrRounds, l_FieldWidth, l_FieldLength, l_Duration, l_Heading);
GeoPairingImplImpactData *l_ImpactData = l_FiredBullet->getImpactData();
if (l_ImpactData == nullptr)
{
ERROR_LOG(m_logger) << "Error: Couldn't create ImpactData object" ;
return;
}
N_Ballistic::ammunitionTypeIndirectFire l_AmmunitionType;
N_Ballistic::ammunitionTypeOSAG l_AmmunitionTypeOSAG;
switch (l_SensorData.AmmunitionType)
{
case MK19Type_m385:
l_AmmunitionType = N_Ballistic::MK19_M385;
l_AmmunitionTypeOSAG = N_Ballistic::MK19_M385_OSAG;
INFO_LOG(m_logger) << "Wirkfeld Ammunition MK19_M385" ;
break;
case MK19Type_m430:
l_AmmunitionType = N_Ballistic::MK19_M430;
l_AmmunitionTypeOSAG = N_Ballistic::MK19_M430_OSAG;
INFO_LOG(m_logger) << "Wirkfeld Ammunition MK19_M430" ;
break;
default:
ERROR_LOG(m_logger) << "Default Ammunition. Must not be called : " << l_SensorData.AmmunitionType ;
return;
}
// Richtung Zentrale
// * Create an area fire to CTAS
// * @param playerId Id of the player
// * @param impactTime Time of impact
// * @param fireDuration Duration [sec] of the fire
// * @param impactAreaLat Latitude - Centercoordinate of impact-area
// * @param impactAreaLon Longitude - Centercoordinate of impact-area
// * @param impactAreaDimensionWidth Width [m] of impact-area
// * Width: At right angle to the direction gunner position to impact position
// * @param impactAreaDimensionDepth Depth [m] of impact-area.
// * Depth: Direction of gunner position to impact position
// * @param direction Direction from gunner position to impact position.
// * Angle of rotation [0.01 degree] counterclockwise against direction east.
// * @param numberOfImpacts Number of impacts
// * @param ammunitionType Type of the ammunition
/*
m_automaticCannon->areaFire(m_PlayerId,
l_ImpactData->ImpactTime,
l_Duration,
l_ImpactData->ImpactPositionLat,
l_ImpactData->ImpactPositionLong,
l_FieldWidth,
l_FieldLength,
l_Heading,
nbrRounds,
l_AmmunitionType,
l_AmmunitionTypeOSAG);*/
m_areaFireToCtas.playerId = m_equipmentNumber;
m_areaFireToCtas.impactTime = l_ImpactData->ImpactTime;
m_areaFireToCtas.duration = l_Duration;
m_areaFireToCtas.impactPositionLat = l_ImpactData->ImpactPositionLat;
m_areaFireToCtas.impactPositionLong = l_ImpactData->ImpactPositionLong;
m_areaFireToCtas.fieldWidth = l_FieldWidth;
m_areaFireToCtas.fieldLength = l_FieldLength;
m_areaFireToCtas.heading = l_Heading;
m_areaFireToCtas.nbrRounds = nbrRounds;
m_areaFireToCtas.ammunitionType = l_AmmunitionType;
m_areaFireToCtas.ammunitionTypeOSAG = l_AmmunitionTypeOSAG;
m_areaFireToCtas.hit = true;
INFO_LOG(m_logger) << "calculateAreaFire m_equipmentNumber=" << m_equipmentNumber
<< " ImpactTime=" << l_ImpactData->ImpactTime
<< " ImpactPositionLat=" << l_ImpactData->ImpactPositionLat
<< " ImpactPositionLong=" << l_ImpactData->ImpactPositionLong
<< " l_AmmunitionType=" << l_AmmunitionType
<< " l_AmmunitionTypeOSAG=" << l_AmmunitionTypeOSAG
<< " l_DeviceID=" << l_DeviceID;
m_DeviceID = l_DeviceID;
}
void GeoPairing::calculateSingleFire(const QByteArray &transparentData, const std::shared_ptr<N_Ballistic::BallisticService> &ballisticService)
{
INFO_LOG(m_logger) << "calculateSingleFire ..." ;
ElevationError error_elevation = ElevationError::NoError;
int error_charge = 0;
int error_mun = 0;
bool usage_ok = true;
// Prepare SensorData for Implementation
GeoPairingImplSensorData l_SensorData;
l_SensorData.WeaponPositionLat = m_PositionLat;
l_SensorData.WeaponPositionLong = m_PositionLon;
l_SensorData.FireTime = m_Time;
l_SensorData.IgnitionType = -1; // Unknown
SInt32 l_DeviceID = GeoPairingImplFactory::createSensorData(&l_SensorData, transparentData, error_mun);
INFO_LOG(m_logger) << "l_DeviceID=" << l_DeviceID;
if (l_DeviceID == -1)
{
ERROR_LOG(m_logger) << "Couldn't create SensorData" ;
return;
}
QScopedPointer<GeoPairingImplFiredBullet> l_FiredBullet(GeoPairingImplFactory::createFiredBullet(l_SensorData));
if ((l_DeviceID == PAN_GP_REPORT_G5_G6) || (l_DeviceID == PAN_GP_REPORT_M109) || (l_DeviceID == PAN_GP_REPORT_MORTAR))
{
// Fuer die Waffe G5/G6 wird die Entfernung aus einer Schusstafel-Datei ausgelesen
// und nicht ueber einen ballistischen Algorithmus berechnet
Schusstafel::TAFEL_NAMEN_ET tafelName = Schusstafel::ST_AUFSATZ;
//std::string pfad = "./";
QString pfadQstr = CesGeoPairing::Settings::cesGeopairingIniPath() + QStringLiteral("/");
std::string pfad = pfadQstr.toStdString();
std::string munart;
INFO_LOG(m_logger) << "Vor switch AmmunitionType=" << l_SensorData.AmmunitionType
<< " ChargeType=" << l_SensorData.ChargeType;
// Ammunition HE-M1
switch (l_SensorData.AmmunitionType)
{
case HE_M1A2:
{
INFO_LOG(m_logger) << "HE_M1A2";
switch (l_SensorData.ChargeType)
{
case 0:
munart = "HE-M1-M64Base-TableE";
break;
case 1:
munart = "HE-M1-M64Incr3-TableE";
break;
case 2:
munart = "HE-M1-M64Incr4-TableE";
break;
case 3:
munart = "HE-M1-M64Incr5-TableE";
break;
case 4:
munart = "HE-M1-M64Incr5BaseBleed-TableE";
break;
default:
break;
}
break;
}
case M60mm_m385:
case M60mm_m430:
{
INFO_LOG(m_logger) << "M60mm_m385 M60mm_m430";
switch (l_SensorData.IgnitionType) // ChargeType = Ladung...
{
// Todo: Umbenennen und ggf. Zuordnung korrigieren
case 0:
INFO_LOG(m_logger) << "Moerser-60mm-Lad1";
munart = "Moerser-60mm-Lad1";
break;
case 1:
INFO_LOG(m_logger) << "Moerser-60mm-Lad2";
munart = "Moerser-60mm-Lad2";
break;
case 2:
INFO_LOG(m_logger) << "Moerser-60mm-Lad3";
munart = "Moerser-60mm-Lad3";
break;
case 3:
INFO_LOG(m_logger) << "Moerser-60mm-Lad4";
munart = "Moerser-60mm-Lad4";
break;
case 4:
INFO_LOG(m_logger) << "Moerser-60mm-Lad5";
munart = "Moerser-60mm-Lad5";
break;
case 5:
INFO_LOG(m_logger) << "Moerser-60mm-La6";
munart = "Moerser-60mm-Lad6";
break;
default:
break;
}
break;
}
case VLAP_M9703:
{
INFO_LOG(m_logger) << "VLAP_M9703";
// Sonderfall Ammunition VLAP-M64. Da hier nur 5 x M64 Incr als Ladung vorhanden ist.
// Sollten wir eine andere Ladung aus dem Gefechtsfeld bekommen, dann Munition HE M1A2 benutzen
switch (l_SensorData.ChargeType)
{
case 0:
munart = "HE-M1-M64Base-TableE";
break;
case 1:
munart = "HE-M1-M64Incr3-TableE";
break;
case 2:
munart = "HE-M1-M64Incr4-TableE";
break;
case 3:
munart = "VLAP-M64Incr5-TableE";
break;
case 4:
munart = "VLAP-M64Incr5-TableE";
break;
default:
break;
}
break;
}
case SMK_BE_M2:
{
switch (l_SensorData.ChargeType)
{
case 0:
munart = "SMK-BE-RED-RED-PHOSPH-M1-M64Base-TableE";
break;
case 1:
munart = "SMK-BE-RED-RED-PHOSPH-M1-M64Incr3-TableE";
break;
case 2:
munart = "SMK-BE-RED-RED-PHOSPH-M1-M64Incr4-TableE";
break;
case 3:
munart = "SMK-BE-RED-RED-PHOSPH-M1-M64Incr5-TableE";
break;
case 4:
munart = "SMK-BE-RED-RED-PHOSPH-M1-M64Incr5BaseBleed-TableE";
break;
default:
break;
}
break;
}
case CLUSTER_HEHC_M9609:
{
switch (l_SensorData.ChargeType)
{
case 0:
munart = "Cluster-M64Base-TableE";
break;
case 1:
munart = "Cluster-M64BaseIncr3-TableE";
break;
case 2:
munart = "Cluster-M64BaseIncr4-TableE";
break;
case 3:
munart = "Cluster-M64BaseIncr5-TableE";
break;
case 4:
munart = "Cluster-M64BaseIncr5BaseBleed-TableE";
break;
default:
break;
}
break;
}
default:
break;
}
if (munart.empty())
{
WARNING_LOG(m_logger) << "No valid charge type " << l_SensorData.ChargeType <<
" for ammunition " << l_SensorData.AmmunitionType <<
" (internal ids!)" ;
munart = "HE-M1-M64Base-TableE";
error_mun = 1; //Keine richtige Muntion/Charge Kombination
}
std::string suffix = ".sus";
DEBUG_LOG(m_logger) << "schusstafel pfad=" << pfad
<< " munart=" << munart
<< " suffix=" << suffix;
Schusstafel schusstafel(pfad, munart, suffix);
float entfernung1 = 0.0;
float aufsatz1 = 0.0;
float flugzeit1 = 0.0;
float drift1 = 0.0;
float entfernung2 = 0.0;
float aufsatz2 = 0.0;
float flugzeit2 = 0.0;
float drift2 = 0.0;
float elevation = l_SensorData.WeaponElevation.getZeroTo360();
float arg_wert = elevation * ANGULAR_MIL * MILRAD; // Funktion will den Wert in milrad
float zielhoehenwinkel = 0.0;
double evalMil = elevation * ANGULAR_MIL; //angular mil
//Wir holen uns nur bei der Haubitze die Daten
const GeoPCharge mun = m_geoPMunMap.value(l_SensorData.AmmunitionType + 1).value(l_SensorData.ChargeType);
//Der type l_DeviceID gibt an, ob es sich um eine G5/G6 oder M109 handelt.
usage_ok = mun.checkArty(l_DeviceID, evalMil, error_elevation, error_charge);
double elevationGrad = l_SensorData.WeaponElevation.getDegree();
if (elevationGrad <= 0.0)
{
INFO_LOG(m_logger) << "Elevation ist <= 0 Grad. Entfernung wird auf 50% des ersten Wertes aus der Schusstafel festgesetzt" ;
// Dazu aus der minimal moeglichen Elevation die Entfernung bestimmen und halbieren
float minEval = mun.minEleval * MILRAD;
DEBUG_LOG(m_logger) << "schusstafel tafelName=" << tafelName
<< " minEval=" << minEval
<< "zielhoehenwinkel=" << zielhoehenwinkel;
schusstafel.ST_artillerie(tafelName, minEval, zielhoehenwinkel, &entfernung1, &aufsatz1, &flugzeit1, &drift1,
&entfernung2, &aufsatz2, &flugzeit2, &drift2);
entfernung1 = entfernung1 / 2;
flugzeit1 = flugzeit1 / 2;
}
else if (elevationGrad >= 90.0)
{
INFO_LOG(m_logger) << "Elevation ist >= 90 Grad. Entfernung wird auf den letzten Wert aus der Schusstafel festgesetzt" ;
// Dazu aus der maximal moeglichen Elevation die Entfernung bestimmen
double maxEval = mun.maxEleval * MILRAD;
DEBUG_LOG(m_logger) << "schusstafel tafelName=" << tafelName
<< " maxEval=" << maxEval
<< "zielhoehenwinkel=" << zielhoehenwinkel;
schusstafel.ST_artillerie(tafelName, maxEval, zielhoehenwinkel, &entfernung1, &aufsatz1, &flugzeit1, &drift1,
&entfernung2, &aufsatz2, &flugzeit2, &drift2);
}
else
{
DEBUG_LOG(m_logger) << "schusstafel tafelName=" << tafelName
<< " arg_wert=" << arg_wert
<< "zielhoehenwinkel=" << zielhoehenwinkel;
schusstafel.ST_artillerie(tafelName, arg_wert, zielhoehenwinkel, &entfernung1, &aufsatz1, &flugzeit1, &drift1,
&entfernung2, &aufsatz2, &flugzeit2, &drift2);
}
INFO_LOG(m_logger) << "Schusstafel " << munart << ".sus: "
<< "Entfernung [m]: " << entfernung1
<< " Elevation [mil]: " << evalMil
<< " Drift [grad]: " << drift1 * 180 / M_PI
<< " Drift [mil]: " << drift1 * 180 / M_PI *ANGULAR_MIL
<< " Flugzeit [s]: " << flugzeit1 ;
l_FiredBullet->calculateG5G6(entfernung1, drift1, flugzeit1);
}
else
{
// != G5G6 && != M109
INFO_LOG(m_logger) << "calculate(ballisticService)";
l_FiredBullet->calculate(ballisticService);
}
GeoPairingImplImpactData *l_ImpactData = l_FiredBullet->getImpactData();
if (!l_ImpactData)
{
ERROR_LOG(m_logger) << "No impact Data available";
return;
}
N_Ballistic::ammunitionTypeIndirectFire l_AmmunitionType = N_Ballistic::UNKNOWN;
N_Ballistic::ammunitionTypeOSAG l_AmmunitionTypeOSAG = N_Ballistic::UNKNOWN_OSAG;
if ((l_DeviceID != PAN_GP_REPORT_G5_G6) && (l_DeviceID != PAN_GP_REPORT_M109))
{
l_AmmunitionTypeOSAG = N_Ballistic::UNKNOWN_OSAG;
switch (l_SensorData.AmmunitionType)
{
case MortarType1:
default:
l_AmmunitionType = N_Ballistic::MOERSER;
l_AmmunitionTypeOSAG = N_Ballistic::MORTAR_PRC_OSAG;
break;
case MortarType2:
l_AmmunitionType = N_Ballistic::NEBEL;
l_AmmunitionTypeOSAG = N_Ballistic::MORTAR_PRX_OSAG;
break;
}
}
else
{
// Zuordnung Geopairing - Code -> sys_db.munitionsarten (OSAG-Code)
// 4 -> 30 oder 31
// 5 -> 33 oder 32
// 6 -> 34
// 7 -> 35
l_AmmunitionType = N_Ballistic::STEILFEUER_HE_AZ;
l_AmmunitionTypeOSAG = N_Ballistic::UNKNOWN_OSAG;
switch (l_SensorData.AmmunitionType)
{
case HE_M1A2:
switch (l_SensorData.IgnitionTypeG5G6)
{
case IgnitionTypePercussion:
default:
l_AmmunitionType = N_Ballistic::STEILFEUER_HE_AZ;
l_AmmunitionTypeOSAG = N_Ballistic::M1A2_PRC_OSAG;
break;
case IgnitionTypeProximity:
l_AmmunitionType = N_Ballistic::STEILFEUER_HE_DZ;
l_AmmunitionTypeOSAG = N_Ballistic::M1A2_PRX_OSAG;
break;
}
break;
case VLAP_M9703:
switch (l_SensorData.IgnitionTypeG5G6)
{
case IgnitionTypePercussion:
default:
l_AmmunitionType = N_Ballistic::STEILFEUER_HE_AZ;
l_AmmunitionTypeOSAG = N_Ballistic::VLAP_PRC_OSAG;
break;
case IgnitionTypeProximity:
l_AmmunitionType = N_Ballistic::STEILFEUER_HE_DZ;
l_AmmunitionTypeOSAG = N_Ballistic::VLAP_PRX_OSAG;
break;
}
break;
case SMK_BE_M2:
l_AmmunitionType = N_Ballistic::NEBEL;
l_AmmunitionTypeOSAG = N_Ballistic::SMK_OSAG;
break;
case CLUSTER_HEHC_M9609:
l_AmmunitionType = N_Ballistic::STEILFEUER_BOMBLET;
l_AmmunitionTypeOSAG = N_Ballistic::CLUSTER_OSAG;
break;
default:
break;
}
}
// TODO: wird alles nicht ausgewertet
// -> in TES-UAE wurde in diesem Fall ein zt_artillery_usage_error_rt telegramm erzeugt was später ausgewertet wurde
// wird also einen RP in AHTC geben wenn es auffällt
Q_UNUSED(error_elevation);
Q_UNUSED(error_charge);
Q_UNUSED(error_mun);
Q_UNUSED(usage_ok);
// Richtung Zentrale
// Der ammunitionType ist in zssiwi_service_base.hpp zu finden
// TODO m_mortarHowitzer
// Treffer Einzelfeuer zum DDS schicken:
//int wirkfeld_id = m_mortarHowitzer->impact(m_equipmentNumber,
// l_ImpactData->ImpactTime,
// l_ImpactData->ImpactPositionLat,
// l_ImpactData->ImpactPositionLong,
// l_AmmunitionType,
// l_AmmunitionTypeOSAG,
// l_DeviceID);
QString latStr = QString::number(l_ImpactData->ImpactPositionLat, 'f', 8);
QString lonStr = QString::number(l_ImpactData->ImpactPositionLong, 'f', 8);
INFO_LOG(m_logger) << "calculateSingleFire m_equipmentNumber=" << m_equipmentNumber
<< " ImpactTime=" << l_ImpactData->ImpactTime
<< " ImpactPositionLat=" << latStr
<< " ImpactPositionLong=" << lonStr
<< " l_AmmunitionType=" << l_AmmunitionType
<< " l_AmmunitionTypeOSAG=" << l_AmmunitionTypeOSAG
<< " l_DeviceID=" << l_DeviceID;
m_DeviceID = l_DeviceID;
m_singleFireToCtas.impactTime = l_ImpactData->ImpactTime;
m_singleFireToCtas.impactPositionLat = l_ImpactData->ImpactPositionLat;
m_singleFireToCtas.impactPositionLong = l_ImpactData->ImpactPositionLong;
m_singleFireToCtas.ammunitionType = l_AmmunitionType;
m_singleFireToCtas.hit = true;
}
bool GeoPairing::geoPairingData(const std::shared_ptr<N_Ballistic::BallisticService> &ballisticService,
int equipmentNumber,
qint64 time,
double positionLat,
double positionLon,
const QByteArray &transparentDataAr,
const QHash<int, CentralEffectSimulation::HandlerParticipant::CesParticipantData> &aircrafts)
{
// first of all, we save the basic info that is directly available
m_equipmentNumber = equipmentNumber;
m_Time = time;
m_PositionLat = positionLat;
m_PositionLon = positionLon;
m_ballisticService = ballisticService;
m_fireToAircraft.hit = false;
m_singleFireToCtas.hit = false;
m_areaFireToCtas.hit = false;
m_reportTarget.send = false;
INFO_LOG(m_logger) << "--------------- geoPairingData empfangen! -----------------" ;
INFO_LOG(m_logger) << "playerId = " << m_equipmentNumber ;
INFO_LOG(m_logger) << "time = " << (SInt64) m_Time ;
INFO_LOG(m_logger) << "positionLat = " << m_PositionLat ;
INFO_LOG(m_logger) << "positonLon = " << m_PositionLon ;
INFO_LOG(m_logger) << "tr.Data-Size = " << transparentDataAr.size() ;
INFO_LOG(m_logger) << "transparentData = " << transparentDataAr.toHex() ;
QHashIterator<int, CentralEffectSimulation::HandlerParticipant::CesParticipantData> i(aircrafts);
while (i.hasNext())
{
i.next();
DEBUG_LOG(m_logger) << i.key() << ": participantId=" << i.value().participantId()
<< " participantTypeId= " << i.value().participantTypeId()
<< " pos lat=" << i.value().pos().lat()
<< " pos lon=" << i.value().pos().lon()
<< " z=" << i.value().pos().z();
}
GeoPairingDataBase l_Header;
if (!l_Header.parse(transparentDataAr))
{
ERROR_LOG(m_logger) << "Error: Couldn't parse header of transparent Data!" ;
return false;
}
UInt8 l_MessageID = l_Header.m_MessageID;
PanGeoPairingDeviceId l_DeviceID = l_Header.m_DeviceID;
INFO_LOG(m_logger) << "l_MessageID = " << std::hex << (int)l_MessageID ;
INFO_LOG(m_logger) << "l_DeviceID = " << l_DeviceID ;
if (l_MessageID == 0xE3) // Firing_Report
{
INFO_LOG(m_logger) << "--> E3 : Firing Report " ;
switch (l_DeviceID)
{
case PAN_GP_REPORT_MORTAR:
case PAN_GP_REPORT_G5_G6:
case PAN_GP_REPORT_M109:
calculateSingleFire(transparentDataAr, ballisticService);
INFO_LOG(m_logger) << "PAN_GP_REPORT_MORTAR PAN_GP_REPORT_G5_G6 PAN_GP_REPORT_M109 calculateSingleFire";
break;
case PAN_GP_REPORT_MK19:
calculateAreaFire(transparentDataAr, ballisticService);
break;
case PAN_GP_REPORT_IGLA:
case PAN_GP_REQUEST_IGLA:
calculateAirFire(transparentDataAr, aircrafts);
INFO_LOG(m_logger) << "PAN_GP_REPORT_IGLA PAN_GP_REQUEST_IGLA ";
break;
default:
WARNING_LOG(m_logger) << "--> Unknown DeviceID " << l_DeviceID << " used !" ;
return false;
}
}
else
{
WARNING_LOG(m_logger) << "--> Unknown MessageID used ! " ;
return false;
}
return true;
}
void GeoPairing::setMeteo(double winddirection, double windspeed, double temperature, double pressure)
{
// create the global meteodata object
GeoPairingImplMeteoData l_meteoData;
l_meteoData.AirPressure = pressure;
l_meteoData.Temperature = temperature;
l_meteoData.WindDirection = winddirection;
l_meteoData.WindSpeed = windspeed;
GeoPairingImplFactory::setMeteoData(l_meteoData);
}
bool GeoPairing::searchAirTarget(double a_elevation, double azimuth, int &playerId, uint64_t &impactTime)
{
INFO_LOG(m_logger) << "searchAirTarget (IGLA)..." ;
QScopedPointer<GeoPairingImplAirTargetTracker> l_Tracker(GeoPairingImplFactory::createAirTargetTracker());
l_Tracker->setPosition(m_PositionLat, m_PositionLon, m_PositionHeight);
l_Tracker->setTime(m_Time);
return l_Tracker->track(azimuth,
a_elevation,
playerId,
impactTime);
}
void GeoPairing::readAmmunitionIni()
{
AmmuConfig *ammuConfig;
QString FileName = CesGeoPairing::Settings::cesGeopairingIniPath() + QStringLiteral("/") + CesGeoPairing::Settings::cesAmmunitionIniFile();
ammuConfig = AmmuConfig::getInstance();
ammuConfig->initFilename(FileName);
//Zu erst holen wir uns alle WaffenTypen
const QVector<int> typesList = ammuConfig->getIntegerVector(QStringLiteral("WeaponRestriction"), QStringLiteral("Types"));
DEBUG_LOG(m_logger) << "typesList.size=" << typesList.size();
//Wir holen uns alle Munitionen die in Frage kommen heraus // evtl mit Liste?
const QVector<int> ammoList = ammuConfig->getIntegerVector(QStringLiteral("WeaponRestriction"), QStringLiteral("AmmoList"));
DEBUG_LOG(m_logger) << "ammoList=" << ammoList.size();
for (int ammo : ammoList)
{
DEBUG_LOG(m_logger) << "ammoListValue=" << ammo;
QString eleGroup = QStringLiteral("Ammunition") + QStringLiteral("P") + QString::number(ammo) + QStringLiteral("/CWParams");
const QVector<double> minElevataion = ammuConfig->getFloatVector(eleGroup, QStringLiteral("ElevMin"));
DEBUG_LOG(m_logger) << "ammo = " << ammo << " minElevataion.size() =" << minElevataion.size()
<< " " << eleGroup << "/" << QStringLiteral("ElevMin");
const QVector<double> maxElevataion = ammuConfig->getFloatVector(eleGroup, QStringLiteral("ElevMax"));
DEBUG_LOG(m_logger) << "ammo = " << ammo << " maxElevataion.size() =" << maxElevataion.size() << eleGroup << "/" << QStringLiteral("ElevMax");
if (minElevataion.size() != maxElevataion.size())
{
DEBUG_LOG(m_logger) << "Invalid Ammunition Config for : Ammunition" << ammo ;
continue;
}
// Get Allowd fpr all Types
QMap<int, GeoPCharge> mun;
QMap<int, QMap<int, bool> > allowedCombi;
for (int weaponTypeId : typesList)
{
QString alloweKey = QStringLiteral("Allowed") + QString::number(weaponTypeId);
const QMap<int, bool> allowed = ammuConfig->getBoolMap(eleGroup, alloweKey);
DEBUG_LOG(m_logger) << "alloweKey allowed.size() =" << allowed.size() << " " << eleGroup << "/" << alloweKey;
allowedCombi.insert(weaponTypeId, allowed);
//DEBUG_LOG(m_logger) << "allowedCombi.insert(" << weaponTypeId <<", " << allowed << ")";
}
for (int j = 0; j < minElevataion.size(); j++)
{
int _chargeId = j;
double _minEleval = minElevataion.at(j);
double _maxEleval = maxElevataion.at(j);
QMap<int, bool> allowedCombiForCharge;
for (int weaponTypeId : typesList)
{
//hier holen wir nur den erlaubtstatus für die jeweilige ChargeElevation und packen sie in die
//Map des ChargeType
allowedCombiForCharge.insert(weaponTypeId, allowedCombi.value(weaponTypeId).value(j));
DEBUG_LOG(m_logger) << "allowedCombiForCharge.insert(" << weaponTypeId << ", " << allowedCombi.value(weaponTypeId).value(j) << ")";
}
GeoPCharge geoPCharge = GeoPCharge(_chargeId, _minEleval, _maxEleval, allowedCombiForCharge);
mun.insert(j, geoPCharge);
}
m_geoPMunMap.insert(ammo, mun);
}
DEBUG_LOG(m_logger) << "m_geoPMunMap.size=" << m_geoPMunMap.size();
}
@@ -0,0 +1,195 @@
/**
* @RDE_HEADER@
* GeoPairing
* $Id$
* $HeadURL$
* $Author$
*/
#pragma once
#include "../logger.h"
#include <CentralEffectSimulation/handler_participant.h>
#include <QString>
#include <QMap>
#include <FW_Ballistic/BallisticService.hpp>
#include <FW_Ballistic/AmmunitionTypes.hpp>
#include <GeoPairingImpl/GeoPairingImplAirTarget.hpp>
#include <iostream>
#include <memory>
namespace ZSSIWI
{
class AirTargetsInt;
class AutomaticCannonInt;
class GeoPairingDataInt;
class MortarHowitzerInt;
class SurfaceToAirInt;
}
class GeoPairing
{
public:
enum class ElevationError
{
NoError = 0,
ToHigh = 1,
ToLow = 2,
BelowZero = 3
};
struct FireToAircraft
{
qint64 impactTime = 0;
int participantIdTarget = 0;
int ammunitionTypeId = 0;
int equipmentNumberGunner = 0;
bool hit = false;
};
struct ReportTarget
{
QByteArray sendData;
int playerId = 0;
bool send = false;
};
struct SingleFireToCtas
{
qint64 impactTime = 0; int playerId = 0;
int duration = 0;
double impactPositionLat = 0.0;
double impactPositionLong = 0.0;
N_Ballistic::ammunitionTypeIndirectFire ammunitionType = N_Ballistic::UNKNOWN;
bool hit = false;
};
struct AreaFireToCtas
{
int playerId = 0;
qint64 impactTime = 0;
double duration = 0.0;
double impactPositionLat = 0.0;
double impactPositionLong = 0.0;
double fieldWidth = 0.0;
double fieldLength = 0.0;
double heading = 0.0;
int nbrRounds = 0;
N_Ballistic::ammunitionTypeIndirectFire ammunitionType = N_Ballistic::UNKNOWN;
N_Ballistic::ammunitionTypeOSAG ammunitionTypeOSAG = N_Ballistic::UNKNOWN_OSAG;
bool hit = false;
};
private:
struct GeoPCharge
{
int chargeId = 0;
double minEleval = -1.0;
double maxEleval = -1.0;
// QHash<weaponTypeId, allowed yes/no>
QMap<int, bool> isAllowed;
ElevationError checkElevation(double elevation) const
{
if (elevation < 0)
return ElevationError::BelowZero;
if (elevation < minEleval)
return ElevationError::ToLow;
if (elevation > maxEleval)
return ElevationError::ToHigh;
return ElevationError::NoError;
}
// Check if Elevation and Charge is correct, return _false_ if errors accure and
// change the Error integers
bool checkArty(int weaponTypeId, double elevation, ElevationError &eleError, int &chargeError) const
{
eleError = checkElevation(elevation);
bool ret = (eleError == ElevationError::NoError);
if (!isAllowed.value(weaponTypeId)) //Falls wert nicht vorhanden immer Falsche Kombi
{
chargeError = 1;
ret = false;
}
else
chargeError = 0;
return ret;
}
GeoPCharge(int _chargeId, double _minEleval, double _maxEleval, const QMap<int, bool> &_isAllowed)
: chargeId(_chargeId), minEleval(_minEleval), maxEleval(_maxEleval), isAllowed(_isAllowed)
{}
GeoPCharge() = default;
};
using GeoPMunitonMap = QMap<int, QMap<int, GeoPCharge> >;
public:
Q_DISABLE_COPY(GeoPairing)
explicit GeoPairing(const std::shared_ptr<N_Ballistic::BallisticService> &ballisticService);
bool geoPairingData(const std::shared_ptr<N_Ballistic::BallisticService> &ballisticService,
int equipmentNumber,
qint64 time,
double positionLat,
double positionLon,
const QByteArray &transparentDataAr,
const QHash<int, CentralEffectSimulation::HandlerParticipant::CesParticipantData> &aircrafts);
FireToAircraft fireToAircraft() const { return m_fireToAircraft; }
SingleFireToCtas singleFireToCtas() const { return m_singleFireToCtas; }
AreaFireToCtas areaFireToCtas() const { return m_areaFireToCtas; }
ReportTarget reportTarget() const { return m_reportTarget; }
// sets the global meteo conditions
// winddirection in degrees -+180
// windspeed in m/s
// temperature in degrees
// pressure default 1013
static void setMeteo(double winddirection, double windspeed, double temperature, double pressure);
//qint64 getImpactTime() { return m_ImpactTime;}
//double getImpactPositionLat() { return m_ImpactPositionLat;}
//double getImpactPositionLon() { return m_ImpactPositionLon;}
//int getAmmunitionType() { return m_AmmunitionType;}
//N_Ballistic::ammunitionTypeOSAG getAmmunitionTypeOSAG() { return m_AmmunitionTypeOSAG;}
//int getDeviceID() { return m_DeviceID;}
private:
//ZSSIWI::AirTargetsInt *m_airTargets;
//ZSSIWI::AutomaticCannonInt* m_automaticCannon;
//ZSSIWI::GeoPairingDataInt* m_geoPairingData;
//ZSSIWI::MortarHowitzerInt *m_mortarHowitzer;
//ZSSIWI::SurfaceToAirInt* m_surfaceToAir;
QString m_konfigPath; // Pfad fuer Konfigurationsverzeichnis
int m_equipmentNumber = -1;
qint64 m_Time = 0;
double m_PositionLat = 0;
double m_PositionLon = 0;
double m_PositionHeight = 0;
GeoPMunitonMap m_geoPMunMap;
std::shared_ptr<N_Ballistic::BallisticService> m_ballisticService; ///< Pointer Ballistic Service
//N_Ballistic::ammunitionTypeOSAG m_AmmunitionTypeOSAG;
int m_DeviceID = 0;
FireToAircraft m_fireToAircraft;
SingleFireToCtas m_singleFireToCtas;
AreaFireToCtas m_areaFireToCtas;
ReportTarget m_reportTarget;
NGL::INGLLogger &m_logger;
void calculateAirFire(const QByteArray &transparentData,
const QHash<int, CentralEffectSimulation::HandlerParticipant::CesParticipantData> &aircrafts);
void calculateAreaFire(const QByteArray &transparentData,
const std::shared_ptr<N_Ballistic::BallisticService> &ballisticService);
void calculateSingleFire(const QByteArray &transparentData,
const std::shared_ptr<N_Ballistic::BallisticService> &ballisticService);
bool searchAirTarget(double a_elevation, double azimuth, int &playerId, uint64_t &impactTime);
void readAmmunitionIni();
};
@@ -0,0 +1,74 @@
[GeoPairing]
AmmunitionFile = Ammunition.ini
NumberOfEntries = 8
KeyOfEntries = Ammunition
[Precision]
DeltaTime = 0.05
[GeoMagneticField]
# http://www.ngdc.noaa.gov/geomag-web/#declination
# Declination in degrees, + means East, - means West
# UAE, Ruwais : Lat 24° 5' 29" Lon 52° 39' 9"
Date = 2020-02-24
Declination = 2.25
ChangePerYear = 0.333333
# RDE, Bremen : 53° 4' 30" N, 8° 48' 16" E
#Date = 2020-02-24
#Declination = 2.9
#ChangePerYear = 0.18333
[IGLA]
ElevationWindow = 4.0
AzimuthWindow = 4.0
FlightSpeed = 600
DistRange = 5200
FlightHeightMax = 3500
TimeRange = 17
TrackingRange = 8000
ModeAutoProbability = 1.0
ModeManuProbability = 1.0
WrongCOPFactor = 0.5
IRJammerFactor = 0.5
CacheTimeout = 5
[MK19]
RoundsPerMinute = 350
BeatenZoneLength = 7.5
BeatenZoneWidth = 15
[Elevation]
# if more than one file is used: filePaths_rough_to_fine
# example: MapFile = "/usr/share/arcgis/resources/elevation/ele1.tif;/usr/share/arcgis/resources/elevation/ele2.tif"
#
# Bremen:
MapFile = "/usr/share/arcgis/resources/elevation/srtm_38_02.tif"
# AHTC: filePaths_rough_to_fine
# MapFile = "/usr/share/arcgis/resources/elevation/Elevation.tif;/usr/share/arcgis/resources/elevation/AHTC_utm_dgm_surface_wgs84.tif"
# Altmark
# MapFile = "/usr/share/arcgis/resources/elevation/Altmark_dt1.tif"
[AmmunitionMap]
Ammunition1 = "Moerser60mm"
Ammunition2 = "Moerser60mm_S1"
Ammunition3 = "M430"
Ammunition4 = "M385"
Ammunition5 = "HE_M1A2"
Ammunition6 = "VLAP_M9703"
Ammunition7 = "SMK_BE_M2"
Ammunition8 = "CLUSTER_HEHC_M9609"
[ChargeMap]
Ammunition1 = 58.8, 98.1, 129.5, 155.9, 179.9
Ammunition2 = 58.8, 98.1, 129.5, 155.9, 179.9
Ammunition3 = 242
Ammunition4 = 242
Ammunition5 = 450.000, 610.000, 765.000, 911.000, 908.000
Ammunition6 = 912.000
Ammunition7 = 450.000, 610.000, 765.000, 911.000, 908.000
Ammunition8 = 450.000, 610.000, 765.000, 911.000, 908.000
Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

@@ -0,0 +1,241 @@
###########################################################################
# #
# Projekt TES : File "HE-M1-M64Base-TableE.sus" zur Munition "M64" #
# #
# Bei der Auspraegung des Ballistik-Moduls vereinbarte Bezeichnungen #
# Tafel_Namen : ENTFERNUNG, AUFSATZ, FLUGZEIT, -- obligatorisch #
# VORHALT -- projektspezifisch #
# Param_Namen : DELTA_V0, LUFTTEMP, LUFTDRUCK, #
# LAENGSWIND, QUERWIND, #
# PULVERTEMP -- Korrektur-Parameter #
# #
###########################################################################
# Aenderung/Stand: 09.07.14-07:52
Schuss_Tafel =
{
Munition = "HE-M1-M64"
Version = "HE M64 Base Table-E"
Muni_Parameter = { Kaliber = 155.0 Masse = 46.30 V0 = 912.0 }
Std_Parameter = { DELTA_V0 = 0.0
LUFTTEMP = 15.0
LUFTDRUCK = 1013.25
LAENGSWIND= 0.0
QUERWIND = 0.0
PULVERTEMP= 21.1 }
Entfernung_Range= { Min = 100.0 Max = 12100.0 Delta = 100.0 Scheitel = 12228.0 }
Ballistik = "Parabel"
###########################################################################
Standard_Tafel =
{
Spaltengruppe =
{ Belegung = { AUFSATZ = (2) [-]
VORHALT = (3) [-]
FLUGZEIT = (4)
DELTA_RGE = (5) [-]
DELTA_ELEV = (6)
FORK = (7) [-]
DRIFT = (8) [-]
}
Zeilenlaenge = 8
Datenblock =
{
#
# RGE ELEV TOF DELTA DELTA FORK BEARING-CORR. RANGE-CORR.
# ENTF AUFSATZ VORHALT FLUGZEIT RGE ELEV DRIFT CW DEC INC
# [m] [mil] [mil] [sec] [mil] [m] [mil] [mil] [mil] [m] [m]
#
100 2.5 0 0.2 2.4 41 1 0.1 0 0.1 -0.1
200 4.9 0 0.4 2.5 41 1 0.3 0.01 0.2 -0.2
300 7.5 0 0.7 2.6 40 1 0.4 0.01 0.3 -0.3
400 10 0 0.9 2.6 40 1 0.5 0.02 0.4 -0.5
500 12.6 0 1.1 2.6 39 1 0.7 0.02 0.5 -0.6
600 15.2 0 1.4 2.6 39 1 0.8 0.03 0.6 -0.7
700 17.8 0 1.6 2.7 38 1 1 0.03 0.7 -0.8
800 20.5 0 1.8 2.7 38 1 1.1 0.04 0.9 -0.9
900 23.1 0 2.1 2.7 37 1 1.2 0.05 0.9 -1
1000 25.9 0 2.3 2.8 37 1 1.4 0.05 1 -1.1
1100 28.6 0 2.6 2.8 37 1 1.5 0.06 1.1 -1.2
1200 31.4 0 2.8 2.8 36 1 1.6 0.06 1.2 -1.3
1300 34.2 0 3.1 2.8 36 1 1.8 0.07 1.3 -1.4
1400 37.1 0 3.3 2.9 35 1 1.9 0.07 1.4 -1.5
1500 40 0 3.6 2.9 35 1 2.1 0.08 1.5 -1.6
1600 42.9 0 3.8 3 34 1 2.2 0.08 1.6 -1.7
1700 45.9 0 4.1 3 34 1 2.4 0.09 1.7 -1.8
1800 48.9 0 4.3 3 34 1 2.5 0.09 1.8 -1.9
1900 51.9 0 4.6 3 33 1 2.6 0.1 1.8 -2
2000 55 0 4.8 3.1 33 2 2.8 0.1 2 -2.1
2100 58.1 0 5.1 3.1 32 2 2.9 0.11 2.1 -2.2
2200 61.2 0 5.4 3.2 32 2 3.1 0.12 2.1 -2.3
2300 64.4 0 5.7 3.2 32 2 3.2 0.12 2.2 -2.4
2400 67.6 0 5.9 3.3 31 2 3.4 0.13 2.3 -2.4
2500 70.9 0 6.2 3.3 31 2 3.5 0.13 2.4 -2.5
2600 74.2 0 6.5 3.3 31 2 3.7 0.14 2.5 -2.6
2700 77.6 0 6.8 3.4 30 2 3.8 0.14 2.6 -2.7
2800 81 0 7 3.4 30 2 4 0.15 2.7 -2.8
2900 84.4 0 7.3 3.5 29 2 4.1 0.16 2.7 -2.9
3000 87.9 0 7.6 3.5 29 2 4.3 0.16 2.8 -3
3100 91.4 0 7.9 3.5 29 2 4.4 0.17 2.9 -3.1
3200 95 0 8.2 3.6 28 2 4.6 0.17 3 -3.2
3300 98.6 0 8.5 3.7 28 2 4.7 0.18 3 -3.3
3400 102.3 0 8.8 3.7 28 2 4.9 0.19 3.1 -3.3
3500 106 0 9.1 3.8 27 3 5.1 0.19 3.2 -3.4
3600 109.8 0 9.4 3.8 27 3 5.2 0.2 3.3 -3.5
3700 113.6 0 9.7 3.8 27 3 5.4 0.2 3.3 -3.5
3800 117.4 0 10 3.9 26 3 5.5 0.21 3.4 -3.6
3900 121.3 0 10.3 4 26 3 5.7 0.21 3.5 -3.7
4000 125.3 0 10.6 3.9 26 3 5.9 0.22 3.5 -3.8
4100 129.2 0 10.9 4 26 3 6 0.22 3.6 -3.8
4200 133.3 0 11.3 4.1 25 3 6.2 0.23 3.6 -3.9
4300 137.3 0 11.6 4 25 3 6.3 0.24 3.7 -3.9
4400 141.4 0 11.9 4.2 25 3 6.5 0.24 3.7 -4
4500 145.6 0 12.2 4.2 24 3 6.7 0.25 3.8 -4.1
4600 149.8 0 12.5 4.2 24 3 6.8 0.25 3.8 -4.1
4700 154 0 12.9 4.3 24 4 7 0.25 3.9 -4.2
4800 158.3 0 13.2 4.3 24 4 7.2 0.26 3.9 -4.2
4900 162.6 0 13.5 4.3 24 4 7.3 0.26 4 -4.3
5000 166.9 0 13.8 4.3 23 4 7.5 0.27 4 -4.3
5100 171.3 0 14.2 4.4 23 4 7.6 0.27 4.1 -4.4
5200 175.7 0 14.5 4.4 23 4 7.8 0.28 4.1 -4.4
5300 180.2 0 14.8 4.5 23 4 8 0.28 4.2 -4.5
5400 184.7 0 15.2 4.6 23 4 8.1 0.29 4.2 -4.5
5500 189.3 0 15.5 4.6 22 4 8.3 0.29 4.3 -4.6
5600 193.9 0 15.8 4.6 22 4 8.4 0.3 4.3 -4.6
5700 198.5 0 16.2 4.7 22 5 8.6 0.3 4.3 -4.7
5800 203.2 0 16.5 4.8 22 5 8.8 0.3 4.4 -4.7
5900 208 0 16.9 4.8 22 5 8.9 0.31 4.4 -4.8
6000 212.7 0 17.2 4.8 21 5 9.1 0.31 4.5 -4.8
6100 217.5 0 17.6 4.8 21 5 9.2 0.32 4.5 -4.8
6200 222.4 0 17.9 4.9 21 5 9.4 0.32 4.6 -4.9
6300 227.3 0 18.3 5 21 5 9.5 0.32 4.6 -4.9
6400 232.3 0 18.6 5 21 5 9.7 0.33 4.6 -5
6500 237.3 0 19 5 20 6 9.8 0.33 4.7 -5
6600 242.3 0 19.3 5 20 6 10 0.34 4.7 -5
6700 247.4 0 19.7 5.1 20 6 10.1 0.34 4.7 -5.1
6800 252.5 0 20.1 5.2 20 6 10.3 0.34 4.8 -5.1
6900 257.7 0 20.4 5.2 20 6 10.4 0.35 4.8 -5.2
7000 262.9 0 20.8 5.3 19 6 10.5 0.35 4.8 -5.2
7100 268.2 0 21.2 5.4 19 6 10.7 0.36 4.9 -5.2
7200 273.6 0 21.5 5.3 19 7 10.8 0.36 4.9 -5.3
7300 278.9 0 21.9 5.4 19 7 11 0.36 5 -5.3
7400 284.4 0 22.3 5.4 19 7 11.1 0.37 5 -5.3
7500 289.8 0 22.7 5.5 19 7 11.2 0.37 5 -5.4
7600 295.4 0 23 5.6 18 7 11.4 0.37 5.1 -5.4
7700 301 0 23.4 5.6 18 7 11.5 0.38 5.1 -5.5
7800 306.6 0 23.8 5.6 18 7 11.6 0.38 5.1 -5.5
7900 312.3 0 24.2 5.8 18 8 11.8 0.38 5.2 -5.5
8000 318.2 0 24.6 5.9 18 8 11.9 0.39 5.2 -5.6
8100 324.1 0 25 5.9 17 8 12 0.39 5.3 -5.6
8200 330 0 25.4 5.9 17 8 12.2 0.4 5.3 -5.7
8300 336 0 25.8 6.1 17 8 12.3 0.4 5.3 -5.7
8400 342.1 0 26.2 6.1 17 9 12.4 0.4 5.4 -5.7
8500 348.2 0 26.7 6.1 17 9 12.6 0.41 5.4 -5.8
8600 354.4 0 27.1 6.3 16 9 12.7 0.41 5.4 -5.8
8700 360.7 0 27.5 6.4 16 9 12.8 0.41 5.5 -5.8
8800 367.1 0 27.9 6.4 16 9 12.9 0.42 5.5 -5.9
8900 373.6 0 28.4 6.5 16 10 13.1 0.42 5.5 -5.9
9000 380.1 0 28.8 6.6 16 10 13.2 0.43 5.6 -6
9100 386.8 0 29.2 6.8 15 10 13.3 0.43 5.6 -6
9200 393.7 0 29.7 6.9 15 11 13.4 0.43 5.7 -6
9300 400.6 0 30.2 6.9 15 11 13.5 0.44 5.7 -6.1
9400 407.6 0 30.6 7 15 11 13.7 0.44 5.7 -6.1
9500 414.6 0 31.1 7.1 15 11 13.8 0.45 5.8 -6.1
9600 421.7 0 31.5 7.3 14 12 13.9 0.45 5.8 -6.2
9700 429.1 0 32 7.5 14 12 14 0.45 5.8 -6.2
9800 436.8 0 32.5 7.8 13 13 14.1 0.46 5.9 -6.3
9900 444.6 0 33 7.8 13 13 14.3 0.46 5.9 -6.3
10000 452.4 0 33.5 7.8 13 13 14.4 0.47 6 -6.3
10100 460.1 0 34 7.8 13 13 14.5 0.47 6 -6.4
10200 468 0 34.5 8.2 13 14 14.6 0.48 6.1 -6.5
10300 476.5 0 35.1 8.6 12 15 14.7 0.48 6.1 -6.5
10400 485.2 0 35.6 8.8 12 15 14.9 0.48 6.2 -6.6
10500 494.1 0 36.2 8.9 12 15 15 0.49 6.2 -6.6
10600 503.1 0 36.8 9.1 12 16 15.2 0.49 6.3 -6.6
10700 512.2 0 37.3 9.2 11 16 15.3 0.5 6.3 -6.7
10800 521.5 0 37.9 9.6 11 17 15.4 0.5 6.3 -6.7
10900 531.4 0 38.5 10.2 10 18 15.6 0.51 6.4 -6.8
11000 541.9 0 39.2 10.5 10 19 15.8 0.51 6.4 -6.8
11100 552.5 0 39.8 10.9 10 20 15.9 0.52 6.5 -6.9
11200 563.7 0 40.5 11.5 9 21 16.1 0.53 6.5 -6.9
11300 575.5 0 41.2 12.2 9 23 16.4 0.53 6.5 -7.0
11400 588.1 0 42.0 13.0 8 24 16.6 0.54 6.6 -7.0
11500 601.4 0 42.8 13.4 8 25 16.8 0.55 6.7 -7.1
11600 614.8 0 43.6 13.9 8 27 17.1 0.55 6.7 -7.1
11700 629.3 0 44.4 15.2 7 29 17.4 0.56 6.8 -7.2
11800 645.2 0 45.4 17.3 6 34 17.8 0.57 6.8 -7.2
11900 663.9 0 46.4 20.4 5 40 18.3 0.58 6.9 -7.3
12000 685.9 0 47.7 24.5 5 48 18.9 0.59 6.9 -7.4
12100 713.0 0 49.2 52.9 5 48 19.7 0.61 7.0 -7.4
12228 791.7 0 52 78.6 5 48 22 0.66 7.0 -7.5
12100 870.3 0 57.3 53.2 5 48 27.8 0.71 7.1 -7.6
12000 898.1 0 58.7 24.6 5 50 30.1 0.73 7.1 -7.5
11900 919.4 0 59.7 19.8 6 41 32.1 0.75 7.1 -7.5
11800 937.6 0 60.5 17 6 35 33.9 0.76 7 -7.4
11700 953.5 0 61.3 15.2 7 31 35.7 0.78 7 -7.4
11600 968 0 61.9 13.9 8 28 37.4 0.79 6.9 -7.3
11500 981.3 0 62.5 12.9 8 26 39.1 0.81 6.9 -7.3
11400 993.7 0 63 12.1 9 24 40.9 0.82 6.8 -7.2
11300 1005.4 0 63.5 11.4 9 23 42.6 0.83 6.8 -7.2
11200 1016.4 0 64 10.8 10 22 44.3 0.84 6.7 -7.1
11100 1026.9 0 64.4 10.3 10 21 46 0.86 6.7 -7.1
11000 1036.9 0 64.8 9.8 11 20 47.7 0.87 6.6 -7
10900 1046.5 0 65.2 9.5 11 19 49.4 0.88 6.6 -7
10800 1055.8 0 65.6 9.1 11 18 51.2 0.89 6.5 -6.9
10700 1064.7 0 65.9 8.8 12 18 53 0.91 6.5 -6.9
10600 1073.4 0 66.3 8.5 12 17 54.8 0.92 0.92 -6.8
10500 1081.7 0 66.6 8.3 13 16 56.6 0.93 0.93 -6.7
10400 1089.9 0 66.9 8.1 13 16 58.4 0.95 0.95 -6.7
10300 1097.8 0 67.2 7.8 13 15 60.2 0.96 0.96 -6.6
10200 1105.5 0 67.5 7.6 14 15 62.1 0.97 0.97 -6.6
10100 1113 0 67.8 7.4 14 14 64 0.99 0.99 -6.5
10000 1120.3 0 68.1 7.3 14 14 65.9 1.00 1 -6.5
9900 1127.5 0 68.3 7.1 15 14 67.8 1.01 1.01 -6.4
9800 1134.6 0 68.6 7 15 13 69.8 1.03 1.03 -6.3
9700 1141.4 0 68.8 6.8 15 13 71.7 1.04 1.04 -6.3
9600 1148.2 0 69.1 6.7 15 13 73.7 1.06 1.06 -6.2
9500 1154.8 0 69.3 6.6 16 12 75.7 1.07 1.07 -6.2
9400 1161.3 0 69.5 6.4 16 12 77.8 1.09 1.09 -6.1
9300 1167.7 0 69.7 6.3 16 12 79.8 1.10 1.1 -6
9200 1174 0 70 6.2 17 12 81.9 1.12 1.12 -6
9100 1180.1 0 70.2 6.1 17 11 84 1.13 1.13 -5.9
9000 1186.2 0 70.4 6 17 11 86 1.15 1.15 -5.9
8900 1192.2 0 70.6 6 17 11 88.1 1.17 1.17 -5.8
8800 1198.1 0 70.8 5.8 18 11 90.2 1.18 1.18 -5.7
8700 1203.8 0 70.9 5.8 18 11 92.3 1.20 1.2 -5.7
8600 1209.6 0 71.1 5.7 18 10 94.5 1.22 1.22 -5.6
8500 1215.2 0 71.3 5.5 18 10 96.5 1.24 1.24 -5.6
8400 1220.7 0 71.5 5.5 19 10 98.6 1.26 1.26 -5.5
8300 1226.2 0 71.7 5.5 19 10 100.7 1.28 1.28 -5.4
8200 1231.6 0 71.8 5.4 19 10 102.7 1.30 1.3 -5.3
8100 1236.9 0 72 5.3 19 9 104.8 1.32 1.32 -5.3
8000 1242.2 0 72.1 5.3 20 9 106.7 1.34 1.34 -5.2
7900 1247.4 0 72.3 5.2 20 9 108.6 1.36 4.9 -5.2
7800 1252.5 0 72.5 5.1 20 9 110.5 1.39 4.8 -5.1
7700 1257.6 0 72.6 5 20 9 112.2 1.41 4.7 -5
7600 1262.6 0 72.7 5 21 9 113.9 1.43 4.7 -5
7500 1267.5 0 72.9 4.9 21 8 115.4 1.46 4.6 -4.9
7400 1272.3 0 73 4.8 21 8 117 1.49 4.5 -4.9
7300 1277.1 0 73.2 4.8 21 8 118.7 1.51 4.5 -4.8
7200 1281.9 0 73.3 4.8 22 8 120.5 1.54 4.5 -4.7
7100 1286.6 0 73.4 4.8 22 8 122.4 1.57 4.4 -4.7
7000 1291.4 0 73.6 4.8 22 8 124.1 1.6 4.3 -4.6
6900 1296.1 0 73.7 4.8 21 8 125.7 1.63 4.3 -4.5
6800 1300.9 0 73.8 4.8 21 8 127.2 1.66 4.2 -4.5
6700 1305.7 0 73.9 4.8 21 8 128.7 1.69 4.2 -4.4
6600 1310.5 0 74 4.8 21 8 130.1 1.72 4.1 -4.3
6500 1315.3 0 74.1 4.8 21 8 131.3 1.75 4 -4.3
6400 1320.1 0 74.2 4.8 21 8 132.6 1.78 4 -4.2
6300 1324.9 0 74.3 4.8 22 8 133.7 1.82 3.9 -4.2
6200 1329.6 0 74.4 4.8 22 8 134.7 1.85 3.8 -4.1
6100 1334.4 0 74.5 4.8 22 7 135.8 1.88 3.8 -4
6000 1339.1 0 74.6 4.7 22 7 136.8 1.92 3.7 -4
5900 1343.8 0 74.6 4.7 22 7 137.9 1.95 3.6 -3.9
5800 1348.5 0 74.7 4.7 22 7 138.9 1.99 3.6 -3.8
}
} Ende Spaltengruppe
} Ende Standard_Tafel
} Ende Schuss_Tafel
@@ -0,0 +1,311 @@
###########################################################################
# #
# Projekt TES : File "HE-M1-M64Incr3-TableE.sus" zur Munition "M64" #
# #
# Bei der Auspraegung des Ballistik-Moduls vereinbarte Bezeichnungen #
# Tafel_Namen : ENTFERNUNG, AUFSATZ, FLUGZEIT, -- obligatorisch #
# VORHALT -- projektspezifisch #
# Param_Namen : DELTA_V0, LUFTTEMP, LUFTDRUCK, #
# LAENGSWIND, QUERWIND, #
# PULVERTEMP -- Korrektur-Parameter #
# #
###########################################################################
# Aenderung/Stand: 09.07.14-07:52
Schuss_Tafel =
{
Munition = "HE-M1-M64"
Version = "HE M64 Incr3 Table-E"
Muni_Parameter = { Kaliber = 155.0 Masse = 46.30 V0 = 912.0 }
Std_Parameter = { DELTA_V0 = 0.0
LUFTTEMP = 15.0
LUFTDRUCK = 1013.25
LAENGSWIND= 0.0
QUERWIND = 0.0
PULVERTEMP= 21.1 }
Entfernung_Range= { Min = 100.0 Max = 17700.0 Delta = 100.0 Scheitel = 17785.0 }
Ballistik = "Parabel"
###########################################################################
Standard_Tafel =
{
Spaltengruppe =
{ Belegung = { AUFSATZ = (2) [-]
VORHALT = (3) [-]
FLUGZEIT = (4)
DELTA_RGE = (5) [-]
DELTA_ELEV = (6)
FORK = (7) [-]
DRIFT = (8) [-]
}
Zeilenlaenge = 8
Datenblock =
{
#
# RGE ELEV TOF DELTA DELTA FORK BEARING-CORR. RANGE-CORR.
# ENTF AUFSATZ VORHALT FLUGZEIT RGE ELEV DRIFT CW DEC INC
# [m] [mil] [mil] [sec] [mil] [m] [mil] [mil] [mil] [m] [m]
#
100 1.3 0 0.2 1.4 76 1 0.1 0.00 0.1 -0.2
200 2.7 0 0.3 1.4 75 1 0.2 0.01 0.2 -0.5
300 4.0 0 0.5 1.4 74 1 0.3 0.01 0.4 -0.8
400 5.4 0 0.7 1.3 74 1 0.4 0.01 0.5 -1.0
500 6.7 0 0.8 1.4 73 1 0.5 0.01 0.6 -1.2
600 8.1 0 1.0 1.4 72 1 0.6 0.02 0.7 -1.5
700 9.5 0 1.2 1.4 72 1 0.7 0.02 0.9 -1.8
800 10.9 0 1.3 1.4 71 1 0.8 0.02 1.0 -2.0
900 12.4 0 1.5 1.5 70 1 0.9 0.03 1.1 -2.2
1000 13.8 0 1.7 1.5 70 1 1.0 0.03 1.2 -2.5
1100 15.3 0 1.9 1.5 69 1 1.1 0.03 1.4 -2.7
1200 16.7 0 2.0 1.5 68 1 1.2 0.03 1.4 -2.9
1300 18.2 0 2.2 1.5 68 1 1.3 0.04 1.6 -3.2
1400 19.7 0 2.4 1.5 67 1 1.4 0.04 1.7 -3.4
1500 21.2 0 2.6 1.5 67 1 1.6 0.04 1.8 -3.6
1600 22.7 0 2.8 1.5 66 1 1.7 0.05 1.9 -3.9
1700 24.3 0 3.0 1.5 65 1 1.8 0.05 2.0 -4.1
1800 25.8 0 3.1 1.6 65 1 1.9 0.05 2.1 -4.3
1900 27.4 0 3.3 1.6 64 1 2.0 0.06 2.3 -4.6
2000 28.9 0 3.5 1.6 64 1 2.1 0.06 2.4 -4.8
2100 30.5 0 3.7 1.6 63 1 2.2 0.06 2.5 -5.0
2200 32.1 0 3.9 1.6 62 1 2.3 0.07 2.6 -5.2
2300 33.8 0 4.1 1.7 62 1 2.4 0.07 2.7 -5.4
2400 35.4 0 4.3 1.6 61 1 2.5 0.07 2.8 -5.6
2500 37.1 0 4.5 1.6 61 1 2.6 0.08 3.0 -5.9
2600 38.7 0 4.7 1.7 60 1 2.7 0.08 3.1 -6.1
2700 40.4 0 4.9 1.7 59 1 2.8 0.08 3.2 -6.3
2800 42.1 0 5.1 1.8 59 1 2.9 0.09 3.3 -6.5
2900 43.9 0 5.3 1.8 58 1 3.0 0.09 3.4 -6.7
3000 45.6 0 5.5 1.7 58 1 3.2 0.09 3.5 -6.9
3100 47.3 0 5.7 1.8 57 1 3.3 0.10 3.6 -7.2
3200 49.1 0 5.9 1.8 57 2 3.4 0.10 3.7 -7.4
3300 50.9 0 6.1 1.8 56 2 3.5 0.10 3.8 -7.6
3400 52.7 0 6.3 1.8 55 2 3.6 0.11 3.9 -7.8
3500 54.6 0 6.5 1.9 55 2 3.7 0.11 4.0 -7.9
3600 56.4 0 6.7 1.9 54 2 3.8 0.11 4.0 -8.2
3700 58.3 0 6.9 1.8 54 2 3.9 0.12 4.2 -8.4
3800 60.1 0 7.1 1.9 53 2 4.0 0.12 4.2 -8.6
3900 62.1 0 7.3 2.0 53 2 4.1 0.12 4.4 -8.8
4000 64.0 0 7.5 1.9 52 2 4.2 0.13 4.4 -8.9
4100 65.9 0 7.8 2.0 52 2 4.4 0.13 4.6 -9.1
4200 67.9 0 8.0 2.0 51 2 4.5 0.13 4.6 -9.3
4300 69.9 0 8.2 2.0 51 2 4.6 0.14 4.7 -9.5
4400 71.9 0 8.4 2.0 50 2 4.7 0.14 4.8 -9.6
4500 73.9 0 8.6 2.0 50 2 4.8 0.15 4.9 -9.9
4600 75.9 0 8.9 2.0 49 2 4.9 0.15 5.0 -10.0
4700 78.0 0 9.1 2.1 49 2 5.0 0.15 5.1 -10.3
4800 80.1 0 9.3 2.1 48 2 5.1 0.16 5.2 -10.4
4900 82.2 0 9.6 2.2 48 2 5.2 0.16 5.3 -10.6
5000 84.4 0 9.8 2.2 47 2 5.4 0.16 5.4 -10.7
5100 86.5 0 10.0 2.1 47 2 5.5 0.17 5.5 -11.0
5200 88.7 0 10.3 2.2 46 2 5.6 0.17 5.6 -11.1
5300 90.9 0 10.5 2.2 46 2 5.7 0.18 5.6 -11.3
5400 93.1 0 10.7 2.3 45 2 5.8 0.18 5.7 -11.4
5500 95.4 0 11.0 2.3 45 2 5.9 0.18 5.8 -11.6
5600 97.7 0 11.2 2.3 44 2 6.0 0.19 5.9 -11.7
5700 100.0 0 11.5 2.3 44 2 6.1 0.19 6.0 -11.9
5800 102.3 0 11.7 2.3 43 3 6.3 0.20 6.1 -12.0
5900 104.7 0 12.0 2.3 43 3 6.4 0.20 6.2 -12.2
6000 107.0 0 12.2 2.4 42 3 6.5 0.20 6.2 -12.3
6100 109.4 0 12.5 2.5 42 3 6.6 0.21 6.3 -12.5
6200 111.9 0 12.7 2.5 41 3 6.7 0.21 6.4 -12.7
6300 114.3 0 13.0 2.5 41 3 6.8 0.22 6.5 -12.9
6400 116.8 0 13.3 2.5 40 3 6.9 0.22 6.5 -13.0
6500 119.3 0 13.5 2.5 40 3 7.1 0.23 6.6 -13.2
6600 121.9 0 13.8 2.6 40 3 7.2 0.23 6.7 -13.3
6700 124.5 0 14.1 2.6 39 3 7.3 0.23 6.8 -13.5
6800 127.1 0 14.3 2.6 39 3 7.4 0.24 6.9 -13.7
6900 129.7 0 14.6 2.6 38 3 7.5 0.24 7.0 -13.8
7000 132.4 0 14.9 2.7 38 3 7.6 0.25 7.0 -14.0
7100 135.1 0 15.1 2.7 37 3 7.7 0.25 7.1 -14.1
7200 137.8 0 15.4 2.8 37 3 7.9 0.26 7.2 -14.2
7300 140.6 0 15.7 2.8 37 3 8.0 0.26 7.2 -14.3
7400 143.4 0 16.0 2.8 36 4 8.1 0.26 7.3 -14.5
7500 146.2 0 16.3 2.8 36 4 8.2 0.27 7.4 -14.7
7600 149.0 0 16.6 2.8 35 4 8.3 0.27 7.5 -14.8
7700 151.9 0 16.9 2.9 35 4 8.4 0.28 7.6 -15.0
7800 154.9 0 17.1 3.0 34 4 8.5 0.28 7.6 -15.1
7900 157.8 0 17.4 3.0 34 4 8.7 0.29 7.7 -15.3
8000 160.8 0 17.7 3.0 34 4 8.8 0.29 7.7 -15.3
8100 163.8 0 18.0 3.0 33 4 8.9 0.30 7.8 -15.5
8200 166.9 0 18.3 3.1 33 4 9.0 0.30 7.9 -15.7
8300 170.0 0 18.6 3.2 32 4 9.1 0.31 7.9 -15.8
8400 173.2 0 19.0 3.2 32 4 9.2 0.31 8.0 -16.0
8500 176.3 0 19.3 3.2 32 4 9.3 0.32 8.1 -16.0
8600 179.6 0 19.6 3.3 31 5 9.5 0.32 8.2 -16.2
8700 182.8 0 19.9 3.3 31 5 9.6 0.32 8.2 -16.3
8800 186.1 0 20.2 3.3 31 5 9.7 0.33 8.3 -16.4
8900 189.4 0 20.5 3.3 30 5 9.8 0.33 8.3 -16.6
9000 192.8 0 20.8 3.4 30 5 9.9 0.34 8.4 -16.7
9100 196.2 0 21.2 3.4 30 5 10.0 0.34 8.4 -16.8
9200 199.7 0 21.5 3.5 29 5 10.1 0.35 8.5 -17.0
9300 203.1 0 21.8 3.5 29 5 10.3 0.35 8.6 -17.0
9400 206.7 0 22.1 3.5 29 5 10.4 0.36 8.6 -17.2
9500 210.2 0 22.5 3.6 28 6 10.5 0.36 8.7 -17.3
9600 213.8 0 22.8 3.6 28 6 10.6 0.36 8.8 -17.4
9700 217.4 0 23.1 3.7 28 6 10.7 0.37 8.8 -17.5
9800 221.1 0 23.4 3.7 28 6 10.8 0.37 8.9 -17.6
9900 224.8 0 23.8 3.8 27 6 10.9 0.38 8.9 -17.7
10000 228.6 0 24.1 3.8 27 6 11.0 0.38 9.0 -17.8
10100 232.3 0 24.4 3.8 27 6 11.1 0.39 9.0 -18.0
10200 236.2 0 24.8 3.8 27 6 11.3 0.39 9.1 -18.0
10300 240.0 0 25.1 3.8 26 6 11.4 0.39 9.1 -18.1
10400 243.9 0 25.5 3.9 26 7 11.5 0.40 9.2 -18.2
10500 247.9 0 25.8 4.0 26 7 11.6 0.40 9.2 -18.3
10600 251.8 0 26.2 4.0 26 7 11.7 0.41 9.3 -18.4
10700 255.9 0 26.5 4.0 25 7 11.8 0.41 9.3 -18.5
10800 259.9 0 26.9 4.1 25 7 11.9 0.41 9.4 -18.7
10900 264.0 0 27.2 4.1 25 7 12.0 0.42 9.5 -18.7
11000 268.1 0 27.6 4.1 25 7 12.1 0.42 9.5 -18.8
11100 272.3 0 27.9 4.2 24 8 12.2 0.43 9.5 -19.0
11200 276.5 0 28.3 4.3 24 8 12.3 0.43 9.6 -19.0
11300 280.8 0 28.6 4.3 24 8 12.4 0.43 9.6 -19.1
11400 285.1 0 29.0 4.4 24 8 12.5 0.44 9.7 -19.3
11500 289.5 0 29.4 4.4 23 8 12.6 0.44 9.7 -19.4
11600 293.9 0 29.7 4.4 23 8 12.7 0.45 9.8 -19.4
11700 298.3 0 30.1 4.4 23 8 12.7 0.45 9.8 -19.5
11800 302.8 0 30.5 4.5 23 9 12.8 0.45 9.9 -19.7
11900 307.2 0 30.8 4.5 23 9 12.9 0.46 9.9 -19.7
12000 311.8 0 31.2 4.5 23 9 13.0 0.46 10.0 -19.7
12100 316.3 0 31.6 4.6 22 9 13.1 0.47 10.0 -19.8
12200 321.0 0 32.0 4.7 22 9 13.2 0.47 10.0 -19.9
12300 325.7 0 32.4 4.8 22 10 13.3 0.47 10.1 -20.1
12400 330.5 0 32.7 4.8 21 10 13.3 0.48 10.2 -20.1
12500 335.3 0 33.1 4.9 21 10 13.4 0.48 10.2 -20.2
12600 340.2 0 33.5 4.9 21 10 13.5 0.48 10.2 -20.3
12700 345.1 0 33.9 4.9 21 10 13.6 0.49 10.3 -20.4
12800 350.0 0 34.3 4.9 21 10 13.7 0.49 10.3 -20.5
12900 355.0 0 34.7 5.0 20 11 13.7 0.50 10.4 -20.6
13000 360.0 0 35.1 5.1 20 11 13.8 0.50 10.4 -20.7
13100 365.1 0 35.5 5.1 20 11 13.9 0.50 10.4 -20.7
13200 370.3 0 35.9 5.2 20 11 14.0 0.51 10.5 -20.8
13300 375.5 0 36.3 5.3 20 11 14.0 0.51 10.5 -20.9
13400 380.8 0 36.7 5.3 19 12 14.1 0.51 10.6 -21.0
13500 386.1 0 37.2 5.3 19 12 14.2 0.52 10.6 -21.1
13600 391.4 0 37.6 5.4 19 12 14.2 0.52 10.7 -21.1
13700 396.9 0 38.0 5.4 19 12 14.3 0.52 10.7 -21.2
13800 402.3 0 38.4 5.5 19 12 14.4 0.53 10.7 -21.3
13900 407.9 0 38.9 5.6 18 13 14.4 0.53 10.8 -21.4
14000 413.5 0 39.3 5.7 18 13 14.5 0.54 10.8 -21.5
14100 419.2 0 39.7 5.7 18 13 14.5 0.54 10.9 -21.7
14200 424.9 0 40.2 5.8 18 14 14.6 0.54 10.9 -21.7
14300 430.8 0 40.6 5.9 17 14 14.7 0.55 10.9 -21.7
14400 436.7 0 41.1 6.1 17 14 14.7 0.55 11.0 -21.8
14500 442.9 0 41.5 6.2 17 15 14.8 0.55 11.1 -21.9
14600 449.1 0 42.0 6.2 17 15 14.9 0.56 11.1 -22.0
14700 455.2 0 42.5 6.1 17 15 14.9 0.56 11.1 -22.1
14800 461.3 0 42.9 6.2 17 15 15.0 0.56 11.2 -22.1
14900 467.6 0 43.4 6.4 16 16 15.0 0.57 11.2 -22.3
15000 474.0 0 43.9 6.5 16 16 15.1 0.57 11.3 -22.3
15100 480.6 0 44.4 6.7 16 17 15.2 0.57 11.3 -22.4
15200 487.4 0 44.9 6.8 15 17 15.2 0.58 11.3 -22.4
15300 494.2 0 45.4 6.8 15 17 15.3 0.58 11.4 -22.6
15400 501.0 0 45.9 6.8 15 17 15.4 0.59 11.4 -22.7
15500 507.9 0 46.4 7.0 15 18 15.4 0.59 11.4 -22.8
15600 515.0 0 46.9 7.2 15 18 15.5 0.59 11.5 -22.8
15700 522.2 0 47.4 7.3 14 19 15.6 0.60 11.5 -22.9
15800 529.5 0 48.0 7.4 14 19 15.7 0.60 11.6 -23.0
15900 537.0 0 48.5 7.6 14 20 15.8 0.60 11.6 -23.1
16000 544.7 0 49.1 7.8 13 20 15.9 0.61 11.6 -23.1
16100 552.5 0 49.6 7.9 13 21 15.9 0.61 11.8 -23.3
16200 560.6 0 50.2 8.2 13 22 16.0 0.62 11.8 -23.4
16300 568.9 0 50.8 8.5 12 23 16.2 0.62 11.9 -23.6
16400 577.5 0 51.4 8.7 12 24 16.3 0.62 12.0 -23.8
16500 586.3 0 52.1 9.0 12 25 16.4 0.63 12.0 -23.8
16600 595.5 0 52.7 9.4 11 26 16.6 0.63 12.1 -24.0
16700 605.0 0 53.4 9.8 11 27 16.7 0.64 12.2 -24.1
16800 615.0 0 54.1 10.2 10 28 16.9 0.64 12.3 -24.3
16900 625.4 0 54.8 10.7 10 30 17.1 0.65 12.3 -24.4
17000 636.4 0 55.6 11.3 9 32 17.3 0.65 12.4 -24.6
17100 648.0 0 56.4 12.0 9 34 17.6 0.66 12.5 -24.8
17200 660.4 0 57.3 13.0 8 37 17.9 0.67 12.6 -25.0
17300 673.9 0 58.2 14.1 8 40 18.2 0.67 12.7 -25.1
17400 688.7 0 59.2 15.8 7 45 18.7 0.68 12.8 -25.4
17500 705.4 0 60.3 18.4 6 53 19.2 0.69 12.8 -25.6
17600 725.4 0 61.7 23.1 5 67 19.8 0.70 13.0 -25.8
17700 751.7 0 63.4 40.3 5 68 20.9 0.72 13.1 -26.1
17785 806.0 0 66.0 54.0 4 72 25.0 0.76 13.4 -26.5
17700 859.7 0 70.3 40.5 5 68 27.8 0.79 13.4 -26.7
17600 887.0 0 72.0 23.5 5 70 30.4 0.81 13.4 -26.8
17500 906.7 0 73.2 18.0 6 54 32.6 0.83 13.4 -26.7
17400 922.9 0 74.2 15.1 7 45 34.5 0.84 13.4 -26.6
17300 937.0 0 75.0 13.3 8 40 36.4 0.85 13.3 -26.6
17200 949.5 0 75.7 12.0 9 36 38.2 0.87 13.3 -26.5
17100 961.0 0 76.4 11.0 10 33 39.9 0.88 13.2 -26.5
17000 971.6 0 77.0 10.3 10 31 41.7 0.89 13.2 -26.3
16900 981.6 0 77.6 9.7 11 29 43.3 0.90 13.2 -26.2
16800 990.9 0 78.1 9.1 11 27 45.0 0.91 13.1 -26.1
16700 999.8 0 78.6 8.7 12 26 46.7 0.92 13.0 -26.0
16600 1008.3 0 79.1 8.3 13 25 48.4 0.93 13.0 -25.9
16500 1016.4 0 79.5 7.9 13 23 50.0 0.94 12.9 -25.8
16400 1024.1 0 79.9 7.6 14 23 51.7 0.95 12.8 -25.7
16300 1031.6 0 80.3 7.4 14 22 53.4 0.96 12.8 -25.5
16200 1038.8 0 80.7 7.1 15 21 55.1 0.97 12.7 -25.4
16100 1045.8 0 81.1 6.9 15 20 56.8 0.98 12.7 -25.3
16000 1052.6 0 81.5 6.7 15 20 58.5 0.99 12.6 -25.1
15900 1059.2 0 81.8 6.5 16 19 60.2 1.00 12.5 -25.1
15800 1065.6 0 82.1 6.3 16 18 62.0 1.01 12.5 -24.9
15700 1071.8 0 82.5 6.1 17 18 63.7 1.02 12.4 -24.8
15600 1077.8 0 82.8 5.9 17 17 65.4 1.03 12.4 -24.7
15500 1083.7 0 83.1 5.8 18 17 67.2 1.04 12.3 -24.6
15400 1089.5 0 83.4 5.8 18 17 68.9 1.05 12.2 -24.4
15300 1095.2 0 83.7 5.6 18 16 70.7 1.06 12.1 -24.3
15200 1100.7 0 83.9 5.5 19 16 72.5 1.07 12.1 -24.2
15100 1106.1 0 84.2 5.4 19 15 74.2 1.08 12.0 -24.1
15000 1111.5 0 84.5 5.3 19 15 76.1 1.09 12.0 -23.9
14900 1116.7 0 84.7 5.2 20 15 77.9 1.10 11.9 -23.8
14800 1121.8 0 85.0 5.1 20 14 79.7 1.11 11.8 -23.6
14700 1126.8 0 85.2 4.9 21 14 81.5 1.12 11.7 -23.5
14600 1131.7 0 85.5 4.8 21 14 83.4 1.13 11.6 -23.4
14500 1136.5 0 85.7 4.8 21 14 85.2 1.14 11.6 -23.2
14400 1141.3 0 85.9 4.7 22 13 87.1 1.15 11.5 -23.1
14300 1145.9 0 86.1 4.6 22 13 89.0 1.16 11.5 -23.0
14200 1150.5 0 86.3 4.6 22 13 90.9 1.17 11.4 -22.8
14100 1155.1 0 86.5 4.5 23 13 92.7 1.19 11.3 -22.7
14000 1159.6 0 86.8 4.5 23 12 94.6 1.20 11.3 -22.5
13900 1164.0 0 87.0 4.4 23 12 96.6 1.21 11.2 -22.4
13800 1168.4 0 87.2 4.3 24 12 98.5 1.22 11.1 -22.3
13700 1172.7 0 87.3 4.3 24 12 100.4 1.23 11.1 -22.1
13600 1176.9 0 87.5 4.2 24 12 102.3 1.24 11.0 -22.0
13500 1181.1 0 87.7 4.2 24 12 104.3 1.26 10.9 -21.8
13400 1185.3 0 87.9 4.2 25 11 106.2 1.27 10.8 -21.7
13300 1189.4 0 88.1 4.1 25 11 108.1 1.28 10.7 -21.4
13200 1193.5 0 88.3 4.0 25 11 110.1 1.29 10.7 -21.3
13100 1197.5 0 88.4 4.0 26 11 112.0 1.31 10.6 -21.1
13000 1201.4 0 88.6 4.0 26 11 113.9 1.32 10.5 -21.0
12900 1205.4 0 88.8 4.0 26 11 115.9 1.33 10.4 -20.8
12800 1209.3 0 88.9 3.8 26 10 117.7 1.35 10.3 -20.7
12700 1213.1 0 89.1 3.8 27 10 119.6 1.36 10.3 -20.5
12600 1216.9 0 89.3 3.8 27 10 121.5 1.37 10.2 -20.4
12500 1220.6 0 89.4 3.8 27 10 123.4 1.39 10.2 -20.3
12400 1224.4 0 89.6 3.7 28 10 125.2 1.40 10.0 -20.1
12300 1228.0 0 89.7 3.6 28 10 127.1 1.42 9.9 -19.9
12200 1231.7 0 89.9 3.7 28 10 128.9 1.43 9.8 -19.7
12100 1235.3 0 90.0 3.6 28 10 130.6 1.45 9.8 -19.6
12000 1238.9 0 90.2 3.5 29 9 132.4 1.46 9.7 -19.5
11900 1242.4 0 90.3 3.5 29 9 134.0 1.48 9.6 -19.4
11800 1245.9 0 90.5 3.5 29 9 135.7 1.49 9.5 -19.1
11700 1249.3 0 90.6 3.5 30 9 137.2 1.51 9.4 -19.0
11600 1252.8 0 90.7 3.4 30 9 138.7 1.53 9.3 -18.8
11500 1256.2 0 90.8 3.3 30 9 140.2 1.54 9.3 -18.7
11400 1259.5 0 91.0 3.4 30 9 141.7 1.56 9.2 -18.4
11300 1262.9 0 91.1 3.3 31 9 143.3 1.58 9.1 -18.3
11200 1266.2 0 91.2 3.3 31 9 145.0 1.60 9.0 -18.1
11100 1269.5 0 91.4 3.3 31 9 146.8 1.62 9.0 -18.0
11000 1272.8 0 91.5 3.3 31 8 148.5 1.64 8.9 -17.8
10900 1276.1 0 91.6 3.3 31 8 150.2 1.66 8.8 -17.7
10800 1279.3 0 91.7 3.3 31 8 151.9 1.68 8.7 -17.5
10700 1282.6 0 91.8 3.3 31 8 153.6 1.70 8.7 -17.4
10600 1285.8 0 92.0 3.3 31 8 155.2 1.72 8.6 -17.3
10500 1289.1 0 92.1 3.3 31 8 156.8 1.74 8.5 -17.1
10400 1292.3 0 92.2 3.3 31 8 158.3 1.76 8.5 -17.0
10300 1295.6 0 92.3 3.3 31 8 159.6 1.78 8.4 -16.9
10200 1298.9 0 92.4 3.3 31 8 161.0 1.80 8.4 -16.7
10100 1302.2 0 92.5 3.3 31 8 162.3 1.82 8.3 -16.6
10000 1305.4 0 92.6 3.2 31 8 163.5 1.84 8.2 -16.4
}
} Ende Spaltengruppe
} Ende Standard_Tafel
} Ende Schuss_Tafel
@@ -0,0 +1,385 @@
###########################################################################
# #
# Projekt TES : File "HE-M1-M64Incr4-TableE.sus" zur Munition "M64" #
# #
# Bei der Auspraegung des Ballistik-Moduls vereinbarte Bezeichnungen #
# Tafel_Namen : ENTFERNUNG, AUFSATZ, FLUGZEIT, -- obligatorisch #
# VORHALT -- projektspezifisch #
# Param_Namen : DELTA_V0, LUFTTEMP, LUFTDRUCK, #
# LAENGSWIND, QUERWIND, #
# PULVERTEMP -- Korrektur-Parameter #
# #
###########################################################################
# Aenderung/Stand: 09.07.14-07:52
Schuss_Tafel =
{
Munition = "HE-M1-M64"
Version = "HE M64 Incr4 Table-E"
Muni_Parameter = { Kaliber = 155.0 Masse = 46.30 V0 = 912.0 }
Std_Parameter = { DELTA_V0 = 0.0
LUFTTEMP = 15.0
LUFTDRUCK = 1013.25
LAENGSWIND= 0.0
QUERWIND = 0.0
PULVERTEMP= 21.1 }
Entfernung_Range= { Min = 100.0 Max = 23900.0 Delta = 100.0 Scheitel = 23975.0 }
Ballistik = "Parabel"
###########################################################################
Standard_Tafel =
{
Spaltengruppe =
{ Belegung = { AUFSATZ = (2) [-]
VORHALT = (3) [-]
FLUGZEIT = (4)
DELTA_RGE = (5) [-]
DELTA_ELEV = (6)
FORK = (7) [-]
DRIFT = (8) [-]
}
Zeilenlaenge = 8
Datenblock =
{
#
# RGE ELEV TOF DELTA DELTA FORK BEARING-CORR. RANGE-CORR.
# ENTF AUFSATZ VORHALT FLUGZEIT RGE ELEV DRIFT CW DEC INC
# [m] [mil] [mil] [sec] [mil] [m] [mil] [mil] [mil] [m] [m]
#
100 0.8 0 0.1 0.9 119 1 0.1 0.00 0.1 -0.3
200 1.7 0 0.3 0.9 118 1 0.1 0.00 0.3 -0.4
300 2.5 0 0.4 0.9 117 1 0.2 0.01 0.5 -0.7
400 3.4 0 0.5 0.9 116 1 0.2 0.01 0.7 -1.0
500 4.3 0 0.7 0.8 115 1 0.3 0.01 0.8 -1.3
600 5.1 0 0.8 0.8 114 1 0.3 0.01 1.0 -1.4
700 6.0 0 0.9 0.9 114 1 0.4 0.01 1.2 -1.7
800 6.9 0 1.1 0.9 113 1 0.5 0.02 1.3 -2.0
900 7.8 0 1.2 0.9 112 1 0.5 0.02 1.5 -2.2
1000 8.7 0 1.3 0.9 111 1 0.6 0.02 1.6 -2.5
1100 9.6 0 1.5 0.9 110 1 0.6 0.02 1.8 -2.8
1200 10.5 0 1.6 0.9 109 1 0.7 0.02 1.9 -3.0
1300 11.5 0 1.8 0.9 108 1 0.8 0.03 2.1 -3.1
1400 12.4 0 1.9 0.9 108 1 0.8 0.03 2.3 -3.4
1500 13.3 0 2.0 1.0 107 1 0.9 0.03 2.4 -3.6
1600 14.3 0 2.2 0.9 106 1 0.9 0.03 2.5 -3.8
1700 15.2 0 2.3 1.0 105 1 1.0 0.03 2.6 -4.0
1800 16.2 0 2.5 1.0 104 1 1.1 0.04 2.7 -4.1
1900 17.2 0 2.6 0.9 103 1 1.1 0.04 2.9 -4.4
2000 18.1 0 2.8 0.9 102 1 1.2 0.04 3.0 -4.6
2100 19.1 0 2.9 1.0 102 1 1.2 0.04 3.2 -4.8
2200 20.1 0 3.1 1.0 101 1 1.3 0.05 3.3 -4.9
2300 21.1 0 3.2 1.0 100 1 1.4 0.05 3.4 -5.1
2400 22.1 0 3.4 1.0 99 1 1.4 0.05 3.5 -5.3
2500 23.1 0 3.5 1.1 98 1 1.5 0.05 3.7 -5.6
2600 24.2 0 3.7 1.1 98 1 1.6 0.05 3.8 -5.8
2700 25.2 0 3.8 1.0 97 1 1.6 0.06 4.0 -5.9
2800 26.2 0 4.0 1.0 96 1 1.7 0.06 4.1 -6.1
2900 27.3 0 4.1 1.1 95 1 1.8 0.06 4.2 -6.3
3000 28.4 0 4.3 1.1 94 1 1.8 0.06 4.4 -6.6
3100 29.4 0 4.4 1.1 94 1 1.9 0.07 4.5 -6.7
3200 30.5 0 4.6 1.1 93 1 1.9 0.07 4.6 -6.9
3300 31.6 0 4.8 1.1 92 1 2.0 0.07 4.7 -7.1
3400 32.7 0 4.9 1.1 91 1 2.1 0.07 4.9 -7.3
3500 33.8 0 5.1 1.1 91 1 2.1 0.07 5.0 -7.5
3600 34.9 0 5.2 1.1 90 1 2.2 0.08 5.2 -7.6
3700 36.0 0 5.4 1.1 89 1 2.3 0.08 5.3 -7.8
3800 37.2 0 5.6 1.1 88 1 2.3 0.08 5.4 -8.1
3900 38.3 0 5.7 1.1 87 1 2.4 0.08 5.6 -8.3
4000 39.5 0 5.9 1.1 87 1 2.5 0.09 5.7 -8.5
4100 40.6 0 6.1 1.1 86 1 2.6 0.09 5.8 -8.6
4200 41.8 0 6.2 1.2 85 1 2.6 0.09 6.0 -8.8
4300 43.0 0 6.4 1.2 85 1 2.7 0.09 6.1 -9.0
4400 44.2 0 6.6 1.2 84 2 2.8 0.10 6.1 -9.2
4500 45.4 0 6.7 1.2 83 2 2.8 0.10 6.3 -9.4
4600 46.6 0 6.9 1.2 82 2 2.9 0.10 6.4 -9.5
4700 47.8 0 7.1 1.3 82 2 3.0 0.10 6.6 -9.7
4800 49.1 0 7.3 1.3 81 2 3.0 0.11 6.6 -9.9
4900 50.3 0 7.4 1.3 80 2 3.1 0.11 6.7 -10.1
5000 51.6 0 7.6 1.3 80 2 3.2 0.11 6.8 -10.3
5100 52.9 0 7.8 1.3 79 2 3.3 0.11 6.9 -10.4
5200 54.1 0 8.0 1.3 78 2 3.3 0.12 7.1 -10.6
5300 55.4 0 8.1 1.3 77 2 3.4 0.12 7.2 -10.8
5400 56.7 0 8.3 1.3 77 2 3.5 0.12 7.3 -10.9
5500 58.1 0 8.5 1.4 76 2 3.5 0.12 7.4 -11.1
5600 59.4 0 8.7 1.3 75 2 3.6 0.13 7.5 -11.2
5700 60.7 0 8.9 1.3 75 2 3.7 0.13 7.7 -11.4
5800 62.1 0 9.1 1.4 74 2 3.8 0.13 7.8 -11.6
5900 63.4 0 9.2 1.4 73 2 3.8 0.14 7.8 -11.7
6000 64.8 0 9.4 1.4 73 2 3.9 0.14 8.0 -11.9
6100 66.2 0 9.6 1.4 72 2 4.0 0.14 8.1 -12.1
6200 67.6 0 9.8 1.4 71 2 4.1 0.14 8.2 -12.2
6300 69.0 0 10.0 1.5 71 2 4.1 0.15 8.3 -12.4
6400 70.5 0 10.2 1.5 70 2 4.2 0.15 8.5 -12.6
6500 71.9 0 10.4 1.5 70 2 4.3 0.15 8.5 -12.7
6600 73.4 0 10.6 1.5 69 2 4.4 0.15 8.6 -12.9
6700 74.8 0 10.8 1.5 68 2 4.4 0.16 8.8 -13.0
6800 76.3 0 11.0 1.5 68 2 4.5 0.16 8.9 -13.1
6900 77.8 0 11.2 1.5 67 2 4.6 0.16 8.9 -13.3
7000 79.3 0 11.4 1.5 66 2 4.7 0.17 9.1 -13.4
7100 80.8 0 11.6 1.5 66 2 4.7 0.17 9.2 -13.6
7200 82.4 0 11.8 1.5 65 2 4.8 0.17 9.2 -13.8
7300 83.9 0 12.0 1.5 65 2 4.9 0.17 9.4 -13.9
7400 85.5 0 12.2 1.6 64 2 5.0 0.18 9.5 -14.0
7500 87.1 0 12.4 1.6 63 2 5.1 0.18 9.5 -14.2
7600 88.7 0 12.6 1.6 63 2 5.1 0.18 9.7 -14.4
7700 90.3 0 12.8 1.6 62 2 5.2 0.19 9.7 -14.5
7800 91.9 0 13.1 1.6 62 2 5.3 0.19 9.9 -14.7
7900 93.6 0 13.3 1.6 61 2 5.4 0.19 10.0 -14.8
8000 95.2 0 13.5 1.7 60 3 5.4 0.20 10.0 -14.9
8100 96.9 0 13.7 1.7 60 3 5.5 0.20 10.2 -15.0
8200 98.6 0 13.9 1.7 59 3 5.6 0.20 10.3 -15.2
8300 100.3 0 14.1 1.7 59 3 5.7 0.20 10.3 -15.3
8400 102.0 0 14.4 1.8 58 3 5.8 0.21 10.5 -15.5
8500 103.8 0 14.6 1.8 58 3 5.9 0.21 10.5 -15.6
8600 105.5 0 14.8 1.8 57 3 5.9 0.21 10.6 -15.7
8700 107.3 0 15.0 1.8 57 3 6.0 0.22 10.7 -15.9
8800 109.1 0 15.3 1.8 56 3 6.1 0.22 10.8 -16.0
8900 110.9 0 15.5 1.8 56 3 6.2 0.22 10.9 -16.2
9000 112.7 0 15.7 1.8 55 3 6.3 0.23 10.9 -16.3
9100 114.6 0 16.0 1.9 54 3 6.4 0.23 11.1 -16.5
9200 116.4 0 16.2 1.9 54 3 6.4 0.23 11.1 -16.6
9300 118.3 0 16.4 1.9 53 3 6.5 0.24 11.3 -16.7
9400 120.2 0 16.7 1.9 53 3 6.6 0.24 11.3 -16.8
9500 122.1 0 16.9 2.0 52 3 6.7 0.24 11.4 -16.9
9600 124.1 0 17.1 2.0 52 3 6.8 0.25 11.5 -17.1
9700 126.0 0 17.4 2.0 51 3 6.9 0.25 11.6 -17.2
9800 128.0 0 17.6 2.0 51 3 7.0 0.25 11.7 -17.4
9900 130.0 0 17.9 2.0 50 3 7.1 0.26 11.7 -17.5
10000 132.0 0 18.1 2.0 50 3 7.1 0.26 11.8 -17.5
10100 134.0 0 18.4 2.1 49 3 7.2 0.26 11.9 -17.7
10200 136.1 0 18.6 2.1 49 4 7.3 0.27 12.0 -17.8
10300 138.2 0 18.9 2.1 48 4 7.4 0.27 12.1 -18.0
10400 140.3 0 19.1 2.1 48 4 7.5 0.27 12.2 -18.1
10500 142.4 0 19.4 2.1 48 4 7.6 0.28 12.2 -18.2
10600 144.5 0 19.6 2.2 47 4 7.7 0.28 12.3 -18.4
10700 146.7 0 19.9 2.2 47 4 7.8 0.28 12.4 -18.4
10800 148.9 0 20.2 2.2 46 4 7.9 0.29 12.5 -18.5
10900 151.1 0 20.4 2.2 46 4 8.0 0.29 12.6 -18.7
11000 153.3 0 20.7 2.2 45 4 8.0 0.29 12.7 -18.8
11100 155.5 0 21.0 2.3 45 4 8.1 0.30 12.7 -18.9
11200 157.8 0 21.2 2.3 44 4 8.2 0.30 12.8 -19.1
11300 160.1 0 21.5 2.3 44 4 8.3 0.30 12.9 -19.2
11400 162.4 0 21.8 2.3 43 4 8.4 0.31 13.0 -19.3
11500 164.8 0 22.1 2.4 43 4 8.5 0.31 13.1 -19.3
11600 167.1 0 22.3 2.3 43 4 8.6 0.31 13.1 -19.5
11700 169.5 0 22.6 2.4 42 5 8.7 0.32 13.3 -19.6
11800 171.9 0 22.9 2.4 42 5 8.8 0.32 13.3 -19.7
11900 174.3 0 23.2 2.5 41 5 8.9 0.33 13.4 -19.8
12000 176.8 0 23.5 2.5 41 5 9.0 0.33 13.4 -19.9
12100 179.3 0 23.7 2.5 41 5 9.1 0.33 13.6 -20.1
12200 181.8 0 24.0 2.5 40 5 9.2 0.34 13.6 -20.2
12300 184.3 0 24.3 2.5 40 5 9.3 0.34 13.7 -20.2
12400 186.9 0 24.6 2.6 39 5 9.4 0.34 13.7 -20.3
12500 189.5 0 24.9 2.6 39 5 9.5 0.35 13.9 -20.5
12600 192.1 0 25.2 2.6 39 5 9.6 0.35 13.9 -20.6
12700 194.7 0 25.5 2.6 38 5 9.7 0.35 14.0 -20.7
12800 197.4 0 25.8 2.7 38 5 9.8 0.36 14.1 -20.9
12900 200.1 0 26.1 2.7 37 6 9.9 0.36 14.2 -21.0
13000 202.8 0 26.4 2.7 37 6 10.0 0.37 14.2 -21.1
13100 205.5 0 26.7 2.8 37 6 10.1 0.37 14.3 -21.2
13200 208.3 0 27.0 2.8 36 6 10.2 0.37 14.4 -21.3
13300 211.1 0 27.4 2.8 36 6 10.3 0.38 14.5 -21.4
13400 214.0 0 27.7 2.8 36 6 10.4 0.38 14.5 -21.5
13500 216.8 0 28.0 2.8 35 6 10.5 0.39 14.6 -21.6
13600 219.7 0 28.3 2.9 35 6 10.6 0.39 14.7 -21.7
13700 222.6 0 28.6 3.0 35 6 10.7 0.39 14.8 -21.8
13800 225.6 0 28.9 2.9 34 6 10.8 0.40 14.8 -21.9
13900 228.5 0 29.3 2.9 34 7 10.9 0.40 14.9 -22.0
14000 231.5 0 29.6 3.1 34 7 11.1 0.40 15.0 -22.1
14100 234.6 0 29.9 3.1 33 7 11.2 0.41 15.1 -22.2
14200 237.6 0 30.2 3.0 33 7 11.3 0.41 15.1 -22.4
14300 240.7 0 30.6 3.1 33 7 11.4 0.41 15.2 -22.5
14400 243.8 0 30.9 3.2 32 7 11.5 0.42 15.3 -22.7
14500 247.0 0 31.2 3.2 32 7 11.6 0.42 15.3 -22.8
14600 250.1 0 31.5 3.2 32 7 11.7 0.43 15.4 -22.9
14700 253.3 0 31.9 3.3 32 7 11.8 0.43 15.5 -22.9
14800 256.6 0 32.2 3.2 31 8 11.9 0.43 15.6 -23.0
14900 259.8 0 32.5 3.3 31 8 12.1 0.44 15.6 -23.1
15000 263.1 0 32.9 3.3 31 8 12.2 0.44 15.7 -23.3
15100 266.4 0 33.2 3.3 31 8 12.3 0.44 15.8 -23.4
15200 269.8 0 33.6 3.4 30 8 12.4 0.45 15.8 -23.6
15300 273.1 0 33.9 3.4 30 8 12.5 0.45 15.9 -23.7
15400 276.5 0 34.2 3.4 30 8 12.6 0.45 16.0 -23.8
15500 280.0 0 34.6 3.4 30 9 12.7 0.46 16.1 -23.8
15600 283.4 0 34.9 3.4 29 9 12.9 0.46 16.1 -23.9
15700 286.9 0 35.3 3.5 29 9 13.0 0.46 16.2 -24.0
15800 290.4 0 35.6 3.6 29 9 13.1 0.47 16.2 -24.1
15900 294.0 0 36.0 3.6 29 9 13.2 0.47 16.4 -24.3
16000 297.6 0 36.3 3.6 28 9 13.3 0.47 16.4 -24.4
16100 301.2 0 36.7 3.6 28 9 13.4 0.48 16.5 -24.5
16200 304.8 0 37.1 3.6 28 9 13.6 0.48 16.5 -24.6
16300 308.5 0 37.4 3.7 28 10 13.7 0.49 16.7 -24.7
16400 312.2 0 37.8 3.8 27 10 13.8 0.49 16.7 -24.7
16500 316.0 0 38.1 3.8 27 10 13.9 0.49 16.8 -24.8
16600 319.7 0 38.5 3.8 27 10 14.0 0.50 16.8 -25.0
16700 323.5 0 38.9 3.8 27 10 14.2 0.50 16.9 -25.1
16800 327.3 0 39.2 3.9 27 10 14.3 0.50 17.0 -25.2
16900 331.2 0 39.6 3.9 26 11 14.4 0.51 17.0 -25.3
17000 335.1 0 40.0 3.9 26 11 14.5 0.51 17.2 -25.5
17100 339.0 0 40.4 3.9 26 11 14.7 0.51 17.2 -25.6
17200 343.0 0 40.7 4.0 26 11 14.8 0.51 17.3 -25.6
17300 347.0 0 41.1 4.0 25 11 14.9 0.52 17.4 -25.7
17400 351.0 0 41.5 4.1 25 11 15.0 0.52 17.5 -25.8
17500 355.1 0 41.9 4.1 25 11 15.2 0.52 17.5 -26.0
17600 359.2 0 42.3 4.1 25 12 15.3 0.53 17.6 -26.1
17700 363.3 0 42.6 4.1 25 12 15.4 0.53 17.6 -26.2
17800 367.5 0 43.0 4.2 24 12 15.5 0.53 17.7 -26.3
17900 371.7 0 43.4 4.3 24 12 15.7 0.54 17.8 -26.5
18000 376.0 0 43.8 4.3 24 12 15.8 0.54 17.9 -26.5
18100 380.2 0 44.2 4.3 24 13 15.9 0.54 17.9 -26.6
18200 384.5 0 44.6 4.3 24 13 16.1 0.55 18.0 -26.7
18300 388.9 0 45.0 4.4 23 13 16.2 0.55 18.1 -26.9
18400 393.3 0 45.4 4.4 23 13 16.3 0.55 18.1 -27.0
18500 397.7 0 45.8 4.5 23 13 16.5 0.56 18.2 -27.1
18600 402.2 0 46.2 4.5 23 14 16.6 0.56 18.3 -27.3
18700 406.7 0 46.6 4.5 23 14 16.7 0.56 18.4 -27.4
18800 411.3 0 47.1 4.6 22 14 16.9 0.57 18.4 -27.4
18900 415.9 0 47.5 4.6 22 14 17.0 0.57 18.6 -27.5
19000 420.5 0 47.9 4.7 22 14 17.2 0.57 18.6 -27.6
19100 425.2 0 48.3 4.8 22 15 17.3 0.58 18.7 -27.8
19200 430.0 0 48.7 4.8 21 15 17.4 0.58 18.7 -27.9
19300 434.8 0 49.2 4.8 21 15 17.6 0.58 18.8 -28.0
19400 439.6 0 49.6 4.9 21 15 17.7 0.59 18.9 -28.2
19500 444.5 0 50.0 4.9 21 16 17.9 0.59 19.0 -28.3
19600 449.4 0 50.5 4.9 21 16 18.0 0.59 19.1 -28.3
19700 454.4 0 50.9 5.0 20 16 18.2 0.59 19.2 -28.4
19800 459.4 0 51.4 5.1 20 16 18.3 0.60 19.2 -28.6
19900 464.5 0 51.8 5.2 20 17 18.5 0.60 19.3 -28.7
20000 469.7 0 52.3 5.2 20 17 18.7 0.60 19.5 -28.8
20100 474.9 0 52.7 5.3 20 17 18.8 0.61 19.5 -28.9
20200 480.2 0 53.2 5.3 19 18 19.0 0.61 19.6 -29.1
20300 485.5 0 53.7 5.3 19 18 19.2 0.61 19.7 -29.2
20400 490.9 0 54.1 5.4 19 18 19.3 0.62 19.8 -29.2
20500 496.3 0 54.6 5.4 19 18 19.5 0.62 19.8 -29.5
20600 501.8 0 55.1 5.6 19 19 19.7 0.62 19.9 -29.6
20700 507.4 0 55.6 5.6 18 19 19.9 0.63 20.0 -29.7
20800 513.1 0 56.1 5.7 18 19 20.0 0.63 20.1 -29.9
20900 518.8 0 56.6 5.8 18 20 20.2 0.63 20.1 -30.1
21000 524.7 0 57.1 5.9 18 20 20.4 0.64 20.2 -30.1
21100 530.6 0 57.6 5.9 17 21 20.6 0.64 20.3 -30.1
21200 536.5 0 58.1 6.1 17 21 20.8 0.64 20.4 -30.3
21300 542.7 0 58.6 6.2 17 22 21.0 0.65 20.5 -30.5
21400 548.9 0 59.2 6.3 16 22 21.3 0.65 20.6 -30.6
21500 555.2 0 59.7 6.3 16 23 21.5 0.65 20.6 -30.8
21600 561.6 0 60.3 6.5 16 23 21.7 0.66 20.7 -30.9
21700 568.2 0 60.8 6.6 16 24 22.0 0.66 20.8 -31.0
21800 574.8 0 61.4 6.7 15 24 22.2 0.67 20.9 -31.1
21900 581.6 0 62.0 6.9 15 25 22.5 0.67 20.9 -31.2
22000 588.6 0 62.6 7.1 15 25 22.7 0.67 21.0 -31.3
22100 595.7 0 63.2 7.1 14 26 23.0 0.68 21.1 -31.5
22200 603.0 0 63.8 7.4 14 27 23.3 0.68 21.2 -31.6
22300 610.5 0 64.5 7.6 14 28 23.6 0.69 21.3 -31.7
22400 618.2 0 65.1 7.8 13 29 23.9 0.69 21.4 -31.9
22500 626.1 0 65.8 8.0 13 30 24.3 0.69 21.5 -31.9
22600 634.3 0 66.5 8.3 13 31 24.6 0.70 21.6 -32.0
22700 642.7 0 67.2 8.6 12 32 25.0 0.70 21.7 -32.2
22800 651.5 0 68.0 8.9 12 34 25.4 0.71 21.7 -32.3
22900 660.6 0 68.8 9.3 11 35 25.8 0.71 21.8 -32.5
23000 670.0 0 69.6 9.7 11 37 26.3 0.72 22.0 -32.6
23100 680.0 0 70.4 10.3 10 39 26.8 0.73 22.0 -32.8
23200 690.5 0 71.3 11.0 10 42 27.4 0.73 22.1 -32.8
23300 701.9 0 72.3 11.8 9 45 28.0 0.74 22.2 -33.1
23400 714.0 0 73.3 12.7 8 49 28.7 0.75 22.3 -33.2
23500 727.3 0 74.4 14.0 8 55 29.5 0.75 22.4 -33.4
23600 742.1 0 75.7 15.8 7 61 30.4 0.76 22.6 -33.7
23700 758.8 0 77.1 18.0 6 71 31.5 0.77 22.8 -34.0
23800 778.1 0 78.7 22.6 5 89 33.0 0.78 23.0 -34.5
23900 803.9 0 80.7 36.3 4 90 35.0 0.80 23.3 -34.8
23975 850.6 0 85.0 44.4 4 90 40.0 0.83 24.0 -35.5
23900 892.7 0 87.5 32.2 5 90 44.3 0.85 24.7 -36.8
23800 914.9 0 89.1 19.3 6 77 47.3 0.86 24.9 -37.2
23700 931.2 0 90.3 14.8 7 60 49.7 0.87 25.1 -37.6
23600 944.6 0 91.2 12.4 9 50 51.8 0.88 25.4 -37.9
23500 955.9 0 92.0 10.8 10 44 53.0 0.89 25.4 -38.2
23400 966.1 0 92.7 9.8 11 40 54.2 0.90 25.4 -38.2
23300 975.6 0 93.4 9.1 12 37 55.6 0.91 25.5 -38.2
23200 984.3 0 94.0 8.5 12 34 56.9 0.92 25.5 -38.2
23100 992.5 0 94.5 8.0 13 32 58.3 0.92 25.5 -38.2
23000 1000.2 0 95.0 7.5 14 30 59.7 0.93 25.4 -38.3
22900 1007.5 0 95.5 7.1 15 29 61.0 0.94 25.4 -38.3
22800 1014.4 0 96.0 6.8 15 27 62.2 0.95 25.4 -38.3
22700 1021.0 0 96.4 6.5 16 26 63.4 0.95 25.4 -38.3
22600 1027.4 0 96.8 6.3 16 25 64.6 0.96 25.5 -38.2
22500 1033.5 0 97.2 6.0 17 24 65.8 0.97 25.4 -38.2
22400 1039.4 0 97.6 5.8 18 23 67.0 0.97 25.4 -38.3
22300 1045.0 0 97.9 5.5 19 22 68.2 0.98 25.4 -38.2
22200 1050.5 0 98.3 5.4 19 22 69.4 0.99 25.3 -38.1
22100 1055.8 0 98.6 5.3 20 21 70.5 0.99 25.2 -38.1
22000 1061.0 0 98.9 5.1 20 20 71.6 1.00 25.2 -38.1
21900 1066.0 0 99.2 5.0 20 20 72.7 1.01 25.2 -38.0
21800 1071.0 0 99.6 4.9 21 20 73.9 1.01 25.2 -37.9
21700 1075.8 0 99.9 4.8 21 19 75.0 1.02 25.1 -37.8
21600 1080.6 0 100.1 4.8 22 19 76.2 1.03 25.0 -37.8
21500 1085.3 0 100.4 4.6 22 18 77.3 1.03 24.9 -37.6
21400 1089.8 0 100.7 4.5 23 18 78.4 1.04 24.9 -37.5
21300 1094.3 0 101.0 4.4 23 18 79.5 1.05 24.8 -37.4
21200 1098.6 0 101.2 4.3 24 17 80.7 1.05 24.7 -37.3
21100 1102.9 0 101.5 4.3 24 17 81.8 1.06 24.6 -37.2
21000 1107.1 0 101.7 4.1 25 16 82.9 1.07 24.6 -37.2
20900 1111.2 0 102.0 4.0 25 16 84.0 1.07 24.5 -37.1
20800 1115.2 0 102.2 4.0 26 16 85.0 1.08 24.4 -36.9
20700 1119.2 0 102.4 4.0 26 16 86.1 1.09 24.3 -36.8
20600 1123.1 0 102.7 3.9 26 15 87.1 1.09 24.2 -36.7
20500 1126.9 0 102.9 3.8 27 15 88.2 1.10 24.1 -36.5
20400 1130.7 0 103.1 3.8 27 15 89.3 1.11 24.1 -36.4
20300 1134.5 0 103.3 3.7 27 15 90.4 1.11 24.0 -36.3
20200 1138.1 0 103.5 3.6 28 14 91.5 1.12 23.8 -36.2
20100 1141.7 0 103.7 3.6 28 14 92.6 1.13 23.7 -36.0
20000 1145.3 0 103.9 3.6 29 14 93.7 1.14 23.7 -35.8
19900 1148.8 0 104.1 3.5 29 14 94.7 1.14 23.6 -35.6
19800 1152.3 0 104.3 3.4 30 13 95.8 1.15 23.5 -35.4
19700 1155.7 0 104.5 3.4 30 13 96.8 1.16 23.5 -35.4
19600 1159.1 0 104.7 3.4 30 13 97.8 1.17 23.4 -35.2
19500 1162.4 0 104.9 3.3 31 13 98.9 1.17 23.3 -35.1
19400 1165.7 0 105.1 3.3 31 13 99.9 1.18 23.2 -34.9
19300 1168.9 0 105.2 3.2 31 13 100.9 1.19 23.1 -34.8
19200 1172.1 0 105.4 3.2 32 12 101.8 1.20 22.9 -34.6
19100 1175.3 0 105.6 3.2 32 12 102.8 1.20 22.8 -34.5
19000 1178.4 0 105.7 3.1 33 12 103.7 1.21 22.7 -34.3
18900 1181.5 0 105.9 3.1 33 12 104.6 1.22 22.6 -34.1
18800 1184.6 0 106.1 3.0 34 12 105.5 1.23 22.4 -33.9
18700 1187.6 0 106.2 3.0 34 11 106.4 1.24 22.3 -33.7
18600 1190.5 0 106.4 2.9 34 11 107.3 1.25 22.3 -33.7
18500 1193.4 0 106.5 2.9 35 11 108.2 1.25 22.1 -33.5
18400 1196.3 0 106.7 2.9 35 11 109.0 1.26 22.0 -33.3
18300 1199.2 0 106.8 2.8 36 11 109.9 1.27 21.9 -33.1
18200 1202.0 0 107.0 2.9 36 11 110.7 1.28 21.8 -32.9
18100 1204.9 0 107.1 2.8 36 11 111.4 1.29 21.7 -32.8
18000 1207.6 0 107.2 2.8 37 11 112.2 1.30 21.5 -32.6
17900 1210.4 0 107.4 2.8 37 10 112.9 1.31 21.5 -32.4
17800 1213.1 0 107.5 2.7 37 10 113.7 1.32 21.4 -32.2
17700 1215.8 0 107.6 2.7 38 10 114.4 1.33 21.2 -32.0
17600 1218.5 0 107.8 2.7 38 10 115.0 1.34 21.0 -31.9
17500 1221.2 0 107.9 2.7 38 10 115.7 1.34 20.9 -31.7
17400 1223.8 0 108.0 2.6 39 10 116.3 1.35 20.8 -31.6
17300 1226.4 0 108.1 2.6 39 10 117.0 1.36 20.7 -31.5
17200 1229.0 0 108.3 2.6 39 10 117.6 1.37 20.6 -31.3
17100 1231.6 0 108.4 2.5 40 10 118.3 1.38 20.5 -31.2
17000 1234.1 0 108.5 2.5 40 10 119.1 1.39 20.3 -31.0
16900 1236.6 0 108.6 2.5 40 10 119.8 1.41 20.2 -30.9
16800 1239.2 0 108.7 2.5 40 9 120.5 1.42 20.1 -30.7
16700 1241.7 0 108.9 2.5 40 9 121.3 1.43 20.0 -30.6
16600 1244.2 0 109.0 2.6 40 9 122.0 1.44 20.0 -30.5
16500 1246.8 0 109.1 2.6 40 9 122.6 1.45 19.9 -30.5
16400 1249.3 0 109.2 2.5 40 9 123.2 1.46 19.8 -30.4
16300 1251.9 0 109.3 2.5 40 9 123.8 1.47 19.8 -30.3
16200 1254.4 0 109.4 2.5 40 9 124.4 1.48 19.7 -30.1
16100 1257.0 0 109.5 2.5 40 9 124.9 1.49 19.6 -30.1
16000 1259.6 0 109.6 2.5 40 9 125.5 1.50 19.6 -29.9
15900 1262.1 0 109.7 2.5 40 9 126.0 1.51 19.5 -29.8
15800 1264.6 0 109.8 2.5 40 9 126.4 1.52 19.4 -29.7
15700 1267.2 0 109.9 2.5 40 9 126.9 1.53 19.3 -29.6
15600 1269.7 0 110.0 2.5 40 9 127.3 1.54 19.2 -29.5
15500 1272.2 0 110.1 2.5 40 9 127.7 1.56 19.1 -29.3
15400 1274.7 0 110.2 2.5 40 9 128.1 1.57 19.0 -29.2
15300 1277.2 0 110.3 2.5 40 9 128.5 1.58 18.9 -29.1
15200 1279.7 0 110.4 2.5 40 9 128.9 1.59 18.8 -28.9
15100 1282.2 0 110.5 2.5 40 9 129.3 1.60 18.7 -28.7
15000 1284.7 0 110.6 2.5 40 9 129.7 1.61 18.6 -28.6
}
} Ende Spaltengruppe
} Ende Standard_Tafel
} Ende Schuss_Tafel
@@ -0,0 +1,457 @@
###########################################################################
# #
# Projekt TES : File "HE-M1-M64Incr5-TableE.sus" zur Munition "M64" #
# #
# Bei der Auspraegung des Ballistik-Moduls vereinbarte Bezeichnungen #
# Tafel_Namen : ENTFERNUNG, AUFSATZ, FLUGZEIT, -- obligatorisch #
# VORHALT -- projektspezifisch #
# Param_Namen : DELTA_V0, LUFTTEMP, LUFTDRUCK, #
# LAENGSWIND, QUERWIND, #
# PULVERTEMP -- Korrektur-Parameter #
# #
###########################################################################
# Aenderung/Stand: 09.07.14-07:52
Schuss_Tafel =
{
Munition = "HE-M1-M64"
Version = "HE M64 Incr5 Table-E"
Muni_Parameter = { Kaliber = 155.0 Masse = 46.30 V0 = 912.0 }
Std_Parameter = { DELTA_V0 = 0.0
LUFTTEMP = 15.0
LUFTDRUCK = 1013.25
LAENGSWIND= 0.0
QUERWIND = 0.0
PULVERTEMP= 21.1 }
Entfernung_Range= { Min = 100.0 Max = 31500.0 Delta = 100.0 Scheitel = 31588.0 }
Ballistik = "Parabel"
###########################################################################
Standard_Tafel =
{
Spaltengruppe =
{ Belegung = { AUFSATZ = (2) [-]
VORHALT = (3) [-]
FLUGZEIT = (4)
DELTA_RGE = (5) [-]
DELTA_ELEV = (6)
FORK = (7) [-]
DRIFT = (8) [-]
}
Zeilenlaenge = 8
Datenblock =
{
#
# RGE ELEV TOF DELTA DELTA FORK BEARING-CORR. RANGE-CORR.
# ENTF AUFSATZ VORHALT FLUGZEIT RGE ELEV DRIFT CW DEC INC
# [m] [mil] [mil] [sec] [mil] [m] [mil] [mil] [mil] [m] [m]
#
100 0.6 0 0.1 0.6 169 1 0.0 0.00 0.2 -0.1
200 1.2 0 0.2 0.6 168 1 0.1 0.00 0.3 -0.3
300 1.8 0 0.3 0.6 167 1 0.1 0.00 0.5 -0.5
400 2.4 0 0.4 0.6 165 1 0.1 0.01 0.7 -0.7
500 3.0 0 0.6 0.6 164 1 0.1 0.01 0.8 -0.8
600 3.6 0 0.7 0.6 163 1 0.2 0.01 1.0 -1.0
700 4.2 0 0.8 0.7 162 1 0.2 0.01 1.1 -1.1
800 4.9 0 0.9 0.7 161 1 0.2 0.01 1.4 -1.3
900 5.5 0 1.0 0.6 160 1 0.2 0.01 1.5 -1.5
1000 6.1 0 1.1 0.6 159 1 0.3 0.01 1.7 -1.6
1100 6.7 0 1.2 0.7 158 1 0.3 0.02 1.8 -1.8
1200 7.4 0 1.4 0.7 157 1 0.3 0.02 2.0 -1.9
1300 8.0 0 1.5 0.6 156 1 0.4 0.02 2.1 -2.1
1400 8.7 0 1.6 0.7 155 1 0.4 0.02 2.3 -2.2
1500 9.3 0 1.7 0.7 154 1 0.4 0.02 2.4 -2.4
1600 10.0 0 1.8 0.7 153 1 0.4 0.02 2.6 -2.5
1700 10.6 0 1.9 0.7 152 1 0.5 0.02 2.8 -2.7
1800 11.3 0 2.1 0.7 151 1 0.5 0.03 2.9 -2.8
1900 12.0 0 2.2 0.7 150 1 0.5 0.03 3.1 -3.0
2000 12.6 0 2.3 0.7 149 1 0.6 0.03 3.2 -3.1
2100 13.3 0 2.4 0.7 148 1 0.6 0.03 3.4 -3.3
2200 14.0 0 2.6 0.7 147 1 0.6 0.03 3.5 -3.4
2300 14.7 0 2.7 0.7 146 1 0.6 0.03 3.7 -3.6
2400 15.4 0 2.8 0.7 145 1 0.7 0.04 3.8 -3.7
2500 16.1 0 2.9 0.7 144 1 0.7 0.04 4.0 -3.9
2600 16.8 0 3.0 0.7 143 1 0.7 0.04 4.1 -4.0
2700 17.5 0 3.2 0.7 142 1 0.8 0.04 4.3 -4.2
2800 18.2 0 3.3 0.7 141 1 0.8 0.04 4.5 -4.3
2900 18.9 0 3.4 0.7 140 1 0.8 0.04 4.6 -4.5
3000 19.6 0 3.6 0.8 139 1 0.9 0.04 4.8 -4.6
3100 20.4 0 3.7 0.8 138 1 0.9 0.05 4.9 -4.8
3200 21.1 0 3.8 0.7 137 1 0.9 0.05 5.1 -4.9
3300 21.8 0 3.9 0.8 136 1 0.9 0.05 5.1 -5.1
3400 22.6 0 4.1 0.8 135 1 1.0 0.05 5.3 -5.2
3500 23.3 0 4.2 0.8 134 1 1.0 0.05 5.4 -5.4
3600 24.1 0 4.3 0.8 133 1 1.0 0.05 5.6 -5.5
3700 24.8 0 4.5 0.8 132 1 1.1 0.06 5.7 -5.6
3800 25.6 0 4.6 0.8 131 1 1.1 0.06 5.9 -5.7
3900 26.4 0 4.7 0.8 130 1 1.1 0.06 6.0 -5.9
4000 27.1 0 4.9 0.8 129 1 1.2 0.06 6.1 -6.0
4100 27.9 0 5.0 0.8 128 1 1.2 0.06 6.3 -6.2
4200 28.7 0 5.1 0.8 127 1 1.2 0.06 6.4 -6.3
4300 29.5 0 5.3 0.8 126 1 1.3 0.07 6.6 -6.4
4400 30.3 0 5.4 0.8 125 1 1.3 0.07 6.7 -6.6
4500 31.1 0 5.5 0.8 124 1 1.3 0.07 6.8 -6.7
4600 31.9 0 5.7 0.8 123 1 1.4 0.07 6.9 -6.9
4700 32.7 0 5.8 0.8 122 1 1.4 0.07 7.1 -6.9
4800 33.6 0 6.0 0.9 121 1 1.4 0.08 7.2 -7.1
4900 34.4 0 6.1 0.8 121 1 1.5 0.08 7.3 -7.2
5000 35.2 0 6.2 0.8 120 1 1.5 0.08 7.5 -7.4
5100 36.1 0 6.4 0.9 119 1 1.5 0.08 7.6 -7.5
5200 36.9 0 6.5 0.9 118 1 1.6 0.08 7.8 -7.6
5300 37.8 0 6.7 0.8 117 1 1.6 0.08 7.8 -7.8
5400 38.6 0 6.8 0.9 116 1 1.7 0.09 8.0 -7.8
5500 39.5 0 7.0 0.9 115 1 1.7 0.09 8.1 -8.0
5600 40.4 0 7.1 0.9 114 1 1.7 0.09 8.2 -8.1
5700 41.3 0 7.3 0.8 113 1 1.8 0.09 8.4 -8.2
5800 42.1 0 7.4 0.9 113 2 1.8 0.09 8.5 -8.3
5900 43.0 0 7.6 0.9 112 2 1.8 0.10 8.6 -8.5
6000 43.9 0 7.7 1.0 111 2 1.9 0.10 8.7 -8.6
6100 44.9 0 7.9 0.9 110 2 1.9 0.10 8.9 -8.7
6200 45.8 0 8.0 0.9 109 2 2.0 0.10 9.0 -8.9
6300 46.7 0 8.2 0.9 108 2 2.0 0.10 9.1 -8.9
6400 47.6 0 8.3 0.9 107 2 2.0 0.11 9.2 -9.1
6500 48.6 0 8.5 1.0 107 2 2.1 0.11 9.4 -9.2
6600 49.5 0 8.6 1.0 106 2 2.1 0.11 9.4 -9.3
6700 50.5 0 8.8 1.0 105 2 2.1 0.11 9.6 -9.5
6800 51.4 0 8.9 1.0 104 2 2.2 0.11 9.7 -9.5
6900 52.4 0 9.1 1.0 103 2 2.2 0.12 9.8 -9.7
7000 53.4 0 9.3 1.0 103 2 2.3 0.12 10.0 -9.8
7100 54.4 0 9.4 0.9 102 2 2.3 0.12 10.0 -9.9
7200 55.3 0 9.6 0.9 101 2 2.3 0.12 10.2 -10.0
7300 56.3 0 9.7 1.1 100 2 2.4 0.12 10.3 -10.1
7400 57.4 0 9.9 1.1 99 2 2.4 0.13 10.4 -10.2
7500 58.4 0 10.1 1.0 98 2 2.5 0.13 10.5 -10.4
7600 59.4 0 10.2 1.0 98 2 2.5 0.13 10.6 -10.4
7700 60.4 0 10.4 1.0 97 2 2.6 0.13 10.7 -10.6
7800 61.5 0 10.6 1.0 96 2 2.6 0.13 10.9 -10.7
7900 62.5 0 10.7 1.0 95 2 2.6 0.14 10.9 -10.8
8000 63.6 0 10.9 1.0 95 2 2.7 0.14 11.0 -10.9
8100 64.6 0 11.1 1.0 94 2 2.7 0.14 11.2 -11.0
8200 65.7 0 11.2 1.1 93 2 2.8 0.14 11.2 -11.1
8300 66.8 0 11.4 1.1 92 2 2.8 0.14 11.4 -11.2
8400 67.9 0 11.6 1.1 92 2 2.9 0.15 11.5 -11.3
8500 69.0 0 11.8 1.1 91 2 2.9 0.15 11.6 -11.4
8600 70.1 0 11.9 1.1 90 2 2.9 0.15 11.7 -11.6
8700 71.2 0 12.1 1.2 89 2 3.0 0.15 11.8 -11.6
8800 72.4 0 12.3 1.2 89 2 3.0 0.15 11.9 -11.7
8900 73.5 0 12.5 1.1 88 2 3.1 0.16 12.0 -11.9
9000 74.6 0 12.6 1.2 87 2 3.1 0.16 12.1 -11.9
9100 75.8 0 12.8 1.2 86 2 3.2 0.16 12.2 -12.0
9200 77.0 0 13.0 1.1 86 2 3.2 0.16 12.3 -12.2
9300 78.1 0 13.2 1.2 85 2 3.3 0.17 12.4 -12.2
9400 79.3 0 13.4 1.2 84 2 3.3 0.17 12.5 -12.3
9500 80.5 0 13.6 1.2 84 2 3.4 0.17 12.6 -12.4
9600 81.7 0 13.7 1.3 83 2 3.4 0.17 12.7 -12.5
9700 83.0 0 13.9 1.3 82 2 3.4 0.18 12.8 -12.6
9800 84.2 0 14.1 1.2 82 2 3.5 0.18 12.9 -12.7
9900 85.4 0 14.3 1.3 81 2 3.5 0.18 13.0 -12.8
10000 86.7 0 14.5 1.3 80 2 3.6 0.18 13.1 -12.9
10100 87.9 0 14.7 1.3 80 2 3.6 0.18 13.2 -13.0
10200 89.2 0 14.9 1.3 79 2 3.7 0.19 13.3 -13.1
10300 90.5 0 15.1 1.3 78 2 3.7 0.19 13.4 -13.2
10400 91.8 0 15.3 1.3 78 2 3.8 0.19 13.5 -13.3
10500 93.1 0 15.5 1.3 77 3 3.8 0.19 13.6 -13.3
10600 94.4 0 15.7 1.3 76 3 3.9 0.20 13.7 -13.4
10700 95.7 0 15.9 1.3 76 3 3.9 0.20 13.8 -13.5
10800 97.1 0 16.1 1.4 75 3 4.0 0.20 13.9 -13.6
10900 98.4 0 16.3 1.4 74 3 4.0 0.20 14.0 -13.7
11000 99.8 0 16.5 1.3 74 3 4.1 0.21 14.1 -13.8
11100 101.1 0 16.7 1.3 73 3 4.2 0.21 14.2 -13.9
11200 102.5 0 16.9 1.4 73 3 4.2 0.21 14.3 -14.0
11300 103.9 0 17.1 1.4 72 3 4.3 0.21 14.3 -14.1
11400 105.3 0 17.3 1.4 71 3 4.3 0.22 14.4 -14.2
11500 106.7 0 17.5 1.4 71 3 4.4 0.22 14.5 -14.3
11600 108.2 0 17.7 1.5 70 3 4.4 0.22 14.6 -14.4
11700 109.6 0 17.9 1.5 70 3 4.5 0.22 14.6 -14.5
11800 111.1 0 18.1 1.5 69 3 4.5 0.23 14.8 -14.5
11900 112.5 0 18.3 1.5 68 3 4.6 0.23 14.9 -14.6
12000 114.0 0 18.5 1.5 68 3 4.6 0.23 14.9 -14.8
12100 115.5 0 18.8 1.5 67 3 4.7 0.23 15.0 -14.8
12200 117.0 0 19.0 1.5 67 3 4.8 0.24 15.1 -14.9
12300 118.5 0 19.2 1.5 66 3 4.8 0.24 15.2 -15.0
12400 120.1 0 19.4 1.5 65 3 4.9 0.24 15.2 -15.1
12500 121.6 0 19.6 1.5 65 3 4.9 0.24 15.4 -15.1
12600 123.2 0 19.9 1.5 64 3 5.0 0.25 15.5 -15.2
12700 124.7 0 20.1 1.6 64 3 5.0 0.25 15.5 -15.3
12800 126.3 0 20.3 1.6 63 3 5.1 0.25 15.6 -15.4
12900 127.9 0 20.5 1.6 63 3 5.2 0.25 15.7 -15.5
13000 129.5 0 20.8 1.6 62 3 5.2 0.26 15.8 -15.6
13100 131.2 0 21.0 1.7 62 4 5.3 0.26 15.8 -15.7
13200 132.8 0 21.2 1.7 61 4 5.3 0.26 15.9 -15.7
13300 134.5 0 21.5 1.7 61 4 5.4 0.27 16.0 -15.8
13400 136.1 0 21.7 1.7 60 4 5.5 0.27 16.1 -15.9
13500 137.8 0 21.9 1.7 60 4 5.5 0.27 16.2 -16.0
13600 139.5 0 22.2 1.7 59 4 5.6 0.27 16.3 -16.0
13700 141.2 0 22.4 1.8 59 4 5.7 0.28 16.4 -16.1
13800 143.0 0 22.6 1.8 58 4 5.7 0.28 16.4 -16.3
13900 144.7 0 22.9 1.8 58 4 5.8 0.28 16.5 -16.3
14000 146.5 0 23.1 1.8 57 4 5.9 0.28 16.6 -16.4
14100 148.2 0 23.4 1.8 57 4 5.9 0.29 16.7 -16.5
14200 150.0 0 23.6 1.8 56 4 6.0 0.29 16.7 -16.6
14300 151.8 0 23.9 1.8 56 4 6.0 0.29 16.8 -16.6
14400 153.7 0 24.1 1.8 55 4 6.1 0.30 16.9 -16.7
14500 155.5 0 24.4 1.8 55 4 6.2 0.30 17.0 -16.8
14600 157.4 0 24.6 1.8 54 4 6.3 0.30 17.0 -16.8
14700 159.2 0 24.9 1.9 54 4 6.3 0.30 17.2 -16.9
14800 161.1 0 25.1 1.9 53 4 6.4 0.31 17.3 -17.0
14900 163.0 0 25.4 1.9 53 4 6.5 0.31 17.3 -17.1
15000 164.9 0 25.6 1.9 52 5 6.5 0.31 17.4 -17.1
15100 166.9 0 25.9 2.0 52 5 6.6 0.32 17.5 -17.2
15200 168.8 0 26.1 2.0 52 5 6.7 0.32 17.6 -17.3
15300 170.8 0 26.4 2.0 51 5 6.7 0.32 17.6 -17.4
15400 172.8 0 26.7 2.0 51 5 6.8 0.32 17.7 -17.4
15500 174.8 0 26.9 2.0 50 5 6.9 0.33 17.8 -17.6
15600 176.8 0 27.2 2.0 50 5 7.0 0.33 17.9 -17.7
15700 178.8 0 27.5 2.0 49 5 7.0 0.33 18.0 -17.7
15800 180.9 0 27.7 2.0 49 5 7.1 0.34 18.0 -17.8
15900 182.9 0 28.0 2.1 49 5 7.2 0.34 18.1 -17.9
16000 185.0 0 28.3 2.1 48 5 7.3 0.34 18.2 -18.0
16100 187.1 0 28.6 2.2 48 5 7.3 0.34 18.3 -18.0
16200 189.3 0 28.8 2.1 47 5 7.4 0.35 18.4 -18.1
16300 191.4 0 29.1 2.2 47 5 7.5 0.35 18.5 -18.2
16400 193.6 0 29.4 2.2 47 5 7.6 0.35 18.6 -18.3
16500 195.7 0 29.7 2.1 46 6 7.7 0.36 18.6 -18.3
16600 197.9 0 30.0 2.2 46 6 7.7 0.36 18.7 -18.4
16700 200.1 0 30.2 2.3 46 6 7.8 0.36 18.8 -18.6
16800 202.4 0 30.5 2.3 45 6 7.9 0.37 18.9 -18.6
16900 204.6 0 30.8 2.3 45 6 8.0 0.37 18.9 -18.7
17000 206.9 0 31.1 2.3 44 6 8.1 0.37 19.0 -18.8
17100 209.2 0 31.4 2.3 44 6 8.2 0.37 19.1 -18.9
17200 211.5 0 31.7 2.3 44 6 8.2 0.38 19.2 -18.9
17300 213.8 0 32.0 2.3 43 6 8.3 0.38 19.2 -19.0
17400 216.1 0 32.3 2.3 43 6 8.4 0.38 19.3 -19.1
17500 218.5 0 32.6 2.4 43 6 8.5 0.39 19.5 -19.2
17600 220.9 0 32.9 2.4 42 6 8.6 0.39 19.5 -19.2
17700 223.3 0 33.2 2.4 42 7 8.7 0.39 19.6 -19.3
17800 225.7 0 33.5 2.4 42 7 8.8 0.40 19.7 -19.4
17900 228.1 0 33.8 2.5 41 7 8.9 0.40 19.8 -19.5
18000 230.6 0 34.1 2.5 41 7 8.9 0.40 19.8 -19.5
18100 233.1 0 34.4 2.5 41 7 9.0 0.40 19.9 -19.6
18200 235.6 0 34.7 2.5 40 7 9.1 0.41 20.0 -19.7
18300 238.1 0 35.0 2.5 40 7 9.2 0.41 20.1 -19.8
18400 240.6 0 35.3 2.5 40 7 9.3 0.41 20.1 -19.9
18500 243.2 0 35.6 2.6 39 7 9.4 0.42 20.3 -20.0
18600 245.8 0 35.9 2.6 39 7 9.5 0.42 20.4 -20.1
18700 248.4 0 36.3 2.6 39 7 9.6 0.42 20.4 -20.1
18800 251.0 0 36.6 2.6 39 8 9.7 0.43 20.5 -20.3
18900 253.6 0 36.9 2.6 38 8 9.8 0.43 20.6 -20.4
19000 256.3 0 37.2 2.6 38 8 9.9 0.43 20.7 -20.4
19100 258.9 0 37.5 2.7 38 8 10.0 0.44 20.8 -20.5
19200 261.6 0 37.9 2.8 37 8 10.1 0.44 20.9 -20.6
19300 264.4 0 38.2 2.8 37 8 10.2 0.44 21.0 -20.7
19400 267.1 0 38.5 2.7 37 8 10.3 0.44 21.0 -20.8
19500 269.8 0 38.8 2.8 37 8 10.4 0.45 21.1 -20.9
19600 272.6 0 39.2 2.8 36 8 10.5 0.45 21.3 -20.9
19700 275.4 0 39.5 2.8 36 9 10.6 0.45 21.3 -21.0
19800 278.2 0 39.8 2.9 36 9 10.7 0.46 21.4 -21.1
19900 281.1 0 40.2 2.8 36 9 10.8 0.46 21.5 -21.2
20000 283.9 0 40.5 2.8 35 9 10.9 0.46 21.6 -21.3
20100 286.8 0 40.8 2.9 35 9 11.0 0.47 21.7 -21.4
20200 289.7 0 41.1 2.9 35 9 11.1 0.47 21.8 -21.5
20300 292.6 0 41.5 2.9 35 9 11.3 0.47 21.9 -21.6
20400 295.5 0 41.8 2.9 34 9 11.4 0.47 21.9 -21.7
20500 298.5 0 42.2 2.9 34 9 11.5 0.48 22.1 -21.8
20600 301.4 0 42.5 2.9 34 10 11.6 0.48 22.2 -21.8
20700 304.4 0 42.8 3.1 34 10 11.7 0.48 22.3 -21.9
20800 307.5 0 43.2 3.1 34 10 11.8 0.49 22.3 -22.1
20900 310.5 0 43.5 3.0 33 10 11.9 0.49 22.5 -22.1
21000 313.5 0 43.9 3.1 33 10 12.1 0.49 22.6 -22.2
21100 316.6 0 44.2 3.1 33 10 12.2 0.49 22.6 -22.4
21200 319.7 0 44.6 3.1 33 10 12.3 0.50 22.8 -22.4
21300 322.8 0 44.9 3.1 33 10 12.4 0.50 22.9 -22.5
21400 325.9 0 45.3 3.2 32 10 12.5 0.50 23.0 -22.7
21500 329.1 0 45.6 3.2 32 11 12.6 0.50 23.1 -22.7
21600 332.3 0 46.0 3.2 32 11 12.8 0.51 23.2 -22.9
21700 335.5 0 46.3 3.2 32 11 12.9 0.51 23.3 -23.0
21800 338.7 0 46.7 3.2 32 11 13.0 0.51 23.4 -23.1
21900 341.9 0 47.0 3.3 31 11 13.1 0.52 23.5 -23.2
22000 345.2 0 47.4 3.3 31 11 13.3 0.52 23.5 -23.3
22100 348.4 0 47.7 3.2 31 11 13.4 0.52 23.7 -23.4
22200 351.7 0 48.1 3.3 31 11 13.5 0.52 23.8 -23.5
22300 355.0 0 48.5 3.3 31 12 13.6 0.53 23.8 -23.6
22400 358.4 0 48.8 3.4 30 12 13.8 0.53 23.9 -23.6
22500 361.7 0 49.2 3.4 30 12 13.9 0.53 24.1 -23.7
22600 365.1 0 49.6 3.4 30 12 14.0 0.53 24.1 -23.8
22700 368.5 0 49.9 3.4 30 12 14.2 0.54 24.3 -23.9
22800 371.9 0 50.3 3.4 30 12 14.3 0.54 24.4 -24.0
22900 375.4 0 50.7 3.5 29 12 14.4 0.54 24.5 -24.2
23000 378.9 0 51.1 3.5 29 13 14.6 0.55 24.6 -24.2
23100 382.4 0 51.4 3.5 29 13 14.7 0.55 24.7 -24.4
23200 385.9 0 51.8 3.5 29 13 14.9 0.55 24.8 -24.5
23300 389.4 0 52.2 3.6 29 13 15.0 0.55 25.0 -24.6
23400 393.0 0 52.6 3.6 28 13 15.1 0.56 25.0 -24.8
23500 396.6 0 53.0 3.6 28 13 15.3 0.56 25.2 -24.8
23600 400.2 0 53.4 3.6 28 14 15.4 0.56 25.3 -25.0
23700 403.8 0 53.8 3.6 28 14 15.6 0.56 25.4 -25.0
23800 407.4 0 54.1 3.7 28 14 15.7 0.57 25.6 -25.2
23900 411.1 0 54.5 3.7 28 14 15.9 0.57 25.7 -25.3
24000 414.8 0 54.9 3.8 27 14 16.0 0.57 25.8 -25.4
24100 418.6 0 55.3 3.8 27 14 16.2 0.58 25.9 -25.5
24200 422.3 0 55.7 3.8 27 14 16.3 0.58 26.0 -25.6
24300 426.1 0 56.1 3.8 27 15 16.5 0.58 26.2 -25.7
24400 429.9 0 56.5 3.8 27 15 16.6 0.58 26.2 -25.9
24500 433.8 0 57.0 3.9 26 15 16.8 0.59 26.4 -26.0
24600 437.6 0 57.4 3.9 26 15 16.9 0.59 26.5 -26.1
24700 441.5 0 57.8 3.9 26 15 17.1 0.59 26.6 -26.2
24800 445.5 0 58.2 3.9 26 16 17.3 0.59 26.8 -26.4
24900 449.4 0 58.6 3.9 26 16 17.4 0.60 26.9 -26.5
25000 453.4 0 59.1 4.0 26 16 17.6 0.60 27.1 -26.7
25100 457.4 0 59.5 4.1 25 16 17.8 0.60 27.2 -26.8
25200 461.5 0 59.9 4.1 25 16 17.9 0.61 27.3 -27.0
25300 465.5 0 60.3 4.1 25 17 18.1 0.61 27.5 -27.2
25400 469.6 0 60.8 4.1 25 17 18.3 0.61 27.7 -27.4
25500 473.8 0 61.2 4.2 25 17 18.5 0.61 27.8 -27.4
25600 478.0 0 61.7 4.2 24 17 18.6 0.62 28.0 -27.6
25700 482.2 0 62.1 4.2 24 17 18.8 0.62 28.1 -27.7
25800 486.4 0 62.6 4.3 24 18 19.0 0.62 28.3 -27.9
25900 490.7 0 63.0 4.3 24 18 19.2 0.63 28.4 -28.0
26000 495.0 0 63.5 4.3 24 18 19.4 0.63 28.6 -28.2
26100 499.3 0 63.9 4.4 23 18 19.6 0.63 28.7 -28.3
26200 503.7 0 64.4 4.5 23 19 19.7 0.63 29.0 -28.6
26300 508.2 0 64.9 4.4 23 19 19.9 0.64 29.1 -28.8
26400 512.6 0 65.3 4.4 23 19 20.1 0.64 29.3 -28.9
26500 517.1 0 65.8 4.6 23 19 20.3 0.64 29.5 -29.1
26600 521.7 0 66.3 4.6 22 20 20.5 0.65 29.6 -29.2
26700 526.3 0 66.8 4.6 22 20 20.8 0.65 29.9 -29.3
26800 530.9 0 67.3 4.6 22 20 21.0 0.65 30.0 -29.5
26900 535.6 0 67.8 4.7 22 20 21.2 0.65 30.2 -29.7
27000 540.3 0 68.3 4.8 22 21 21.4 0.66 30.5 -30.0
27100 545.1 0 68.8 4.9 21 21 21.6 0.66 30.7 -30.2
27200 550.0 0 69.3 4.9 21 21 21.8 0.66 30.8 -30.4
27300 554.8 0 69.8 4.9 21 22 22.1 0.67 31.2 -30.6
27400 559.7 0 70.3 5.0 21 22 22.3 0.67 31.4 -30.9
27500 564.7 0 70.9 5.0 21 22 22.5 0.67 31.7 -31.2
27600 569.7 0 71.4 5.0 20 22 22.8 0.68 32.0 -31.5
27700 574.8 0 71.9 5.1 20 23 23.0 0.68 32.4 -31.8
27800 579.9 0 72.5 5.1 20 23 23.3 0.68 32.7 -32.1
27900 585.0 0 73.0 5.1 20 23 23.5 0.69 33.1 -32.4
28000 590.2 0 73.5 5.2 20 23 23.8 0.69 33.4 -32.8
28100 595.4 0 74.1 5.2 20 24 24.0 0.69 33.8 -33.2
28200 600.6 0 74.6 5.3 20 24 24.3 0.69 34.1 -33.5
28300 605.9 0 75.2 5.3 19 24 24.6 0.70 34.4 -33.8
28400 611.2 0 75.7 5.3 19 25 24.9 0.70 34.6 -34.1
28500 616.6 0 76.3 5.4 19 25 25.1 0.70 34.9 -34.3
28600 622.0 0 76.8 5.5 19 25 25.4 0.70 35.2 -34.6
28700 627.5 0 77.4 5.5 18 26 25.7 0.71 35.5 -34.8
28800 633.1 0 77.9 5.6 18 26 26.0 0.71 35.8 -35.1
28900 638.8 0 78.5 5.8 18 27 26.3 0.71 36.0 -35.4
29000 644.6 0 79.1 5.8 18 27 26.7 0.71 36.3 -35.6
29100 650.4 0 79.6 5.9 17 28 27.0 0.72 36.6 -35.9
29200 656.4 0 80.2 6.0 17 28 27.3 0.72 36.9 -36.2
29300 662.4 0 80.8 6.1 17 29 27.7 0.72 37.2 -36.5
29400 668.6 0 81.4 6.3 17 30 28.0 0.72 37.4 -36.8
29500 674.9 0 82.0 6.4 16 30 28.4 0.73 37.7 -37.1
29600 681.3 0 82.7 6.4 16 31 28.8 0.73 38.0 -37.3
29700 687.8 0 83.3 6.6 16 32 29.2 0.73 38.4 -37.6
29800 694.5 0 84.0 6.8 15 33 29.6 0.74 38.7 -37.9
29900 701.4 0 84.6 7.0 15 34 30.0 0.74 39.1 -38.3
30000 708.4 0 85.3 7.1 14 35 30.5 0.74 39.4 -38.6
30100 715.7 0 86.0 7.4 14 36 31.0 0.74 39.7 -39.0
30200 723.2 0 86.7 7.6 14 37 31.5 0.75 40.1 -39.4
30300 730.9 0 87.5 7.9 13 39 32.0 0.75 40.5 -39.7
30400 739.0 0 88.2 8.3 13 41 32.6 0.75 41.0 -40.1
30500 747.4 0 89.0 8.6 12 43 33.1 0.75 41.3 -40.5
30600 756.2 0 89.9 9.0 12 45 33.8 0.76 41.8 -40.9
30700 765.4 0 90.8 9.5 11 48 34.5 0.76 42.2 -41.3
30800 775.3 0 91.7 10.3 10 51 35.2 0.77 42.7 -41.7
30900 785.9 0 92.7 11.1 9 56 36.1 0.77 43.2 -42.2
31000 797.6 0 93.8 12.3 9 62 37.0 0.77 43.7 -42.6
31100 810.6 0 95.0 14.0 8 71 38.1 0.78 44.0 -43.1
31200 825.5 0 96.3 15.9 7 81 39.4 0.78 44.4 -43.5
31300 842.4 0 97.9 19.8 6 101 41.0 0.79 44.7 -43.8
31400 865.0 0 99.9 33.3 3 171 43.3 0.80 44.9 -44.1
31500 909.1 0 103.8 39.5 2 180 48.3 0.81 45.0 -44.4
31588 943.9 0 106.0 32.8 2 180 50.0 0.81 45.1 -44.6
31500 974.6 0 109.5 23.2 6 90 58.3 0.82 45.2 -44.7
31400 990.3 0 110.8 13.7 8 71 61.1 0.83 45.3 -44.7
31300 1001.9 0 111.8 10.7 10 56 63.4 0.83 45.4 -44.8
31200 1011.7 0 112.6 9.3 11 48 65.4 0.84 45.5 -44.9
31100 1020.4 0 113.3 8.2 13 43 67.2 0.84 45.6 -45.0
31000 1028.1 0 113.9 7.4 14 39 69.0 0.84 45.6 -45.0
30900 1035.2 0 114.5 6.9 15 36 70.6 0.85 45.6 -45.1
30800 1041.8 0 115.0 6.4 16 33 72.2 0.85 45.6 -45.2
30700 1047.9 0 115.5 5.8 17 31 73.7 0.86 45.7 -45.2
30600 1053.5 0 116.0 5.5 19 29 75.1 0.86 45.8 -45.2
30500 1058.9 0 116.4 5.2 20 27 76.5 0.86 45.9 -45.1
30400 1063.9 0 116.8 5.0 21 26 77.8 0.87 46.0 -45.1
30300 1068.8 0 117.2 4.8 22 25 79.3 0.87 46.2 -45.1
30200 1073.4 0 117.5 4.5 23 24 80.6 0.87 46.2 -45.0
30100 1077.9 0 117.9 4.3 24 23 81.8 0.88 46.2 -45.0
30000 1082.0 0 118.2 4.0 25 22 82.5 0.88 46.1 -45.0
29900 1086.0 0 118.5 3.9 26 21 82.9 0.89 46.1 -45.0
29800 1089.8 0 118.8 3.8 27 20 83.1 0.89 46.1 -45.0
29700 1093.5 0 119.0 3.6 28 19 83.2 0.89 46.0 -44.9
29600 1097.1 0 119.3 3.5 29 19 83.3 0.90 46.0 -44.9
29500 1100.6 0 119.5 3.5 29 18 83.4 0.90 46.0 -44.9
29400 1104.1 0 119.8 3.4 30 18 83.5 0.90 45.9 -44.8
29300 1107.4 0 120.0 3.4 30 18 83.7 0.91 45.9 -44.8
29200 1110.8 0 120.2 3.3 31 17 83.9 0.91 45.8 -44.8
29100 1114.0 0 120.5 3.2 31 17 84.3 0.92 45.7 -44.7
29000 1117.2 0 120.7 3.2 32 17 84.7 0.92 45.6 -44.7
28900 1120.4 0 120.9 3.2 32 17 85.1 0.92 45.6 -44.7
28800 1123.5 0 121.1 3.0 33 16 85.6 0.93 45.5 -44.6
28700 1126.5 0 121.3 3.0 34 16 85.9 0.93 45.4 -44.5
28600 1129.5 0 121.5 3.0 34 16 86.1 0.94 45.3 -44.4
28500 1132.4 0 121.7 2.9 35 15 86.3 0.94 45.3 -44.3
28400 1135.3 0 121.9 2.8 36 15 86.5 0.94 45.2 -44.2
28300 1138.1 0 122.1 2.8 36 15 86.7 0.95 44.9 -44.1
28200 1140.9 0 122.3 2.8 37 15 86.9 0.95 44.6 -44.0
28100 1143.7 0 122.5 2.8 37 14 87.2 0.96 44.3 -44.0
28000 1146.4 0 122.7 2.7 38 14 87.5 0.96 44.1 -43.9
27900 1149.0 0 122.9 2.6 38 14 87.8 0.96 43.9 -43.8
27800 1151.6 0 123.0 2.6 39 14 88.1 0.97 43.7 -43.8
27700 1154.2 0 123.2 2.6 39 14 88.5 0.97 43.5 -43.6
27600 1156.8 0 123.4 2.6 40 13 88.8 0.98 43.3 -43.3
27500 1159.3 0 123.5 2.5 41 13 89.0 0.98 43.1 -43.0
27400 1161.8 0 123.7 2.4 41 13 89.3 0.99 42.9 -42.7
27300 1164.2 0 123.9 2.4 42 13 89.6 0.99 42.8 -42.3
27200 1166.6 0 124.0 2.4 42 13 89.8 1.00 42.5 -42.0
27100 1169.0 0 124.2 2.4 43 13 90.0 1.00 42.4 -41.8
27000 1171.4 0 124.3 2.3 43 12 90.2 1.00 42.2 -41.6
26900 1173.7 0 124.5 2.3 44 12 90.4 1.01 42.0 -41.4
26800 1176.0 0 124.6 2.3 44 12 90.6 1.01 41.9 -41.3
26700 1178.3 0 124.8 2.3 44 12 90.7 1.02 41.6 -41.2
26600 1180.6 0 124.9 2.3 45 12 90.9 1.02 41.6 -41.0
26500 1182.8 0 125.1 2.3 45 12 91.0 1.03 41.4 -40.9
26400 1185.1 0 125.2 2.3 45 12 91.1 1.03 41.3 -40.9
26300 1187.3 0 125.4 2.2 46 12 91.3 1.04 41.3 -40.8
26200 1189.5 0 125.5 2.2 46 12 91.5 1.04 41.2 -40.7
26100 1191.7 0 125.6 2.2 46 12 91.6 1.05 41.0 -40.7
26000 1193.9 0 125.8 2.2 46 12 91.7 1.05 40.9 -40.7
25900 1196.1 0 125.9 2.2 46 12 91.9 1.06 40.7 -40.7
25800 1198.3 0 126.0 2.2 46 11 92.0 1.06 40.7 -40.7
25700 1200.4 0 126.2 2.1 46 11 92.1 1.07 40.6 -40.6
25600 1202.6 0 126.3 2.2 46 11 92.3 1.07 40.5 -40.6
25500 1204.8 0 126.4 2.2 47 11 92.4 1.08 40.4 -40.6
25400 1207.0 0 126.5 2.1 47 11 92.5 1.08 40.4 -40.6
25300 1209.1 0 126.6 2.2 47 11 92.6 1.09 40.3 -40.6
25200 1211.3 0 126.8 2.2 47 11 92.7 1.09 40.1 -40.6
25100 1213.4 0 126.9 2.1 47 11 92.8 1.10 40.1 -40.5
25000 1215.6 0 127.0 2.1 47 11 92.8 1.10 40.0 -40.5
24900 1217.7 0 127.1 2.2 47 11 92.8 1.11 39.9 -40.4
24800 1219.9 0 127.2 2.2 47 11 92.8 1.11 39.8 -40.4
24700 1222.0 0 127.3 2.1 47 11 92.7 1.11 39.7 -40.3
24600 1224.1 0 127.5 2.1 48 11 92.6 1.12 39.7 -39.9
24500 1226.2 0 127.6 2.1 48 11 92.6 1.12 39.6 -39.4
24400 1228.3 0 127.7 2.1 48 11 92.5 1.13 39.5 -39.1
24300 1230.4 0 127.8 2.1 48 11 92.5 1.13 39.4 -38.8
24200 1232.5 0 127.9 2.1 49 11 92.5 1.14 39.3 -38.7
24100 1234.6 0 128.0 2.0 49 11 92.4 1.14 39.2 -38.5
24000 1236.6 0 128.1 2.0 49 11 92.5 1.15 39.1 -38.4
23900 1238.7 0 128.2 2.0 49 11 92.5 1.15 39.0 -38.3
23800 1240.7 0 128.3 2.0 50 11 92.5 1.16 38.8 -38.2
23700 1242.7 0 128.4 2.1 50 11 92.5 1.16 38.8 -38.1
23600 1244.8 0 128.5 2.1 50 10 92.5 1.17 38.5 -38.0
23500 1246.8 0 128.6 2.0 50 10 92.5 1.17 38.2 -37.9
23400 1248.8 0 128.7 2.0 50 10 92.6 1.18 37.8 -37.7
23300 1250.8 0 128.8 2.0 51 10 92.6 1.19 37.3 -37.6
23200 1252.8 0 128.9 2.0 51 10 92.7 1.19 36.9 -37.4
23100 1254.8 0 129.0 1.9 51 10 92.7 1.20 36.4 -37.3
23000 1256.7 0 129.1 1.9 51 10 92.7 1.20 36.1 -37.2
}
} Ende Spaltengruppe
} Ende Standard_Tafel
} Ende Schuss_Tafel
@@ -0,0 +1,581 @@
###########################################################################
# #
# Projekt TES : File "HE-M1-M64Incr5BaseBleed-TableE.sus" zur Munition #
# "M64" #
# #
# Bei der Auspraegung des Ballistik-Moduls vereinbarte Bezeichnungen #
# Tafel_Namen : ENTFERNUNG, AUFSATZ, FLUGZEIT, -- obligatorisch #
# VORHALT -- projektspezifisch #
# Param_Namen : DELTA_V0, LUFTTEMP, LUFTDRUCK, #
# LAENGSWIND, QUERWIND, #
# PULVERTEMP -- Korrektur-Parameter #
# #
###########################################################################
# Aenderung/Stand: 09.07.14-07:52
Schuss_Tafel =
{
Munition = "HE-M1-M64"
Version = "HE M64 Incr5BaseBleed Table-E"
Muni_Parameter = { Kaliber = 155.0 Masse = 46.30 V0 = 912.0 }
Std_Parameter = { DELTA_V0 = 0.0
LUFTTEMP = 15.0
LUFTDRUCK = 1013.25
LAENGSWIND= 0.0
QUERWIND = 0.0
PULVERTEMP= 21.1 }
Entfernung_Range= { Min = 100.0 Max = 40400.0 Delta = 100.0 Scheitel = 40528.0 }
Ballistik = "Parabel"
###########################################################################
Standard_Tafel =
{
Spaltengruppe =
{ Belegung = { AUFSATZ = (2) [-]
VORHALT = (3) [-]
FLUGZEIT = (4)
DELTA_RGE = (5) [-]
DELTA_ELEV = (6)
FORK = (7) [-]
DRIFT = (8) [-]
}
Zeilenlaenge = 8
Datenblock =
{
#
# RGE ELEV TOF DELTA DELTA FORK BEARING-CORR. RANGE-CORR.
# ENTF AUFSATZ VORHALT FLUGZEIT RGE ELEV DRIFT CW DEC INC
# [m] [mil] [mil] [sec] [mil] [m] [mil] [mil] [mil] [m] [m]
#
100 0.6 0 0.1 0.6 167 1 0.0 0.00 0.2 -0.1
200 1.2 0 0.2 0.6 166 1 0.1 0.00 0.3 -0.3
300 1.8 0 0.3 0.6 165 1 0.1 0.00 0.6 -0.4
400 2.4 0 0.4 0.6 165 1 0.1 0.00 0.7 -0.7
500 3.0 0 0.6 0.6 164 1 0.1 0.00 0.9 -0.8
600 3.6 0 0.7 0.7 163 1 0.1 0.00 1.0 -1.0
700 4.3 0 0.8 0.7 162 1 0.2 0.00 1.2 -1.1
800 4.9 0 0.9 0.6 161 1 0.2 0.00 1.4 -1.3
900 5.5 0 1.0 0.6 160 1 0.2 0.00 1.6 -1.4
1000 6.1 0 1.1 0.7 160 1 0.2 0.00 1.8 -1.6
1100 6.8 0 1.2 0.7 159 1 0.3 0.00 1.9 -1.7
1200 7.4 0 1.4 0.6 158 1 0.3 0.01 2.1 -1.9
1300 8.0 0 1.5 0.6 157 1 0.3 0.01 2.2 -2.0
1400 8.7 0 1.6 0.7 156 1 0.3 0.01 2.4 -2.2
1500 9.3 0 1.7 0.7 156 1 0.4 0.01 2.6 -2.3
1600 10.0 0 1.8 0.7 155 1 0.4 0.01 2.8 -2.5
1700 10.6 0 1.9 0.7 154 1 0.4 0.01 3.0 -2.6
1800 11.3 0 2.1 0.6 153 1 0.5 0.01 3.1 -2.8
1900 11.9 0 2.2 0.7 153 1 0.5 0.01 3.3 -2.9
2000 12.6 0 2.3 0.7 152 1 0.5 0.01 3.5 -3.1
2100 13.2 0 2.4 0.6 151 1 0.5 0.02 3.6 -3.2
2200 13.9 0 2.5 0.7 150 1 0.6 0.02 3.8 -3.4
2300 14.6 0 2.6 0.7 149 1 0.6 0.02 3.9 -3.5
2400 15.2 0 2.8 0.6 149 1 0.6 0.02 4.1 -3.7
2500 15.9 0 2.9 0.7 148 1 0.6 0.02 4.3 -3.8
2600 16.6 0 3.0 0.7 147 1 0.7 0.02 4.4 -4.0
2700 17.3 0 3.1 0.7 146 1 0.7 0.02 4.6 -4.1
2800 18.0 0 3.3 0.7 146 1 0.7 0.02 4.7 -4.2
2900 18.7 0 3.4 0.7 145 1 0.7 0.03 4.9 -4.4
3000 19.4 0 3.5 0.7 144 1 0.8 0.03 5.1 -4.5
3100 20.1 0 3.6 0.7 143 1 0.8 0.03 5.2 -4.7
3200 20.8 0 3.7 0.7 143 1 0.8 0.03 5.4 -4.8
3300 21.5 0 3.9 0.7 142 1 0.9 0.03 5.5 -4.9
3400 22.2 0 4.0 0.7 141 1 0.9 0.03 5.7 -5.1
3500 22.9 0 4.1 0.7 140 1 0.9 0.03 5.9 -5.2
3600 23.6 0 4.2 0.7 140 1 0.9 0.03 6.0 -5.4
3700 24.3 0 4.4 0.7 139 1 1.0 0.03 6.2 -5.5
3800 25.0 0 4.5 0.8 138 1 1.0 0.04 6.3 -5.7
3900 25.8 0 4.6 0.8 138 1 1.0 0.04 6.4 -5.8
4000 26.5 0 4.8 0.7 137 1 1.1 0.04 6.6 -6.0
4100 27.2 0 4.9 0.8 136 1 1.1 0.04 6.7 -6.0
4200 28.0 0 5.0 0.8 135 1 1.1 0.04 6.9 -6.2
4300 28.7 0 5.1 0.8 135 1 1.1 0.04 7.1 -6.3
4400 29.5 0 5.3 0.8 134 1 1.2 0.04 7.2 -6.5
4500 30.2 0 5.4 0.8 133 1 1.2 0.04 7.3 -6.6
4600 31.0 0 5.5 0.8 133 1 1.2 0.05 7.5 -6.7
4700 31.7 0 5.7 0.8 132 1 1.3 0.05 7.6 -6.9
4800 32.5 0 5.8 0.8 131 1 1.3 0.05 7.8 -7.0
4900 33.3 0 5.9 0.8 131 1 1.3 0.05 7.9 -7.2
5000 34.0 0 6.1 0.8 130 1 1.3 0.05 8.1 -7.2
5100 34.8 0 6.2 0.8 129 1 1.4 0.05 8.2 -7.4
5200 35.6 0 6.3 0.8 128 1 1.4 0.05 8.4 -7.5
5300 36.4 0 6.5 0.8 128 1 1.4 0.05 8.5 -7.7
5400 37.2 0 6.6 0.8 127 1 1.5 0.06 8.7 -7.8
5500 38.0 0 6.7 0.8 126 1 1.5 0.06 8.8 -7.9
5600 38.7 0 6.9 0.8 126 1 1.5 0.06 8.9 -8.1
5700 39.5 0 7.0 0.9 125 1 1.6 0.06 9.1 -8.1
5800 40.4 0 7.1 0.9 124 2 1.6 0.06 9.2 -8.3
5900 41.2 0 7.3 0.8 124 2 1.6 0.06 9.4 -8.4
6000 42.0 0 7.4 0.8 123 2 1.6 0.06 9.5 -8.6
6100 42.8 0 7.6 0.8 122 2 1.7 0.06 9.6 -8.6
6200 43.6 0 7.7 0.8 122 2 1.7 0.07 9.8 -8.8
6300 44.4 0 7.8 0.9 121 2 1.7 0.07 9.9 -8.9
6400 45.3 0 8.0 0.8 120 2 1.8 0.07 10.0 -9.0
6500 46.1 0 8.1 0.9 120 2 1.8 0.07 10.2 -9.2
6600 47.0 0 8.3 0.9 119 2 1.8 0.07 10.4 -9.3
6700 47.8 0 8.4 0.9 118 2 1.9 0.07 10.4 -9.4
6800 48.7 0 8.5 0.9 118 2 1.9 0.07 10.6 -9.5
6900 49.5 0 8.7 0.9 117 2 1.9 0.08 10.8 -9.6
7000 50.4 0 8.8 0.9 117 2 2.0 0.08 10.8 -9.8
7100 51.2 0 9.0 0.8 116 2 2.0 0.08 11.0 -9.9
7200 52.1 0 9.1 0.9 115 2 2.0 0.08 11.1 -10.0
7300 53.0 0 9.3 0.9 115 2 2.1 0.08 11.2 -10.1
7400 53.8 0 9.4 0.9 114 2 2.1 0.08 11.4 -10.2
7500 54.7 0 9.6 0.9 113 2 2.1 0.08 11.5 -10.4
7600 55.6 0 9.7 0.9 113 2 2.2 0.08 11.6 -10.4
7700 56.5 0 9.9 0.9 112 2 2.2 0.09 11.8 -10.6
7800 57.4 0 10.0 0.9 112 2 2.2 0.09 11.9 -10.7
7900 58.3 0 10.2 0.9 111 2 2.3 0.09 12.0 -10.8
8000 59.2 0 10.3 0.9 110 2 2.3 0.09 12.1 -11.0
8100 60.1 0 10.5 0.9 110 2 2.3 0.09 12.3 -11.0
8200 61.1 0 10.6 1.0 109 2 2.4 0.09 12.4 -11.2
8300 62.0 0 10.8 0.9 109 2 2.4 0.09 12.5 -11.3
8400 62.9 0 10.9 0.9 108 2 2.4 0.10 12.7 -11.4
8500 63.8 0 11.1 1.0 107 2 2.5 0.10 12.8 -11.5
8600 64.8 0 11.2 0.9 107 2 2.5 0.10 12.9 -11.6
8700 65.7 0 11.4 0.9 106 2 2.5 0.10 13.0 -11.7
8800 66.7 0 11.5 1.0 106 2 2.6 0.10 13.2 -11.9
8900 67.6 0 11.7 1.0 105 2 2.6 0.10 13.2 -11.9
9000 68.6 0 11.8 1.0 104 2 2.6 0.10 13.4 -12.1
9100 69.5 0 12.0 1.0 104 2 2.7 0.11 13.6 -12.2
9200 70.5 0 12.2 1.0 103 2 2.7 0.11 13.6 -12.3
9300 71.5 0 12.3 1.0 103 2 2.7 0.11 13.8 -12.4
9400 72.5 0 12.5 1.0 102 2 2.8 0.11 13.9 -12.5
9500 73.5 0 12.6 1.0 102 2 2.8 0.11 14.1 -12.6
9600 74.5 0 12.8 1.0 101 2 2.8 0.11 14.1 -12.7
9700 75.4 0 13.0 1.0 100 2 2.9 0.11 14.3 -12.8
9800 76.5 0 13.1 1.0 100 2 2.9 0.12 14.4 -13.0
9900 77.5 0 13.3 1.0 99 2 2.9 0.12 14.5 -13.0
10000 78.5 0 13.5 1.0 99 2 3.0 0.12 14.6 -13.1
10100 79.5 0 13.6 1.0 98 2 3.0 0.12 14.8 -13.3
10200 80.5 0 13.8 1.0 97 2 3.1 0.12 14.9 -13.3
10300 81.6 0 14.0 1.0 97 2 3.1 0.12 15.0 -13.5
10400 82.6 0 14.1 1.0 96 2 3.1 0.13 15.1 -13.6
10500 83.7 0 14.3 1.0 96 2 3.2 0.13 15.3 -13.7
10600 84.7 0 14.5 1.1 95 2 3.2 0.13 15.3 -13.8
10700 85.8 0 14.6 1.1 95 2 3.2 0.13 15.5 -13.9
10800 86.8 0 14.8 1.0 94 2 3.3 0.13 15.6 -14.0
10900 87.9 0 15.0 1.1 94 2 3.3 0.13 15.7 -14.2
11000 89.0 0 15.1 1.1 93 2 3.3 0.13 15.8 -14.2
11100 90.1 0 15.3 1.1 92 2 3.4 0.14 16.0 -14.4
11200 91.2 0 15.5 1.1 92 2 3.4 0.14 16.1 -14.5
11300 92.3 0 15.7 1.1 91 2 3.5 0.14 16.2 -14.6
11400 93.4 0 15.8 1.1 91 2 3.5 0.14 16.3 -14.7
11500 94.5 0 16.0 1.1 90 2 3.5 0.14 16.5 -14.8
11600 95.6 0 16.2 1.1 90 2 3.6 0.14 16.5 -14.9
11700 96.7 0 16.4 1.1 89 2 3.6 0.15 16.7 -15.0
11800 97.8 0 16.5 1.2 89 2 3.7 0.15 16.8 -15.1
11900 99.0 0 16.7 1.1 88 2 3.7 0.15 16.9 -15.2
12000 100.1 0 16.9 1.2 88 2 3.7 0.15 17.0 -15.3
12100 101.3 0 17.1 1.2 87 2 3.8 0.15 17.1 -15.4
12200 102.4 0 17.3 1.1 86 2 3.8 0.15 17.3 -15.5
12300 103.6 0 17.5 1.2 86 2 3.8 0.16 17.3 -15.7
12400 104.8 0 17.6 1.2 85 2 3.9 0.16 17.4 -15.7
12500 106.0 0 17.8 1.1 85 2 3.9 0.16 17.6 -15.9
12600 107.1 0 18.0 1.2 84 2 4.0 0.16 17.7 -16.0
12700 108.3 0 18.2 1.2 84 2 4.0 0.16 17.8 -16.1
12800 109.5 0 18.4 1.3 83 2 4.0 0.16 17.9 -16.2
12900 110.8 0 18.6 1.3 83 2 4.1 0.17 18.1 -16.3
13000 112.0 0 18.8 1.2 82 2 4.1 0.17 18.1 -16.4
13100 113.2 0 19.0 1.2 82 2 4.2 0.17 18.2 -16.5
13200 114.4 0 19.1 1.3 81 2 4.2 0.17 18.4 -16.6
13300 115.7 0 19.3 1.3 81 2 4.2 0.17 18.5 -16.7
13400 116.9 0 19.5 1.3 80 2 4.3 0.18 18.6 -16.8
13500 118.2 0 19.7 1.3 80 2 4.3 0.18 18.7 -16.9
13600 119.4 0 19.9 1.3 79 2 4.4 0.18 18.8 -17.0
13700 120.7 0 20.1 1.3 79 2 4.4 0.18 18.9 -17.1
13800 122.0 0 20.3 1.3 78 2 4.5 0.18 19.0 -17.2
13900 123.3 0 20.5 1.3 78 2 4.5 0.18 19.2 -17.3
14000 124.6 0 20.7 1.3 77 3 4.5 0.19 19.3 -17.4
14100 125.9 0 20.9 1.3 77 3 4.6 0.19 19.4 -17.5
14200 127.2 0 21.1 1.3 77 3 4.6 0.19 19.5 -17.6
14300 128.5 0 21.3 1.3 76 3 4.7 0.19 19.6 -17.7
14400 129.8 0 21.5 1.3 76 3 4.7 0.19 19.7 -17.8
14500 131.2 0 21.7 1.3 75 3 4.8 0.20 19.8 -17.9
14600 132.5 0 21.9 1.3 75 3 4.8 0.20 19.9 -18.0
14700 133.9 0 22.1 1.3 74 3 4.8 0.20 20.0 -18.1
14800 135.2 0 22.3 1.4 74 3 4.9 0.20 20.2 -18.2
14900 136.6 0 22.5 1.4 73 3 4.9 0.20 20.2 -18.3
15000 138.0 0 22.7 1.4 73 3 5.0 0.20 20.3 -18.3
15100 139.4 0 22.9 1.4 72 3 5.0 0.21 20.4 -18.5
15200 140.8 0 23.2 1.4 72 3 5.1 0.21 20.6 -18.6
15300 142.2 0 23.4 1.4 72 3 5.1 0.21 20.6 -18.7
15400 143.6 0 23.6 1.4 71 3 5.1 0.21 20.7 -18.8
15500 145.0 0 23.8 1.4 71 3 5.2 0.21 20.8 -18.9
15600 146.4 0 24.0 1.4 70 3 5.2 0.22 21.0 -19.0
15700 147.9 0 24.2 1.5 70 3 5.3 0.22 21.0 -19.1
15800 149.3 0 24.4 1.5 69 3 5.3 0.22 21.1 -19.2
15900 150.8 0 24.7 1.4 69 3 5.4 0.22 21.3 -19.3
16000 152.2 0 24.9 1.4 69 3 5.4 0.22 21.4 -19.4
16100 153.7 0 25.1 1.5 68 3 5.5 0.23 21.5 -19.5
16200 155.2 0 25.3 1.5 68 3 5.5 0.23 21.6 -19.6
16300 156.7 0 25.5 1.5 67 3 5.6 0.23 21.8 -19.8
16400 158.2 0 25.7 1.5 67 3 5.6 0.23 21.8 -19.8
16500 159.7 0 26.0 1.5 67 3 5.6 0.23 22.0 -20.0
16600 161.2 0 26.2 1.5 66 3 5.7 0.24 22.1 -20.1
16700 162.7 0 26.4 1.6 66 3 5.7 0.24 22.2 -20.1
16800 164.3 0 26.6 1.6 65 3 5.8 0.24 22.3 -20.3
16900 165.8 0 26.9 1.5 65 3 5.8 0.24 22.5 -20.4
17000 167.3 0 27.1 1.5 65 3 5.9 0.24 22.6 -20.5
17100 168.9 0 27.3 1.6 64 3 5.9 0.24 22.7 -20.7
17200 170.5 0 27.6 1.6 64 3 6.0 0.25 22.9 -20.7
17300 172.1 0 27.8 1.6 64 3 6.0 0.25 23.0 -20.9
17400 173.6 0 28.0 1.5 63 3 6.1 0.25 23.1 -20.9
17500 175.2 0 28.2 1.6 63 3 6.1 0.25 23.2 -21.1
17600 176.9 0 28.5 1.7 63 4 6.2 0.25 23.4 -21.2
17700 178.5 0 28.7 1.6 62 4 6.2 0.26 23.4 -21.3
17800 180.1 0 28.9 1.6 62 4 6.3 0.26 23.6 -21.4
17900 181.7 0 29.2 1.6 61 4 6.3 0.26 23.7 -21.5
18000 183.4 0 29.4 1.7 61 4 6.3 0.26 23.8 -21.6
18100 185.0 0 29.7 1.7 61 4 6.4 0.26 23.8 -21.7
18200 186.7 0 29.9 1.7 60 4 6.4 0.27 23.9 -21.8
18300 188.4 0 30.1 1.7 60 4 6.5 0.27 24.0 -21.8
18400 190.1 0 30.4 1.7 60 4 6.5 0.27 24.2 -21.9
18500 191.7 0 30.6 1.7 59 4 6.6 0.27 24.2 -22.0
18600 193.5 0 30.9 1.8 59 4 6.6 0.27 24.3 -22.1
18700 195.2 0 31.1 1.7 59 4 6.7 0.28 24.4 -22.1
18800 196.9 0 31.4 1.7 58 4 6.7 0.28 24.6 -22.2
18900 198.6 0 31.6 1.8 58 4 6.8 0.28 24.6 -22.4
19000 200.4 0 31.8 1.8 58 4 6.8 0.28 24.7 -22.4
19100 202.1 0 32.1 1.8 57 4 6.9 0.28 24.9 -22.6
19200 203.9 0 32.3 1.8 57 4 6.9 0.29 25.0 -22.7
19300 205.6 0 32.6 1.8 57 4 7.0 0.29 25.1 -22.7
19400 207.4 0 32.8 1.8 57 4 7.0 0.29 25.2 -22.9
19500 209.2 0 33.1 1.8 56 4 7.1 0.29 25.4 -23.0
19600 211.0 0 33.3 1.8 56 4 7.1 0.29 25.5 -23.1
19700 212.8 0 33.6 1.8 56 4 7.2 0.30 25.6 -23.2
19800 214.6 0 33.8 1.8 56 4 7.2 0.30 25.7 -23.3
19900 216.4 0 34.1 1.8 55 5 7.3 0.30 25.9 -23.4
20000 218.3 0 34.4 1.9 55 5 7.3 0.30 25.9 -23.5
20100 220.1 0 34.6 1.8 55 5 7.4 0.30 26.1 -23.6
20200 222.0 0 34.9 1.8 54 5 7.4 0.31 26.2 -23.7
20300 223.8 0 35.1 1.8 54 5 7.5 0.31 26.3 -23.8
20400 225.7 0 35.4 1.9 54 5 7.5 0.31 26.4 -23.9
20500 227.6 0 35.7 1.9 53 5 7.6 0.31 26.6 -24.1
20600 229.5 0 35.9 1.9 53 5 7.6 0.31 26.7 -24.3
20700 231.4 0 36.2 1.9 53 5 7.7 0.32 26.8 -24.5
20800 233.3 0 36.4 1.9 53 5 7.7 0.32 27.0 -24.7
20900 235.2 0 36.7 1.9 52 5 7.8 0.32 27.1 -24.8
21000 237.2 0 37.0 2.0 52 5 7.8 0.32 27.2 -25.0
21100 239.1 0 37.2 2.0 52 5 7.9 0.32 27.3 -25.2
21200 241.1 0 37.5 1.9 52 5 7.9 0.33 27.5 -25.3
21300 243.0 0 37.8 1.9 51 5 8.0 0.33 27.5 -25.3
21400 245.0 0 38.0 2.0 51 5 8.0 0.33 27.6 -25.1
21500 247.0 0 38.3 1.9 51 5 8.1 0.33 27.7 -25.4
21600 248.9 0 38.6 1.9 51 5 8.1 0.33 27.8 -25.5
21700 250.9 0 38.8 2.0 51 5 8.2 0.34 27.9 -25.5
21800 252.9 0 39.1 2.1 50 6 8.2 0.34 28.0 -25.6
21900 255.0 0 39.4 2.1 50 6 8.3 0.34 28.2 -25.6
22000 257.0 0 39.7 2.0 50 6 8.4 0.34 28.4 -25.7
22100 259.0 0 39.9 2.0 50 6 8.4 0.34 28.6 -25.9
22200 261.0 0 40.2 2.1 49 6 8.5 0.35 28.8 -26.1
22300 263.1 0 40.5 2.1 49 6 8.5 0.35 29.1 -26.3
22400 265.1 0 40.8 2.1 49 6 8.6 0.35 29.2 -26.5
22500 267.2 0 41.0 2.1 49 6 8.6 0.35 29.4 -26.7
22600 269.3 0 41.3 2.1 48 6 8.7 0.35 29.6 -26.8
22700 271.4 0 41.6 2.1 48 6 8.7 0.35 29.6 -27.0
22800 273.5 0 41.9 2.1 48 6 8.8 0.36 29.7 -27.1
22900 275.6 0 42.2 2.1 48 6 8.8 0.36 29.8 -27.1
23000 277.7 0 42.4 2.1 48 6 8.9 0.36 29.8 -27.1
23100 279.8 0 42.7 2.1 47 6 8.9 0.36 29.9 -27.1
23200 282.0 0 43.0 2.2 47 7 9.0 0.36 29.9 -27.2
23300 284.1 0 43.3 2.1 47 7 9.1 0.37 29.9 -27.3
23400 286.3 0 43.6 2.1 47 7 9.1 0.37 30.2 -27.4
23500 288.4 0 43.9 2.2 47 7 9.2 0.37 30.4 -27.5
23600 290.6 0 44.2 2.2 47 7 9.2 0.37 30.6 -27.7
23700 292.8 0 44.4 2.2 46 7 9.3 0.37 30.8 -28.0
23800 295.0 0 44.7 2.2 46 7 9.3 0.37 31.1 -28.1
23900 297.2 0 45.0 2.2 46 7 9.4 0.38 31.3 -28.3
24000 299.4 0 45.3 2.2 46 7 9.4 0.38 31.5 -28.5
24100 301.6 0 45.6 2.2 46 7 9.5 0.38 31.6 -28.6
24200 303.8 0 45.9 2.2 45 7 9.5 0.38 31.6 -28.7
24300 306.0 0 46.2 2.3 45 7 9.6 0.38 31.6 -28.7
24400 308.3 0 46.5 2.3 45 7 9.7 0.39 31.6 -28.7
24500 310.5 0 46.8 2.3 45 7 9.7 0.39 31.6 -28.7
24600 312.8 0 47.1 2.3 45 8 9.8 0.39 31.6 -28.8
24700 315.1 0 47.4 2.3 44 8 9.8 0.39 31.7 -28.8
24800 317.3 0 47.6 2.3 44 8 9.9 0.39 32.0 -28.9
24900 319.6 0 47.9 2.3 44 8 9.9 0.39 32.1 -29.1
25000 321.9 0 48.2 2.3 44 8 10.0 0.40 32.4 -29.3
25100 324.3 0 48.5 2.4 44 8 10.1 0.40 32.6 -29.5
25200 326.6 0 48.8 2.3 44 8 10.1 0.40 32.8 -29.8
25300 328.9 0 49.1 2.3 43 8 10.2 0.40 33.1 -30.0
25400 331.2 0 49.4 2.4 43 8 10.2 0.40 33.3 -30.3
25500 333.6 0 49.7 2.3 43 8 10.3 0.40 33.5 -30.4
25600 335.9 0 50.0 2.3 43 8 10.3 0.41 33.7 -30.6
25700 338.3 0 50.3 2.4 43 8 10.4 0.41 33.9 -30.8
25800 340.6 0 50.6 2.4 43 9 10.5 0.41 34.0 -30.9
25900 343.0 0 51.0 2.4 43 9 10.5 0.41 34.2 -31.1
26000 345.4 0 51.3 2.4 42 9 10.6 0.41 34.3 -31.2
26100 347.8 0 51.6 2.4 42 9 10.6 0.41 34.3 -31.3
26200 350.1 0 51.9 2.4 42 9 10.7 0.42 34.4 -31.3
26300 352.6 0 52.2 2.4 42 9 10.8 0.42 34.4 -31.4
26400 355.0 0 52.5 2.4 42 9 10.8 0.42 34.4 -31.4
26500 357.4 0 52.8 2.4 42 9 10.9 0.42 34.4 -31.5
26600 359.8 0 53.1 2.4 41 9 10.9 0.42 34.6 -31.5
26700 362.3 0 53.4 2.5 41 9 11.0 0.42 34.8 -31.7
26800 364.7 0 53.7 2.5 41 10 11.1 0.43 35.1 -31.9
26900 367.2 0 54.0 2.5 41 10 11.1 0.43 35.4 -32.1
27000 369.7 0 54.3 2.5 41 10 11.2 0.43 35.6 -32.4
27100 372.2 0 54.7 2.4 41 10 11.3 0.43 36.0 -32.7
27200 374.6 0 55.0 2.4 41 10 11.3 0.43 36.2 -32.9
27300 377.1 0 55.3 2.5 41 10 11.4 0.43 36.4 -33.1
27400 379.6 0 55.6 2.5 40 10 11.5 0.44 36.6 -33.2
27500 382.1 0 55.9 2.6 40 10 11.5 0.44 36.8 -33.4
27600 384.7 0 56.2 2.6 40 10 11.6 0.44 36.9 -33.5
27700 387.2 0 56.5 2.5 40 11 11.6 0.44 37.1 -33.8
27800 389.7 0 56.9 2.5 40 11 11.7 0.44 37.3 -33.9
27900 392.3 0 57.2 2.5 40 11 11.8 0.44 37.4 -34.1
28000 394.8 0 57.5 2.6 40 11 11.8 0.44 37.7 -34.2
28100 397.4 0 57.8 2.6 39 11 11.9 0.45 37.8 -34.4
28200 400.0 0 58.1 2.6 39 11 12.0 0.45 38.1 -34.7
28300 402.5 0 58.5 2.6 39 11 12.0 0.45 38.2 -34.8
28400 405.1 0 58.8 2.6 39 11 12.1 0.45 38.5 -35.0
28500 407.7 0 59.1 2.6 39 11 12.2 0.45 38.7 -35.2
28600 410.3 0 59.4 2.6 39 11 12.3 0.45 38.9 -35.3
28700 412.9 0 59.8 2.6 39 12 12.3 0.46 39.2 -35.5
28800 415.5 0 60.1 2.6 39 12 12.4 0.46 39.4 -35.6
28900 418.1 0 60.4 2.6 39 12 12.5 0.46 39.7 -35.8
29000 420.8 0 60.7 2.6 38 12 12.5 0.46 39.8 -35.9
29100 423.4 0 61.1 2.7 38 12 12.6 0.46 40.0 -36.1
29200 426.1 0 61.4 2.7 38 12 12.7 0.46 40.1 -36.3
29300 428.8 0 61.7 2.6 38 12 12.8 0.46 40.1 -36.5
29400 431.4 0 62.0 2.7 38 13 12.8 0.46 40.3 -36.7
29500 434.1 0 62.4 2.7 38 13 12.9 0.47 40.5 -36.8
29600 436.8 0 62.7 2.7 38 13 13.0 0.47 40.6 -37.1
29700 439.5 0 63.0 2.7 37 13 13.1 0.47 40.9 -37.3
29800 442.2 0 63.4 2.8 37 13 13.1 0.47 41.0 -37.4
29900 445.0 0 63.7 2.8 37 13 13.2 0.47 41.3 -37.6
30000 447.7 0 64.0 2.7 37 13 13.3 0.47 41.5 -37.9
30100 450.4 0 64.4 2.8 37 13 13.4 0.47 41.8 -38.1
30200 453.2 0 64.7 2.8 37 14 13.4 0.48 42.0 -38.3
30300 455.9 0 65.1 2.8 37 14 13.5 0.48 42.2 -38.6
30400 458.7 0 65.4 2.8 37 14 13.6 0.48 42.5 -38.8
30500 461.5 0 65.7 2.8 36 14 13.7 0.48 42.7 -39.1
30600 464.3 0 66.1 2.8 36 14 13.8 0.48 43.0 -39.4
30700 467.1 0 66.4 2.8 36 14 13.8 0.48 43.4 -39.7
30800 469.8 0 66.8 2.8 36 14 13.9 0.48 43.8 -40.0
30900 472.6 0 67.1 2.9 36 14 14.0 0.48 44.2 -40.3
31000 475.5 0 67.4 2.8 36 15 14.1 0.49 44.6 -40.6
31100 478.3 0 67.8 2.8 36 15 14.2 0.49 45.0 -40.9
31200 481.1 0 68.1 2.8 36 15 14.3 0.49 45.4 -41.2
31300 483.9 0 68.5 2.8 36 15 14.3 0.49 45.6 -41.4
31400 486.8 0 68.8 2.9 36 15 14.4 0.49 45.9 -41.6
31500 489.6 0 69.2 2.9 35 15 14.5 0.49 46.1 -41.7
31600 492.5 0 69.5 2.9 35 15 14.6 0.49 46.3 -42.0
31700 495.4 0 69.9 2.9 35 16 14.7 0.49 46.4 -42.0
31800 498.3 0 70.2 2.9 35 16 14.8 0.49 46.5 -42.2
31900 501.2 0 70.6 2.9 35 16 14.9 0.50 46.5 -42.3
32000 504.1 0 70.9 2.9 35 16 15.0 0.50 46.6 -42.3
32100 507.1 0 71.3 2.9 34 16 15.1 0.50 46.6 -42.5
32200 510.0 0 71.6 2.9 34 17 15.2 0.50 46.7 -42.6
32300 513.0 0 72.0 3.0 34 17 15.2 0.50 47.0 -42.8
32400 516.0 0 72.3 3.0 34 17 15.3 0.50 47.2 -43.0
32500 518.9 0 72.7 3.0 34 17 15.4 0.50 47.5 -43.3
32600 521.9 0 73.0 3.0 34 17 15.5 0.50 47.9 -43.7
32700 524.9 0 73.4 3.0 34 17 15.6 0.50 48.3 -44.0
32800 528.0 0 73.8 3.0 34 17 15.7 0.51 48.7 -44.4
32900 531.0 0 74.1 3.0 34 18 15.8 0.51 49.1 -44.7
33000 534.0 0 74.5 3.0 33 18 15.9 0.51 49.5 -45.0
33100 537.1 0 74.8 3.0 33 18 16.0 0.51 50.0 -45.4
33200 540.1 0 75.2 3.1 33 18 16.2 0.51 50.3 -45.7
33300 543.2 0 75.6 3.1 33 18 16.3 0.51 50.7 -46.1
33400 546.3 0 75.9 3.1 33 19 16.4 0.51 51.0 -46.3
33500 549.4 0 76.3 3.1 33 19 16.5 0.51 51.3 -46.6
33600 552.5 0 76.7 3.1 33 19 16.6 0.51 51.6 -46.8
33700 555.6 0 77.0 3.1 32 19 16.7 0.51 51.9 -47.0
33800 558.8 0 77.4 3.2 32 19 16.8 0.52 52.2 -47.3
33900 561.9 0 77.8 3.1 32 20 16.9 0.52 52.5 -47.6
34000 565.1 0 78.2 3.2 32 20 17.0 0.52 52.8 -47.9
34100 568.3 0 78.5 3.2 32 20 17.2 0.52 53.2 -48.1
34200 571.5 0 78.9 3.2 32 20 17.3 0.52 53.4 -48.4
34300 574.7 0 79.3 3.2 31 20 17.4 0.52 53.7 -48.6
34400 577.9 0 79.7 3.3 31 21 17.5 0.52 54.0 -48.9
34500 581.2 0 80.1 3.3 31 21 17.6 0.52 54.3 -49.2
34600 584.4 0 80.4 3.3 31 21 17.8 0.52 54.7 -49.5
34700 587.7 0 80.8 3.3 31 21 17.9 0.52 55.1 -49.9
34800 591.0 0 81.2 3.4 31 22 18.0 0.52 55.5 -50.2
34900 594.4 0 81.6 3.4 31 22 18.2 0.52 56.0 -50.7
35000 597.7 0 82.0 3.3 30 22 18.3 0.53 56.3 -51.1
35100 601.1 0 82.4 3.4 30 22 18.4 0.53 56.5 -51.4
35200 604.4 0 82.8 3.4 30 23 18.6 0.53 56.8 -51.7
35300 607.8 0 83.2 3.4 30 23 18.7 0.53 57.0 -51.9
35400 611.3 0 83.6 3.5 30 23 18.8 0.53 57.2 -52.0
35500 614.7 0 84.0 3.5 29 23 19.0 0.53 57.5 -52.2
35600 618.2 0 84.4 3.5 29 24 19.1 0.53 57.8 -52.3
35700 621.7 0 84.8 3.5 29 24 19.3 0.53 58.1 -52.6
35800 625.2 0 85.2 3.5 29 24 19.4 0.53 58.5 -53.0
35900 628.8 0 85.6 3.5 29 25 19.6 0.53 58.9 -53.4
36000 632.3 0 86.0 3.6 28 25 19.7 0.53 59.3 -53.7
36100 635.9 0 86.4 3.6 28 25 19.9 0.53 59.7 -54.0
36200 639.6 0 86.8 3.6 28 26 20.1 0.53 60.1 -54.4
36300 643.2 0 87.2 3.7 28 26 20.2 0.54 60.5 -54.7
36400 646.9 0 87.7 3.8 27 26 20.4 0.54 60.9 -55.1
36500 650.7 0 88.1 3.8 27 27 20.6 0.54 61.2 -55.5
36600 654.4 0 88.5 3.8 27 27 20.7 0.54 61.6 -55.8
36700 658.2 0 89.0 3.8 27 27 20.9 0.54 62.0 -56.1
36800 662.1 0 89.4 3.9 26 28 21.1 0.54 62.4 -56.6
36900 665.9 0 89.8 3.9 26 28 21.3 0.54 62.8 -57.0
37000 669.9 0 90.3 3.9 26 29 21.5 0.54 63.3 -57.6
37100 673.8 0 90.7 3.9 26 29 21.7 0.54 63.8 -58.1
37200 677.8 0 91.2 4.0 25 30 21.9 0.54 64.6 -58.6
37300 681.8 0 91.6 4.1 25 30 22.1 0.54 65.3 -59.1
37400 685.9 0 92.1 4.1 25 31 22.3 0.54 66.0 -59.6
37500 690.1 0 92.5 4.1 25 31 22.5 0.54 66.6 -60.2
37600 694.2 0 93.0 4.2 24 32 22.7 0.54 67.0 -60.7
37700 698.5 0 93.5 4.3 24 32 23.0 0.54 67.5 -61.1
37800 702.8 0 94.0 4.3 24 33 23.2 0.54 68.0 -61.7
37900 707.1 0 94.4 4.4 23 34 23.4 0.55 68.6 -62.1
38000 711.5 0 94.9 4.5 23 34 23.7 0.55 69.1 -62.5
38100 716.0 0 95.4 4.5 23 35 23.9 0.55 69.6 -63.0
38200 720.6 0 95.9 4.6 22 36 24.2 0.55 70.3 -63.4
38300 725.2 0 96.4 4.7 22 36 24.5 0.55 70.9 -64.0
38400 729.9 0 96.9 4.7 22 37 24.7 0.55 71.5 -64.6
38500 734.6 0 97.5 4.8 22 37 25.0 0.55 72.2 -65.1
38600 739.4 0 98.0 4.8 21 38 25.3 0.55 72.9 -65.7
38700 744.2 0 98.5 4.8 21 39 25.6 0.55 73.5 -66.3
38800 749.1 0 99.0 4.9 21 39 25.9 0.55 74.1 -66.8
38900 754.1 0 99.6 5.1 20 40 26.2 0.55 74.7 -67.3
39000 759.2 0 100.1 5.2 20 42 26.5 0.55 75.2 -67.5
39100 764.4 0 100.7 5.3 19 43 26.8 0.55 75.4 -67.8
39200 769.8 0 101.2 5.4 19 44 27.2 0.55 75.6 -68.0
39300 775.3 0 101.8 5.6 18 46 27.5 0.55 75.9 -68.7
39400 781.0 0 102.4 5.8 18 48 27.9 0.55 76.7 -69.6
39500 786.9 0 103.1 6.0 17 50 28.3 0.55 77.7 -70.4
39600 793.1 0 103.7 6.3 16 52 28.7 0.55 78.6 -71.1
39700 799.5 0 104.4 6.6 16 55 29.1 0.55 79.4 -71.7
39800 806.2 0 105.1 7.0 15 58 29.6 0.55 80.1 -72.3
39900 813.4 0 105.8 7.4 14 62 30.1 0.55 80.9 -72.9
40000 821.1 0 106.6 8.0 13 68 30.7 0.55 81.6 -73.5
40100 829.5 0 107.5 8.9 12 75 31.3 0.55 82.2 -74.0
40200 838.9 0 108.4 10.1 10 86 32.1 0.55 82.9 -74.6
40300 849.8 0 109.5 12.2 9 104 32.9 0.55 83.3 -75.0
40400 863.3 0 110.8 26.6 7 108 34.0 0.55 83.8 -75.4
40528 902.9 0 115.0 39.1 5 110 38.0 0.55 84.0 -75.7
40400 941.6 0 118.3 25.6 7 104 41.5 0.56 84.2 -75.8
40300 954.2 0 119.4 11.3 9 98 42.8 0.57 84.6 -76.1
40200 964.1 0 120.3 9.1 11 79 44.0 0.57 84.9 -76.4
40100 972.5 0 121.0 8.0 13 69 45.0 0.57 85.2 -76.6
40000 980.0 0 121.7 7.1 15 61 45.9 0.57 85.4 -76.9
39900 986.7 0 122.3 6.5 16 56 46.7 0.57 85.6 -77.0
39800 992.9 0 122.8 5.9 17 51 47.5 0.58 85.7 -77.2
39700 998.6 0 123.3 5.5 18 48 48.2 0.58 85.8 -77.2
39600 1004.0 0 123.8 5.3 20 45 48.9 0.58 85.8 -77.3
39500 1009.1 0 124.2 5.0 21 43 49.6 0.58 85.8 -77.4
39400 1014.0 0 124.6 4.8 22 41 50.2 0.58 85.8 -77.4
39300 1018.6 0 125.0 4.5 22 39 50.8 0.58 85.7 -77.3
39200 1023.1 0 125.3 4.4 23 38 51.4 0.59 85.5 -77.2
39100 1027.4 0 125.7 4.3 24 36 51.9 0.59 85.4 -77.2
39000 1031.6 0 126.0 4.1 25 35 52.4 0.59 85.2 -77.0
38900 1035.7 0 126.4 4.0 26 34 52.9 0.59 85.0 -76.9
38800 1039.6 0 126.7 3.9 26 33 53.4 0.59 84.8 -76.7
38700 1043.4 0 127.0 3.8 27 32 53.8 0.59 84.5 -76.5
38600 1047.1 0 127.3 3.6 28 31 54.2 0.60 84.3 -76.2
38500 1050.7 0 127.6 3.5 28 30 54.7 0.60 84.1 -76.0
38400 1054.2 0 127.8 3.5 29 29 55.1 0.60 83.7 -75.6
38300 1057.7 0 128.1 3.5 30 29 55.5 0.60 83.4 -75.3
38200 1061.1 0 128.4 3.4 30 28 56.0 0.60 83.1 -75.0
38100 1064.4 0 128.6 3.3 31 27 56.4 0.60 82.8 -74.8
38000 1067.6 0 128.9 3.2 32 27 56.8 0.61 82.5 -74.6
37900 1070.8 0 129.1 3.2 32 26 57.3 0.61 82.2 -74.3
37800 1074.0 0 129.3 3.1 33 26 57.7 0.61 82.0 -74.1
37700 1077.0 0 129.6 3.0 33 25 58.1 0.61 81.7 -73.9
37600 1080.0 0 129.8 3.0 34 24 58.5 0.61 81.5 -73.7
37500 1083.0 0 130.0 3.0 35 24 58.9 0.61 81.2 -73.5
37400 1085.9 0 130.2 2.8 35 23 59.3 0.62 80.9 -73.3
37300 1088.7 0 130.4 2.8 36 23 59.7 0.62 80.5 -73.1
37200 1091.6 0 130.6 2.8 36 23 60.1 0.62 80.1 -72.9
37100 1094.3 0 130.8 2.7 37 22 60.5 0.62 79.7 -72.7
37000 1097.0 0 131.0 2.7 37 22 60.9 0.62 79.3 -72.5
36900 1099.7 0 131.2 2.7 38 21 61.3 0.62 79.2 -72.2
36800 1102.4 0 131.4 2.7 39 21 61.7 0.63 79.0 -72.0
36700 1105.0 0 131.6 2.6 39 21 62.1 0.63 78.9 -71.7
36600 1107.6 0 131.8 2.5 40 20 62.5 0.63 78.8 -71.5
36500 1110.1 0 132.0 2.5 40 20 62.8 0.63 78.7 -71.3
36400 1112.6 0 132.2 2.5 41 20 63.2 0.63 78.5 -71.0
36300 1115.1 0 132.3 2.5 41 19 63.6 0.64 78.3 -70.7
36200 1117.6 0 132.5 2.5 42 19 63.9 0.64 78.0 -70.5
36100 1120.0 0 132.7 2.4 42 19 64.3 0.64 77.6 -70.3
36000 1122.4 0 132.8 2.3 42 19 64.6 0.64 77.3 -70.1
35900 1124.7 0 133.0 2.3 43 18 64.9 0.64 77.0 -69.9
35800 1127.1 0 133.2 2.4 43 18 65.2 0.64 76.7 -69.6
35700 1129.4 0 133.3 2.3 44 18 65.5 0.65 76.3 -69.4
35600 1131.7 0 133.5 2.3 44 18 65.8 0.65 75.9 -69.2
35500 1134.0 0 133.6 2.3 45 17 66.1 0.65 75.5 -69.0
35400 1136.2 0 133.8 2.2 45 17 66.4 0.65 75.1 -68.7
35300 1138.4 0 133.9 2.2 46 17 66.6 0.65 74.7 -68.4
35200 1140.6 0 134.0 2.2 46 17 66.9 0.65 74.4 -68.2
35100 1142.8 0 134.2 2.2 47 16 67.2 0.66 74.0 -68.0
35000 1145.0 0 134.3 2.1 47 16 67.4 0.66 73.9 -67.8
34900 1147.1 0 134.5 2.1 48 16 67.7 0.66 73.7 -67.5
34800 1149.2 0 134.6 2.1 48 16 68.0 0.66 73.5 -67.2
34700 1151.3 0 134.7 2.1 49 15 68.3 0.66 73.4 -67.0
34600 1153.3 0 134.9 2.0 49 15 68.6 0.67 73.2 -66.9
34500 1155.4 0 135.0 2.0 50 15 68.9 0.67 73.1 -66.6
34400 1157.4 0 135.1 2.0 50 15 69.4 0.67 72.9 -66.5
34300 1159.4 0 135.2 2.0 51 15 69.8 0.67 72.7 -66.3
34200 1161.4 0 135.4 2.0 52 14 70.2 0.67 72.6 -66.1
34100 1163.3 0 135.5 1.9 52 14 70.6 0.68 72.3 -66.0
34000 1165.2 0 135.6 1.9 53 14 70.9 0.68 72.2 -65.8
33900 1167.1 0 135.7 1.9 53 14 71.2 0.68 71.9 -65.7
33800 1169.0 0 135.8 1.9 54 14 71.5 0.68 71.7 -65.5
33700 1170.9 0 136.0 1.9 54 13 71.6 0.69 71.5 -65.3
33600 1172.8 0 136.1 1.8 55 13 71.5 0.69 71.3 -65.2
33500 1174.6 0 136.2 1.8 55 13 71.4 0.69 71.1 -65.0
33400 1176.4 0 136.3 1.8 56 13 71.2 0.69 70.8 -64.8
33300 1178.2 0 136.4 1.8 56 13 71.0 0.69 70.6 -64.6
33200 1180.0 0 136.5 1.8 57 13 70.8 0.70 70.3 -64.5
33100 1181.8 0 136.6 1.8 57 12 70.6 0.70 70.1 -64.3
33000 1183.5 0 136.7 1.8 58 12 70.4 0.70 69.9 -64.1
32900 1185.3 0 136.8 1.8 58 12 70.2 0.70 69.5 -63.9
32800 1187.0 0 136.9 1.7 59 12 70.1 0.71 69.3 -63.7
32700 1188.7 0 137.0 1.7 59 12 70.1 0.71 69.1 -63.5
32600 1190.4 0 137.1 1.7 59 12 70.0 0.71 68.8 -63.3
32500 1192.1 0 137.2 1.7 60 12 70.0 0.71 68.6 -63.1
32400 1193.8 0 137.3 1.7 60 12 70.0 0.72 68.3 -62.9
32300 1195.5 0 137.4 1.7 60 11 69.9 0.72 68.1 -62.8
32200 1197.2 0 137.5 1.7 60 11 69.9 0.72 67.8 -62.5
32100 1198.8 0 137.6 1.7 61 11 70.0 0.72 67.6 -62.5
32000 1200.5 0 137.7 1.7 60 11 70.0 0.73 67.4 -62.4
31900 1202.2 0 137.8 1.7 61 11 70.0 0.73 67.3 -62.3
31800 1203.8 0 137.9 1.7 61 11 70.1 0.73 67.2 -62.2
31700 1205.5 0 138.0 1.7 61 11 70.1 0.73 67.1 -62.2
31600 1207.2 0 138.1 1.7 61 11 70.2 0.74 67.0 -62.2
31500 1208.8 0 138.1 1.7 61 11 70.2 0.74 67.0 -62.2
31400 1210.5 0 138.2 1.6 61 11 70.3 0.74 66.9 -62.1
31300 1212.1 0 138.3 1.7 61 11 70.3 0.74 66.8 -62.1
31200 1213.8 0 138.4 1.7 61 11 70.4 0.75 66.7 -62.0
31100 1215.4 0 138.5 1.6 61 11 70.4 0.75 66.6 -61.9
31000 1217.1 0 138.6 1.6 61 11 70.4 0.75 66.6 -61.7
30900 1218.7 0 138.7 1.6 61 11 70.4 0.75 66.4 -61.7
30800 1220.3 0 138.8 1.7 61 10 70.3 0.76 66.2 -61.4
30700 1222.0 0 138.9 1.6 61 10 70.3 0.76 66.1 -61.3
30600 1223.6 0 138.9 1.7 62 10 70.2 0.76 65.9 -61.1
30500 1225.3 0 139.0 1.7 62 10 70.2 0.76 65.8 -61.0
30400 1226.9 0 139.1 1.6 62 10 70.1 0.77 65.6 -60.8
30300 1228.5 0 139.2 1.6 62 10 70.1 0.77 65.4 -60.6
30200 1230.1 0 139.3 1.7 62 10 70.1 0.77 65.2 -60.5
30100 1231.8 0 139.4 1.7 63 10 70.1 0.77 65.0 -60.3
30000 1233.4 0 139.4 1.6 63 10 70.1 0.78 64.9 -60.1
29900 1235.0 0 139.5 1.6 63 10 70.1 0.78 64.7 -59.9
29800 1236.6 0 139.6 1.6 63 10 70.1 0.78 64.6 -59.8
29700 1238.2 0 139.7 1.5 63 10 70.1 0.78 64.3 -59.6
29600 1239.7 0 139.8 1.6 64 10 70.2 0.79 64.2 -59.4
29500 1241.3 0 139.9 1.6 64 9 70.2 0.79 64.0 -59.3
29400 1242.9 0 139.9 1.6 64 9 70.2 0.79 63.8 -59.1
29300 1244.5 0 140.0 1.6 64 9 70.2 0.80 63.6 -59.0
29200 1246.1 0 140.1 1.5 64 9 70.3 0.80 63.4 -58.7
29100 1247.6 0 140.2 1.5 65 9 70.3 0.80 63.2 -58.6
29000 1249.2 0 140.2 1.5 65 9 70.3 0.80 62.9 -58.4
28900 1250.7 0 140.3 1.6 65 9 70.3 0.81 62.7 -58.2
28800 1252.3 0 140.4 1.6 65 9 70.3 0.81 62.5 -58.1
28700 1253.8 0 140.5 1.5 65 9 70.3 0.81 62.2 -57.9
28600 1255.4 0 140.5 1.5 66 9 70.3 0.81 62.0 -57.7
28500 1256.9 0 140.6 1.5 66 9 70.3 0.82 61.7 -57.6
}
} Ende Spaltengruppe
} Ende Standard_Tafel
} Ende Schuss_Tafel
@@ -0,0 +1,63 @@
###########################################################################
# #
# Projekt:File "Moerser-60mm-Lad1.sus" zur Munition "60_mm_Splitter" #
# #
# Bei der Auspraegung des Ballistik-Moduls vereinbarte Bezeichnungen #
# Tafel_Namen : ENTFERNUNG, AUFSATZ, FLUGZEIT, -- obligatorisch #
# VORHALT -- projektspezifisch #
# Param_Namen : DELTA_V0, LUFTTEMP, LUFTDRUCK, #
# LAENGSWIND, QUERWIND, #
# PULVERTEMP -- Korrektur-Parameter #
# #
###########################################################################
# Aenderung/Stand: 27.06.2024 - 07:04
Schuss_Tafel =
{
Munition = "60_mm_Splitter"
Version = "60_mm_Splitter_Lad1"
Muni_Parameter = { Kaliber = 60.0 Masse = 1.8 V0 = 200.0 }
Std_Parameter = { DELTA_V0 = 0.0
LUFTTEMP = 15.0
LUFTDRUCK = 1013.25
LAENGSWIND= 0.0
QUERWIND = 0.0
PULVERTEMP= 21.1 }
Entfernung_Range= { Min = 100.0 Max = 17700.0 Delta = 100.0 Scheitel = 17785.0 }
Ballistik = "Parabel"
###########################################################################
Standard_Tafel =
{
Spaltengruppe =
{ Belegung = { AUFSATZ = (2) [-]
VORHALT = (3) [-]
FLUGZEIT = (4)
DELTA_RGE = (5) [-]
DELTA_ELEV = (6)
FORK = (7) [-]
DRIFT = (8) [-]
}
Zeilenlaenge = 4
Datenblock =
{
#
# RGE ELEV TOF DELTA DELTA FORK BEARING-CORR. RANGE-CORR.
# ENTF AUFSATZ VORHALT FLUGZEIT RGE ELEV DRIFT CW DEC INC
# [m] [mil] [mil] [sec] [mil] [m] [mil] [mil] [mil] [m] [m]
#
100 1422 0 17,0
120 1333 0 16,0
140 1244 0 15,0
160 1156 0 14,0
180 1067 0 13,0
200 978 0 12,0
220 889 0 11,0
240 800 0 10,0
}
} Ende Spaltengruppe
} Ende Standard_Tafel
} Ende Schuss_Tafel
@@ -0,0 +1,77 @@
###########################################################################
# #
# Projekt:File "Moerser-60mm-Lad2.sus" zur Munition "60_mm_Splitter" #
# #
# Bei der Auspraegung des Ballistik-Moduls vereinbarte Bezeichnungen #
# Tafel_Namen : ENTFERNUNG, AUFSATZ, FLUGZEIT, -- obligatorisch #
# VORHALT -- projektspezifisch #
# Param_Namen : DELTA_V0, LUFTTEMP, LUFTDRUCK, #
# LAENGSWIND, QUERWIND, #
# PULVERTEMP -- Korrektur-Parameter #
# #
###########################################################################
# Aenderung/Stand: 27.06.2024 - 07:04
Schuss_Tafel =
{
Munition = "60_mm_Splitter"
Version = "60_mm_Splitter_Lad2"
Muni_Parameter = { Kaliber = 60.0 Masse = 1.8 V0 = 200.0 }
Std_Parameter = { DELTA_V0 = 0.0
LUFTTEMP = 15.0
LUFTDRUCK = 1013.25
LAENGSWIND= 0.0
QUERWIND = 0.0
PULVERTEMP= 21.1 }
Entfernung_Range= { Min = 100.0 Max = 17700.0 Delta = 100.0 Scheitel = 17785.0 }
Ballistik = "Parabel"
###########################################################################
Standard_Tafel =
{
Spaltengruppe =
{ Belegung = { AUFSATZ = (2) [-]
VORHALT = (3) [-]
FLUGZEIT = (4)
DELTA_RGE = (5) [-]
DELTA_ELEV = (6)
FORK = (7) [-]
DRIFT = (8) [-]
}
Zeilenlaenge = 4
Datenblock =
{
#
# RGE ELEV TOF DELTA DELTA FORK BEARING-CORR. RANGE-CORR.
# ENTF AUFSATZ VORHALT FLUGZEIT RGE ELEV DRIFT CW DEC INC
# [m] [mil] [mil] [sec] [mil] [m] [mil] [mil] [mil] [m] [m]
#
150 1476 0 31,4
165 1465 0 31,4
180 1449 0 31,3
195 1436 0 31,2
210 1422 0 31,2
225 1408 0 31,1
240 1394 0 30,9
255 1380 0 30,8
270 1366 0 30,7
285 1351 0 30,6
300 1337 0 30,5
315 1322 0 30,4
330 1306 0 30,3
345 1290 0 30,2
360 1274 0 30,0
375 1258 0 29,9
390 1241 0 29,7
405 1223 0 29,5
420 1205 0 29,3
435 1187 0 29,1
450 1167 0 28,9
457 1147 0 28,6
}
} Ende Spaltengruppe
} Ende Standard_Tafel
} Ende Schuss_Tafel
@@ -0,0 +1,78 @@
###########################################################################
# #
# Projekt:File "Moerser-60mm-Lad3.sus" zur Munition "60_mm_Splitter" #
# #
# Bei der Auspraegung des Ballistik-Moduls vereinbarte Bezeichnungen #
# Tafel_Namen : ENTFERNUNG, AUFSATZ, FLUGZEIT, -- obligatorisch #
# VORHALT -- projektspezifisch #
# Param_Namen : DELTA_V0, LUFTTEMP, LUFTDRUCK, #
# LAENGSWIND, QUERWIND, #
# PULVERTEMP -- Korrektur-Parameter #
# #
###########################################################################
# Aenderung/Stand: 27.06.2024 - 07:04
Schuss_Tafel =
{
Munition = "60_mm_Splitter"
Version = "60_mm_Splitter_Lad3"
Muni_Parameter = { Kaliber = 60.0 Masse = 1.8 V0 = 200.0 }
Std_Parameter = { DELTA_V0 = 0.0
LUFTTEMP = 15.0
LUFTDRUCK = 1013.25
LAENGSWIND= 0.0
QUERWIND = 0.0
PULVERTEMP= 21.1 }
Entfernung_Range= { Min = 100.0 Max = 17700.0 Delta = 100.0 Scheitel = 17785.0 }
Ballistik = "Parabel"
###########################################################################
Standard_Tafel =
{
Spaltengruppe =
{ Belegung = { AUFSATZ = (2) [-]
VORHALT = (3) [-]
FLUGZEIT = (4)
DELTA_RGE = (5) [-]
DELTA_ELEV = (6)
FORK = (7) [-]
DRIFT = (8) [-]
}
Zeilenlaenge = 4
Datenblock =
{
#
# RGE ELEV TOF DELTA DELTA FORK BEARING-CORR. RANGE-CORR.
# ENTF AUFSATZ VORHALT FLUGZEIT RGE ELEV DRIFT CW DEC INC
# [m] [mil] [mil] [sec] [mil] [m] [mil] [mil] [mil] [m] [m]
#
300 1407 0 36,0
315 1396 0 36,0
330 1386 0 35,9
345 1375 0 35,8
360 1364 0 35,7
375 1353 0 35,6
390 1342 0 35,5
405 1330 0 35,5
420 1319 0 35,3
435 1307 0 35,2
450 1295 0 35,1
465 1283 0 35,0
480 1271 0 34,9
495 1258 0 34,7
510 1245 0 34,6
525 1232 0 34,4
540 1219 0 34,2
555 1205 0 34,0
570 1191 0 33,8
585 1176 0 33,6
600 1161 0 33,4
615 1145 0 33,2
630 1129 0 32,9
}
} Ende Spaltengruppe
} Ende Standard_Tafel
} Ende Schuss_Tafel
@@ -0,0 +1,63 @@
###########################################################################
# #
# Projekt:File "Moerser-60mm-Lad4.sus" zur Munition "60_mm_Splitter" #
# #
# Bei der Auspraegung des Ballistik-Moduls vereinbarte Bezeichnungen #
# Tafel_Namen : ENTFERNUNG, AUFSATZ, FLUGZEIT, -- obligatorisch #
# VORHALT -- projektspezifisch #
# Param_Namen : DELTA_V0, LUFTTEMP, LUFTDRUCK, #
# LAENGSWIND, QUERWIND, #
# PULVERTEMP -- Korrektur-Parameter #
# #
###########################################################################
# Aenderung/Stand: 27.06.2024 - 07:04
Schuss_Tafel =
{
Munition = "60_mm_Splitter"
Version = "60_mm_Splitter_Lad4"
Muni_Parameter = { Kaliber = 60.0 Masse = 1.8 V0 = 200.0 }
Std_Parameter = { DELTA_V0 = 0.0
LUFTTEMP = 15.0
LUFTDRUCK = 1013.25
LAENGSWIND= 0.0
QUERWIND = 0.0
PULVERTEMP= 21.1 }
Entfernung_Range= { Min = 100.0 Max = 17700.0 Delta = 100.0 Scheitel = 17785.0 }
Ballistik = "Parabel"
###########################################################################
Standard_Tafel =
{
Spaltengruppe =
{ Belegung = { AUFSATZ = (2) [-]
VORHALT = (3) [-]
FLUGZEIT = (4)
DELTA_RGE = (5) [-]
DELTA_ELEV = (6)
FORK = (7) [-]
DRIFT = (8) [-]
}
Zeilenlaenge = 4
Datenblock =
{
#
# RGE ELEV TOF DELTA DELTA FORK BEARING-CORR. RANGE-CORR.
# ENTF AUFSATZ VORHALT FLUGZEIT RGE ELEV DRIFT CW DEC INC
# [m] [mil] [mil] [sec] [mil] [m] [mil] [mil] [mil] [m] [m]
#
260 1510 0 17,0
280 1462 0 16,0
300 1413 0 15,0
320 1362 0 14,0
340 1249 0 13,0
360 1185 0 12,0
380 1110 0 11,0
400 1014 0 10,0
}
} Ende Spaltengruppe
} Ende Standard_Tafel
} Ende Schuss_Tafel
@@ -0,0 +1,81 @@
###########################################################################
# #
# Projekt:File "Moerser-60mm-Lad5.sus" zur Munition "60_mm_Splitter" #
# #
# Bei der Auspraegung des Ballistik-Moduls vereinbarte Bezeichnungen #
# Tafel_Namen : ENTFERNUNG, AUFSATZ, FLUGZEIT, -- obligatorisch #
# VORHALT -- projektspezifisch #
# Param_Namen : DELTA_V0, LUFTTEMP, LUFTDRUCK, #
# LAENGSWIND, QUERWIND, #
# PULVERTEMP -- Korrektur-Parameter #
# #
###########################################################################
# Aenderung/Stand: 27.06.2024 - 07:04
Schuss_Tafel =
{
Munition = "60_mm_Splitter"
Version = "60_mm_Splitter_Lad5"
Muni_Parameter = { Kaliber = 60.0 Masse = 1.8 V0 = 200.0 }
Std_Parameter = { DELTA_V0 = 0.0
LUFTTEMP = 15.0
LUFTDRUCK = 1013.25
LAENGSWIND= 0.0
QUERWIND = 0.0
PULVERTEMP= 21.1 }
Entfernung_Range= { Min = 100.0 Max = 17700.0 Delta = 100.0 Scheitel = 17785.0 }
Ballistik = "Parabel"
###########################################################################
Standard_Tafel =
{
Spaltengruppe =
{ Belegung = { AUFSATZ = (2) [-]
VORHALT = (3) [-]
FLUGZEIT = (4)
DELTA_RGE = (5) [-]
DELTA_ELEV = (6)
FORK = (7) [-]
DRIFT = (8) [-]
}
Zeilenlaenge = 4
Datenblock =
{
#
# RGE ELEV TOF DELTA DELTA FORK BEARING-CORR. RANGE-CORR.
# ENTF AUFSATZ VORHALT FLUGZEIT RGE ELEV DRIFT CW DEC INC
# [m] [mil] [mil] [sec] [mil] [m] [mil] [mil] [mil] [m] [m]
#
570 1324 0 42,5
585 1315 0 42,4
600 1307 0 42,3
615 1298 0 42,2
630 1290 0 42,1
645 1281 0 42,0
660 1272 0 41,8
675 1263 0 41,7
690 1254 0 41,6
705 1244 0 41,5
720 1235 0 41,3
735 1225 0 41,2
750 1215 0 41,1
765 1205 0 40,9
780 1195 0 40,7
795 1185 0 40,5
810 1174 0 40,3
825 1163 0 40,2
840 1152 0 40,0
855 1141 0 39,8
870 1129 0 39,6
885 1117 0 39,4
900 1105 0 39,1
915 1092 0 38,9
930 1078 0 38,6
946 1064 0 38,4
}
} Ende Spaltengruppe
} Ende Standard_Tafel
} Ende Schuss_Tafel
@@ -0,0 +1,82 @@
###########################################################################
# #
# Projekt:File "Moerser-60mm-Lad6.sus" zur Munition "60_mm_Splitter" #
# #
# Bei der Auspraegung des Ballistik-Moduls vereinbarte Bezeichnungen #
# Tafel_Namen : ENTFERNUNG, AUFSATZ, FLUGZEIT, -- obligatorisch #
# VORHALT -- projektspezifisch #
# Param_Namen : DELTA_V0, LUFTTEMP, LUFTDRUCK, #
# LAENGSWIND, QUERWIND, #
# PULVERTEMP -- Korrektur-Parameter #
# #
###########################################################################
# Aenderung/Stand: 27.06.2024 - 07:04
Schuss_Tafel =
{
Munition = "60_mm_Splitter"
Version = "60_mm_Splitter_Lad6"
Muni_Parameter = { Kaliber = 60.0 Masse = 1.8 V0 = 200.0 }
Std_Parameter = { DELTA_V0 = 0.0
LUFTTEMP = 15.0
LUFTDRUCK = 1013.25
LAENGSWIND= 0.0
QUERWIND = 0.0
PULVERTEMP= 21.1 }
Entfernung_Range= { Min = 100.0 Max = 17700.0 Delta = 100.0 Scheitel = 17785.0 }
Ballistik = "Parabel"
###########################################################################
Standard_Tafel =
{
Spaltengruppe =
{ Belegung = { AUFSATZ = (2) [-]
VORHALT = (3) [-]
FLUGZEIT = (4)
DELTA_RGE = (5) [-]
DELTA_ELEV = (6)
FORK = (7) [-]
DRIFT = (8) [-]
}
Zeilenlaenge = 4
Datenblock =
{
#
# RGE ELEV TOF DELTA DELTA FORK BEARING-CORR. RANGE-CORR.
# ENTF AUFSATZ VORHALT FLUGZEIT RGE ELEV DRIFT CW DEC INC
# [m] [mil] [mil] [sec] [mil] [m] [mil] [mil] [mil] [m] [m]
#
690 1303 0 45,2
705 1295 0 45,1
720 1287 0 45,0
735 1280 0 44,8
750 1272 0 44,7
765 1264 0 44,6
780 1255 0 44,5
795 1247 0 44,4
810 1239 0 44,3
825 1230 0 44,0
840 1221 0 43,9
855 1213 0 43,8
870 1204 0 43,6
885 1195 0 43,5
900 1185 0 43,3
915 1176 0 43,1
930 1166 0 43,0
945 1156 0 42,8
960 1146 0 42,6
975 1136 0 42,4
990 1125 0 42,2
1005 1114 0 42,0
1020 1103 0 41,8
1035 1091 0 41,6
1050 1079 0 41,3
1065 1067 0 41,0
1083 1054 0 40,7
}
} Ende Spaltengruppe
} Ende Standard_Tafel
} Ende Schuss_Tafel
@@ -0,0 +1,7 @@
Das Testprogramm läuft auf der Konsole und wird mit zssi_wi_Test gestartet.
Es werden willkürliche transparente Daten verschickt.
Der Klasse GeoPairing hab ich eine weitere Membervariable mit dem Namen m_konfigPath hinzugefügt, die beim Erstellen des
Objekts mit einem Konfigurationspfad gesetzt wird.
Die Munitionstypen unserer Zentrale sind im enum ammunitionType in zssiwi_service_base.hpp zu finden.
@@ -0,0 +1,166 @@
###########################################################################
# #
# Projekt TES : File "SMK-BE-RED-RED-PHOSPH-M1-M64Base-TableE.sus" #
# #
# Bei der Auspraegung des Ballistik-Moduls vereinbarte Bezeichnungen #
# Tafel_Namen : ENTFERNUNG, AUFSATZ, FLUGZEIT, -- obligatorisch #
# VORHALT -- projektspezifisch #
# Param_Namen : DELTA_V0, LUFTTEMP, LUFTDRUCK, #
# LAENGSWIND, QUERWIND, #
# PULVERTEMP -- Korrektur-Parameter #
# #
###########################################################################
# Aenderung/Stand: 09.07.14-07:52
Schuss_Tafel =
{
Munition = "SMK-BE-RED-PHOSPH-M1-M64Base"
Version = "SMK BE RED PHOSPH M1 M64 Base Table-E"
Muni_Parameter = { Kaliber = 155.0 Masse = 46.30 V0 = 912.0 }
Std_Parameter = { DELTA_V0 = 0.0
LUFTTEMP = 15.0
LUFTDRUCK = 1013.25
LAENGSWIND= 0.0
QUERWIND = 0.0
PULVERTEMP= 21.1 }
Entfernung_Range= { Min = 4200.0 Max = 11800.0 Delta = 200.0 Scheitel = 11850.0 }
Ballistik = "Parabel"
###########################################################################
Standard_Tafel =
{
Spaltengruppe =
{ Belegung = { AUFSATZ = (2) [-]
VORHALT = (3) [-]
FLUGZEIT = (4)
DELTA_RGE = (5) [-]
DELTA_ELEV = (6)
FORK = (7) [-]
DRIFT = (8) [-]
}
Zeilenlaenge = 8
Datenblock =
{
#
# RGE ELEV TOF DELTA DELTA FORK BEARING-CORR. RANGE-CORR.
# ENTF AUFSATZ VORHALT FLUGZEIT RGE ELEV DRIFT CW DEC INC
# [m] [mil] [mil] [sec] [mil] [m] [mil] [mil] [mil] [m] [m]
#
100 2.5 0 0.2 2.4 41 1 0.1 0 0.1 -0.1
200 4.9 0 0.4 2.5 41 1 0.3 0.01 0.2 -0.2
300 7.5 0 0.7 2.6 40 1 0.4 0.01 0.3 -0.3
400 10 0 0.9 2.6 40 1 0.5 0.02 0.4 -0.5
500 12.6 0 1.1 2.6 39 1 0.7 0.02 0.5 -0.6
600 15.2 0 1.4 2.6 39 1 0.8 0.03 0.6 -0.7
700 17.8 0 1.6 2.7 38 1 1 0.03 0.7 -0.8
800 20.5 0 1.8 2.7 38 1 1.1 0.04 0.9 -0.9
900 23.1 0 2.1 2.7 37 1 1.2 0.05 0.9 -1
1000 25.9 0 2.3 2.8 37 1 1.4 0.05 1 -1.1
1100 28.6 0 2.6 2.8 37 1 1.5 0.06 1.1 -1.2
1200 31.4 0 2.8 2.8 36 1 1.6 0.06 1.2 -1.3
1300 34.2 0 3.1 2.8 36 1 1.8 0.07 1.3 -1.4
1400 37.1 0 3.3 2.9 35 1 1.9 0.07 1.4 -1.5
1500 40 0 3.6 2.9 35 1 2.1 0.08 1.5 -1.6
1600 42.9 0 3.8 3 34 1 2.2 0.08 1.6 -1.7
1700 45.9 0 4.1 3 34 1 2.4 0.09 1.7 -1.8
1800 48.9 0 4.3 3 34 1 2.5 0.09 1.8 -1.9
1900 51.9 0 4.6 3 33 1 2.6 0.1 1.8 -2
2000 55 0 4.8 3.1 33 2 2.8 0.1 2 -2.1
2100 58.1 0 5.1 3.1 32 2 2.9 0.11 2.1 -2.2
2200 61.2 0 5.4 3.2 32 2 3.1 0.12 2.1 -2.3
2300 64.4 0 5.7 3.2 32 2 3.2 0.12 2.2 -2.4
2400 67.6 0 5.9 3.3 31 2 3.4 0.13 2.3 -2.4
2500 70.9 0 6.2 3.3 31 2 3.5 0.13 2.4 -2.5
2600 74.2 0 6.5 3.3 31 2 3.7 0.14 2.5 -2.6
2700 77.6 0 6.8 3.4 30 2 3.8 0.14 2.6 -2.7
2800 81 0 7 3.4 30 2 4 0.15 2.7 -2.8
2900 84.4 0 7.3 3.5 29 2 4.1 0.16 2.7 -2.9
3000 87.9 0 7.6 3.5 29 2 4.3 0.16 2.8 -3
3100 91.4 0 7.9 3.5 29 2 4.4 0.17 2.9 -3.1
3200 95 0 8.2 3.6 28 2 4.6 0.17 3 -3.2
3300 98.6 0 8.5 3.7 28 2 4.7 0.18 3 -3.3
3400 102.3 0 8.8 3.7 28 2 4.9 0.19 3.1 -3.3
3500 106 0 9.1 3.8 27 3 5.1 0.19 3.2 -3.4
3600 109.8 0 9.4 3.8 27 3 5.2 0.2 3.3 -3.5
3700 113.6 0 9.7 3.8 27 3 5.4 0.2 3.3 -3.5
3800 117.4 0 10 3.9 26 3 5.5 0.21 3.4 -3.6
3900 121.3 0 10.3 4 26 3 5.7 0.21 3.5 -3.7
4000 125.3 0 10.6 3.9 26 3 5.9 0.22 3.5 -3.8
4100 129.2 0 10.9 4 26 3 6 0.22 3.6 -3.8
4200 207.1 0 11.3 2.4 25 3 6.2 0.23 3.6 -3.9
4400 211.9 0 11.9 2.8 25 3 6.5 0.24 3.7 -4.0
4600 217.4 0 12.5 2.9 24 3 6.8 0.25 3.8 -4.1
4800 223.2 0 13.2 3.1 24 4 7.2 0.26 3.9 -4.2
5000 229.3 0 13.8 3.2 23 4 7.5 0.27 4.0 -4.3
5200 235.8 0 14.5 3.5 23 4 7.8 0.28 4.1 -4.4
5400 242.7 0 15.2 3.7 23 4 8.1 0.29 4.2 -4.5
5600 250.0 0 15.8 3.8 22 4 8.4 0.30 4.3 -4.6
5800 257.5 0 16.5 3.9 22 5 8.8 0.30 4.4 -4.7
6000 265.3 0 17.2 4.1 21 5 9.1 0.31 4.5 -4.8
6200 273.5 0 17.9 4.3 21 5 9.4 0.32 4.6 -4.9
6400 282.0 0 18.6 4.3 21 5 9.7 0.33 4.6 -5.0
6600 290.6 0 19.3 4.5 20 6 10.0 0.34 4.7 -5.0
6800 299.6 0 20.1 4.6 20 6 10.3 0.34 4.8 -5.1
7000 308.8 0 20.8 4.8 19 6 10.5 0.35 4.8 -5.2
7200 318.4 0 21.5 4.9 19 7 10.8 0.36 4.9 -5.3
7400 328.2 0 22.3 5.0 19 7 11.1 0.37 5.0 -5.3
7600 338.3 0 23.0 5.2 18 7 11.4 0.37 5.1 -5.4
7800 348.7 0 23.8 5.4 18 7 11.6 0.38 5.1 -5.5
8000 359.5 0 24.6 5.6 18 8 11.9 0.39 5.2 -5.6
8200 370.6 0 25.4 5.8 17 8 12.2 0.40 5.3 -5.7
8400 382.1 0 26.2 5.8 17 9 12.4 0.40 5.4 -5.7
8600 393.8 0 27.1 6.1 16 9 12.7 0.41 5.4 -5.8
8800 406.0 0 27.9 6.3 16 9 12.9 0.42 5.5 -5.9
9000 418.6 0 28.8 6.6 16 10 13.2 0.43 5.6 -6.0
9200 431.8 0 29.7 6.8 15 11 13.4 0.43 5.7 -6.0
9400 445.5 0 30.6 6.9 15 11 13.7 0.44 5.7 -6.1
9600 459.3 0 31.5 7.5 14 12 13.9 0.45 5.8 -6.2
9800 474.3 0 32.5 7.8 13 13 14.1 0.46 5.9 -6.3
10000 490.0 0 33.5 7.9 13 13 14.4 0.47 6.0 -6.3
10200 505.8 0 34.5 8.7 13 14 14.6 0.48 6.1 -6.5
10400 523.3 0 35.6 9.2 12 15 14.9 0.48 6.2 -6.6
10600 541.7 0 36.8 9.5 12 16 15.2 0.49 6.3 -6.6
10800 560.8 0 37.9 10.8 11 17 15.4 0.50 6.3 -6.7
11000 582.4 0 39.2 11.9 10 19 15.8 0.51 6.4 -6.8
11200 606.1 0 40.5 13.5 9 21 16.1 0.53 6.5 -6.9
11400 633.1 0 42.0 15.6 8 24 16.6 0.54 6.6 -7.0
11600 664.3 0 43.6 19.7 8 27 17.1 0.55 6.7 -7.1
11800 703.7 0 45.4 48.2 6 34 17.8 0.57 6.8 -7.2
11850 800.0 0 50.0 51.4 5 35 20.0 0.65 7.0 -7.4
11800 902.8 0 60.5 19.9 6 35 33.9 0.76 7.0 -7.4
11600 942.6 0 61.9 15.4 8 28 37.4 0.79 6.9 -7.3
11400 973.4 0 63.0 13.0 9 24 40.9 0.82 6.8 -7.2
11200 999.4 0 64.0 11.4 10 22 44.3 0.84 6.7 -7.1
11000 1022.1 0 64.8 10.3 11 20 47.7 0.87 6.6 -7.0
10800 1042.7 0 65.6 9.5 11 18 51.2 0.89 6.5 -6.9
10600 1061.6 0 66.3 8.9 12 17 54.8 0.92 0.9 -6.8
10400 1079.3 0 66.9 8.2 13 16 58.4 0.95 1.0 -6.7
10200 1095.8 0 67.5 7.8 14 15 62.1 0.97 1.0 -6.6
10000 1111.4 0 68.1 7.5 14 14 65.9 1.00 1.0 -6.5
9800 1126.3 0 68.6 7.2 15 13 69.8 1.03 1.0 -6.3
9600 1140.6 0 69.1 6.8 15 13 73.7 1.06 1.1 -6.2
9400 1154.2 0 69.5 6.6 16 12 77.8 1.09 1.1 -6.1
9200 1167.4 0 70.0 6.3 17 12 81.9 1.12 1.1 -6.0
9000 1180.0 0 70.4 6.1 17 11 86.0 1.15 1.2 -5.9
8800 1192.3 0 70.8 5.9 18 11 90.2 1.18 1.2 -5.7
8600 1204.2 0 71.1 5.7 18 10 94.5 1.22 1.2 -5.6
8400 1215.6 0 71.5 5.6 19 10 98.6 1.26 1.3 -5.5
8200 1226.8 0 71.8 5.5 19 10 102.7 1.30 1.3 -5.3
8000 1237.7 0 72.1 5.3 20 9 106.7 1.34 1.3 -5.2
7800 1248.2 0 72.5 5.2 20 9 110.5 1.39 4.8 -5.1
7600 1258.6 0 72.7 5.0 21 9 113.9 1.43 4.7 -5.0
7400 1268.5 0 73.0 4.9 21 8 117.0 1.49 4.5 -4.9
7200 1278.3 0 73.3 4.8 22 8 120.5 1.54 4.5 -4.7
7000 1288.0 0 73.6 4.8 22 8 124.1 1.60 4.3 -4.6
6800 1297.6 0 73.8 4.8 21 8 127.2 1.66 4.2 -4.5
6600 1307.2 0 74.0 4.9 21 8 130.1 1.72 4.1 -4.3
6400 1317.0 0 74.2 4.8 21 8 132.6 1.78 4.0 -4.2
6200 1326.6 0 74.4 4.8 22 8 134.7 1.85 3.8 -4.1
6000 1336.2 0 74.6 -668.1 22 7 136.8 1.92 3.7 -4.0
}
} Ende Spaltengruppe
} Ende Standard_Tafel
} Ende Schuss_Tafel
@@ -0,0 +1,208 @@
###########################################################################
# #
# Projekt TES : File "SMK-BE-RED-RED-PHOSPH-M1-M64Incr3-TableE.sus" #
# #
# Bei der Auspraegung des Ballistik-Moduls vereinbarte Bezeichnungen #
# Tafel_Namen : ENTFERNUNG, AUFSATZ, FLUGZEIT, -- obligatorisch #
# VORHALT -- projektspezifisch #
# Param_Namen : DELTA_V0, LUFTTEMP, LUFTDRUCK, #
# LAENGSWIND, QUERWIND, #
# PULVERTEMP -- Korrektur-Parameter #
# #
###########################################################################
# Aenderung/Stand: 09.07.14-07:52
Schuss_Tafel =
{
Munition = "SMK-BE-RED-PHOSPH-M1-M64Incr3"
Version = "SMK BE RED PHOSPH M1 M64 Incr3 Table-E"
Muni_Parameter = { Kaliber = 155.0 Masse = 46.30 V0 = 912.0 }
Std_Parameter = { DELTA_V0 = 0.0
LUFTTEMP = 15.0
LUFTDRUCK = 1013.25
LAENGSWIND= 0.0
QUERWIND = 0.0
PULVERTEMP= 21.1 }
Entfernung_Range= { Min = 5600.0 Max = 17400.0 Delta = 200.0 Scheitel = 17450.0 }
Ballistik = "Parabel"
###########################################################################
Standard_Tafel =
{
Spaltengruppe =
{ Belegung = { AUFSATZ = (2) [-]
VORHALT = (3) [-]
FLUGZEIT = (4)
DELTA_RGE = (5) [-]
DELTA_ELEV = (6)
FORK = (7) [-]
DRIFT = (8) [-]
}
Zeilenlaenge = 8
Datenblock =
{
#
# RGE ELEV TOF DELTA DELTA FORK BEARING-CORR. RANGE-CORR.
# ENTF AUFSATZ VORHALT FLUGZEIT RGE ELEV DRIFT CW DEC INC
# [m] [mil] [mil] [sec] [mil] [m] [mil] [mil] [mil] [m] [m]
#
100 1.3 0 0.2 1.4 76 1 0.1 0.00 0.1 -0.2
200 2.7 0 0.3 1.4 75 1 0.2 0.01 0.2 -0.5
300 4.0 0 0.5 1.4 74 1 0.3 0.01 0.4 -0.8
400 5.4 0 0.7 1.3 74 1 0.4 0.01 0.5 -1.0
500 6.7 0 0.8 1.4 73 1 0.5 0.01 0.6 -1.2
600 8.1 0 1.0 1.4 72 1 0.6 0.02 0.7 -1.5
700 9.5 0 1.2 1.4 72 1 0.7 0.02 0.9 -1.8
800 10.9 0 1.3 1.4 71 1 0.8 0.02 1.0 -2.0
900 12.4 0 1.5 1.5 70 1 0.9 0.03 1.1 -2.2
1000 13.8 0 1.7 1.5 70 1 1.0 0.03 1.2 -2.5
1100 15.3 0 1.9 1.5 69 1 1.1 0.03 1.4 -2.7
1200 16.7 0 2.0 1.5 68 1 1.2 0.03 1.4 -2.9
1300 18.2 0 2.2 1.5 68 1 1.3 0.04 1.6 -3.2
1400 19.7 0 2.4 1.5 67 1 1.4 0.04 1.7 -3.4
1500 21.2 0 2.6 1.5 67 1 1.6 0.04 1.8 -3.6
1600 22.7 0 2.8 1.5 66 1 1.7 0.05 1.9 -3.9
1700 24.3 0 3.0 1.5 65 1 1.8 0.05 2.0 -4.1
1800 25.8 0 3.1 1.6 65 1 1.9 0.05 2.1 -4.3
1900 27.4 0 3.3 1.6 64 1 2.0 0.06 2.3 -4.6
2000 28.9 0 3.5 1.6 64 1 2.1 0.06 2.4 -4.8
2100 30.5 0 3.7 1.6 63 1 2.2 0.06 2.5 -5.0
2200 32.1 0 3.9 1.6 62 1 2.3 0.07 2.6 -5.2
2300 33.8 0 4.1 1.7 62 1 2.4 0.07 2.7 -5.4
2400 35.4 0 4.3 1.6 61 1 2.5 0.07 2.8 -5.6
2500 37.1 0 4.5 1.6 61 1 2.6 0.08 3.0 -5.9
2600 38.7 0 4.7 1.7 60 1 2.7 0.08 3.1 -6.1
2700 40.4 0 4.9 1.7 59 1 2.8 0.08 3.2 -6.3
2800 42.1 0 5.1 1.8 59 1 2.9 0.09 3.3 -6.5
2900 43.9 0 5.3 1.8 58 1 3.0 0.09 3.4 -6.7
3000 45.6 0 5.5 1.7 58 1 3.2 0.09 3.5 -6.9
3100 47.3 0 5.7 1.8 57 1 3.3 0.10 3.6 -7.2
3200 49.1 0 5.9 1.8 57 2 3.4 0.10 3.7 -7.4
3300 50.9 0 6.1 1.8 56 2 3.5 0.10 3.8 -7.6
3400 52.7 0 6.3 1.8 55 2 3.6 0.11 3.9 -7.8
3500 54.6 0 6.5 1.9 55 2 3.7 0.11 4.0 -7.9
3600 56.4 0 6.7 1.9 54 2 3.8 0.11 4.0 -8.2
3700 58.3 0 6.9 1.8 54 2 3.9 0.12 4.2 -8.4
3800 60.1 0 7.1 1.9 53 2 4.0 0.12 4.2 -8.6
3900 62.1 0 7.3 2.0 53 2 4.1 0.12 4.4 -8.8
4000 64.0 0 7.5 1.9 52 2 4.2 0.13 4.4 -8.9
4100 65.9 0 7.8 2.0 52 2 4.4 0.13 4.6 -9.1
4200 67.9 0 8.0 2.0 51 2 4.5 0.13 4.6 -9.3
4300 69.9 0 8.2 2.0 51 2 4.6 0.14 4.7 -9.5
4400 71.9 0 8.4 2.0 50 2 4.7 0.14 4.8 -9.6
4500 73.9 0 8.6 2.0 50 2 4.8 0.15 4.9 -9.9
4600 75.9 0 8.9 2.0 49 2 4.9 0.15 5.0 -10.0
4700 78.0 0 9.1 2.1 49 2 5.0 0.15 5.1 -10.3
4800 80.1 0 9.3 2.1 48 2 5.1 0.16 5.2 -10.4
4900 82.2 0 9.6 2.2 48 2 5.2 0.16 5.3 -10.6
5000 84.4 0 9.8 2.2 47 2 5.4 0.16 5.4 -10.7
5100 86.5 0 10.0 2.1 47 2 5.5 0.17 5.5 -11.0
5200 88.7 0 10.3 2.2 46 2 5.6 0.17 5.6 -11.1
5300 90.9 0 10.5 2.2 46 2 5.7 0.18 5.6 -11.3
5400 93.1 0 10.7 2.3 45 2 5.8 0.18 5.7 -11.4
5600 152.7 0 11.2 2.3 44 2 6.0 0.19 5.9 -11.7
5800 155.5 0 11.7 2.3 43 3 6.3 0.20 6.1 -12.0
6000 158.6 0 12.2 2.4 42 3 6.5 0.20 6.2 -12.3
6200 161.9 0 12.7 2.5 41 3 6.7 0.21 6.4 -12.7
6400 165.3 0 13.3 2.5 40 3 6.9 0.22 6.5 -13.0
6600 169.0 0 13.8 2.6 40 3 7.2 0.23 6.7 -13.3
6800 172.8 0 14.3 2.6 39 3 7.4 0.24 6.9 -13.7
7000 176.8 0 14.9 2.7 38 3 7.6 0.25 7.0 -14.0
7200 181.0 0 15.4 2.8 37 3 7.9 0.26 7.2 -14.2
7400 185.5 0 16.0 2.8 36 4 8.1 0.26 7.3 -14.5
7600 190.0 0 16.6 2.8 35 4 8.3 0.27 7.5 -14.8
7800 194.9 0 17.1 3.0 34 4 8.5 0.28 7.6 -15.1
8000 199.9 0 17.7 3.0 34 4 8.8 0.29 7.7 -15.3
8200 205.1 0 18.3 3.1 33 4 9.0 0.30 7.9 -15.7
8400 210.5 0 19.0 3.2 32 4 9.2 0.31 8.0 -16.0
8600 216.1 0 19.6 3.3 31 5 9.5 0.32 8.2 -16.2
8800 221.8 0 20.2 3.3 31 5 9.7 0.33 8.3 -16.4
9000 227.8 0 20.8 3.4 30 5 9.9 0.34 8.4 -16.7
9200 234.0 0 21.5 3.5 29 5 10.1 0.35 8.5 -17.0
9400 240.3 0 22.1 3.5 29 5 10.4 0.36 8.6 -17.2
9600 246.8 0 22.8 3.6 28 6 10.6 0.36 8.8 -17.4
9800 253.4 0 23.4 3.7 28 6 10.8 0.37 8.9 -17.6
10000 260.4 0 24.1 3.8 27 6 11.0 0.38 9.0 -17.8
10200 267.4 0 24.8 3.8 27 6 11.3 0.39 9.1 -18.0
10400 274.6 0 25.5 3.9 26 7 11.5 0.40 9.2 -18.2
10600 282.0 0 26.2 4.0 26 7 11.7 0.41 9.3 -18.4
10800 289.6 0 26.9 4.1 25 7 11.9 0.41 9.4 -18.7
11000 297.3 0 27.6 4.1 25 7 12.1 0.42 9.5 -18.8
11200 305.3 0 28.3 4.3 24 8 12.3 0.43 9.6 -19.0
11400 313.5 0 29.0 4.4 24 8 12.5 0.44 9.7 -19.3
11600 321.9 0 29.7 4.4 23 8 12.7 0.45 9.8 -19.4
11800 330.4 0 30.5 4.5 23 9 12.8 0.45 9.9 -19.7
12000 339.1 0 31.2 4.5 23 9 13.0 0.46 10.0 -19.7
12200 347.9 0 32.0 4.7 22 9 13.2 0.47 10.0 -19.9
12400 357.1 0 32.7 4.8 21 10 13.3 0.48 10.2 -20.1
12600 366.5 0 33.5 4.9 21 10 13.5 0.48 10.2 -20.3
12800 376.1 0 34.3 4.9 21 10 13.7 0.49 10.3 -20.5
13000 385.8 0 35.1 5.1 20 11 13.8 0.50 10.4 -20.7
13200 395.9 0 35.9 5.2 20 11 14.0 0.51 10.5 -20.8
13400 406.2 0 36.7 5.3 19 12 14.1 0.51 10.6 -21.0
13600 416.6 0 37.6 5.4 19 12 14.2 0.52 10.7 -21.1
13800 427.3 0 38.4 5.5 19 12 14.4 0.53 10.7 -21.3
14000 438.4 0 39.3 5.7 18 13 14.5 0.54 10.8 -21.5
14200 449.6 0 40.2 5.8 18 14 14.6 0.54 10.9 -21.7
14400 461.4 0 41.1 6.1 17 14 14.7 0.55 11.0 -21.8
14600 473.7 0 42.0 6.2 17 15 14.9 0.56 11.1 -22.0
14800 485.9 0 42.9 6.2 17 15 15.0 0.56 11.2 -22.1
15000 498.6 0 43.9 6.5 16 16 15.1 0.57 11.3 -22.3
15200 512.1 0 44.9 6.8 15 17 15.2 0.58 11.3 -22.4
15400 525.8 0 45.9 6.8 15 17 15.4 0.59 11.4 -22.7
15600 539.8 0 46.9 7.2 15 18 15.5 0.59 11.5 -22.8
15800 554.6 0 48.0 7.4 14 19 15.7 0.60 11.6 -23.0
16000 570.2 0 49.1 7.8 13 20 15.9 0.61 11.6 -23.1
16200 586.7 0 50.2 8.2 13 22 16.0 0.62 11.8 -23.4
16400 604.4 0 51.4 8.7 12 24 16.3 0.62 12.0 -23.8
16600 623.6 0 52.7 9.4 11 26 16.6 0.63 12.1 -24.0
16800 644.6 0 54.1 10.2 10 28 16.9 0.64 12.3 -24.3
17000 668.4 0 55.6 11.3 9 32 17.3 0.65 12.4 -24.6
17200 696.2 0 57.3 13.0 8 37 17.9 0.67 12.6 -25.0
17400 732.4 0 59.2 15.8 7 45 18.7 0.68 12.8 -25.4
17450 850.0 0 65.0 15.9 6 47 25.0 0.75 13.5 -26.7
17400 894.6 0 74.2 15.1 7 45 34.5 0.84 13.4 -26.6
17200 929.1 0 75.7 12.0 9 36 38.2 0.87 13.3 -26.5
17000 955.4 0 77.0 10.3 10 31 41.7 0.89 13.2 -26.3
16800 977.3 0 78.1 9.1 11 27 45.0 0.91 13.1 -26.1
16600 996.5 0 79.1 8.3 13 25 48.4 0.93 13.0 -25.9
16400 1013.7 0 79.9 7.6 14 23 51.7 0.95 12.8 -25.7
16200 1029.4 0 80.7 7.1 15 21 55.1 0.97 12.7 -25.4
16000 1044.1 0 81.5 6.7 15 20 58.5 0.99 12.6 -25.1
15800 1057.7 0 82.1 6.3 16 18 62.0 1.01 12.5 -24.9
15600 1070.6 0 82.8 5.9 17 17 65.4 1.03 12.4 -24.7
15400 1082.7 0 83.4 5.8 18 17 68.9 1.05 12.2 -24.4
15200 1094.3 0 83.9 5.5 19 16 72.5 1.07 12.1 -24.2
15000 1105.5 0 84.5 5.3 19 15 76.1 1.09 12.0 -23.9
14800 1116.2 0 85.0 5.1 20 14 79.7 1.11 11.8 -23.6
14600 1126.4 0 85.5 4.8 21 14 83.4 1.13 11.6 -23.4
14400 1136.3 0 85.9 4.7 22 13 87.1 1.15 11.5 -23.1
14200 1145.8 0 86.3 4.6 22 13 90.9 1.17 11.4 -22.8
14000 1155.1 0 86.8 4.5 23 12 94.6 1.20 11.3 -22.5
13800 1164.1 0 87.2 4.3 24 12 98.5 1.22 11.1 -22.3
13600 1172.8 0 87.5 4.2 24 12 102.3 1.24 11.0 -22.0
13400 1181.4 0 87.9 4.2 25 11 106.2 1.27 10.8 -21.7
13200 1189.8 0 88.3 4.0 25 11 110.1 1.29 10.7 -21.3
13000 1197.9 0 88.6 4.0 26 11 113.9 1.32 10.5 -21.0
12800 1265.9 0 88.9 3.8 26 10 117.7 1.35 10.3 -20.7
12600 1213.7 0 89.3 3.8 27 10 121.5 1.37 10.2 -20.4
12400 1221.3 0 89.6 3.7 28 10 125.2 1.40 10.0 -20.1
12200 1228.8 0 89.9 3.7 28 10 128.9 1.43 9.8 -19.7
12000 1236.1 0 90.2 3.5 29 9 132.4 1.46 9.7 -19.5
11800 1243.2 0 90.5 3.5 29 9 135.7 1.49 9.5 -19.1
11600 1250.2 0 90.7 3.4 30 9 138.7 1.53 9.3 -18.8
11400 1257.0 0 91.0 3.4 30 9 141.7 1.56 9.2 -18.4
11200 1263.8 0 91.2 3.3 31 9 145.0 1.60 9.0 -18.1
11000 1270.5 0 91.5 3.3 31 8 148.5 1.64 8.9 -17.8
10800 1277.0 0 91.7 3.3 31 8 151.9 1.68 8.7 -17.5
10600 1283.6 0 92.0 3.3 31 8 155.2 1.72 8.6 -17.3
10400 1290.2 0 92.2 3.3 31 8 158.3 1.76 8.5 -17.0
10200 1296.8 0 92.4 3.3 31 8 161.0 1.80 8.4 -16.7
10000 1303.4 0 92.6 3.2 31 8 163.5 1.84 8.2 -16.4
}
} Ende Spaltengruppe
} Ende Standard_Tafel
} Ende Schuss_Tafel
@@ -0,0 +1,259 @@
###########################################################################
# #
# Projekt TES : File "SMK-BE-RED-RED-PHOSPH-M1-M64Incr4-TableE.sus" #
# #
# Bei der Auspraegung des Ballistik-Moduls vereinbarte Bezeichnungen #
# Tafel_Namen : ENTFERNUNG, AUFSATZ, FLUGZEIT, -- obligatorisch #
# VORHALT -- projektspezifisch #
# Param_Namen : DELTA_V0, LUFTTEMP, LUFTDRUCK, #
# LAENGSWIND, QUERWIND, #
# PULVERTEMP -- Korrektur-Parameter #
# #
###########################################################################
# Aenderung/Stand: 09.07.14-07:52
Schuss_Tafel =
{
Munition = "SMK-BE-RED-PHOSPH-M1-M64Incr4"
Version = "SMK BE RED PHOSPH M1 M64 Incr4 Table-E"
Muni_Parameter = { Kaliber = 155.0 Masse = 46.30 V0 = 912.0 }
Std_Parameter = { DELTA_V0 = 0.0
LUFTTEMP = 15.0
LUFTDRUCK = 1013.25
LAENGSWIND= 0.0
QUERWIND = 0.0
PULVERTEMP= 21.1 }
Entfernung_Range= { Min = 7800.0 Max = 23800.0 Delta = 200.0 Scheitel = 23850.0 }
Ballistik = "Parabel"
###########################################################################
Standard_Tafel =
{
Spaltengruppe =
{ Belegung = { AUFSATZ = (2) [-]
VORHALT = (3) [-]
FLUGZEIT = (4)
DELTA_RGE = (5) [-]
DELTA_ELEV = (6)
FORK = (7) [-]
DRIFT = (8) [-]
}
Zeilenlaenge = 8
Datenblock =
{
#
# RGE ELEV TOF DELTA DELTA FORK BEARING-CORR. RANGE-CORR.
# ENTF AUFSATZ VORHALT FLUGZEIT RGE ELEV DRIFT CW DEC INC
# [m] [mil] [mil] [sec] [mil] [m] [mil] [mil] [mil] [m] [m]
#
100 0.8 0 0.1 0.9 119 1 0.1 0.00 0.1 -0.3
200 1.7 0 0.3 0.9 118 1 0.1 0.00 0.3 -0.4
300 2.5 0 0.4 0.9 117 1 0.2 0.01 0.5 -0.7
400 3.4 0 0.5 0.9 116 1 0.2 0.01 0.7 -1.0
500 4.3 0 0.7 0.8 115 1 0.3 0.01 0.8 -1.3
600 5.1 0 0.8 0.8 114 1 0.3 0.01 1.0 -1.4
700 6.0 0 0.9 0.9 114 1 0.4 0.01 1.2 -1.7
800 6.9 0 1.1 0.9 113 1 0.5 0.02 1.3 -2.0
900 7.8 0 1.2 0.9 112 1 0.5 0.02 1.5 -2.2
1000 8.7 0 1.3 0.9 111 1 0.6 0.02 1.6 -2.5
1100 9.6 0 1.5 0.9 110 1 0.6 0.02 1.8 -2.8
1200 10.5 0 1.6 0.9 109 1 0.7 0.02 1.9 -3.0
1300 11.5 0 1.8 0.9 108 1 0.8 0.03 2.1 -3.1
1400 12.4 0 1.9 0.9 108 1 0.8 0.03 2.3 -3.4
1500 13.3 0 2.0 1.0 107 1 0.9 0.03 2.4 -3.6
1600 14.3 0 2.2 0.9 106 1 0.9 0.03 2.5 -3.8
1700 15.2 0 2.3 1.0 105 1 1.0 0.03 2.6 -4.0
1800 16.2 0 2.5 1.0 104 1 1.1 0.04 2.7 -4.1
1900 17.2 0 2.6 0.9 103 1 1.1 0.04 2.9 -4.4
2000 18.1 0 2.8 0.9 102 1 1.2 0.04 3.0 -4.6
2100 19.1 0 2.9 1.0 102 1 1.2 0.04 3.2 -4.8
2200 20.1 0 3.1 1.0 101 1 1.3 0.05 3.3 -4.9
2300 21.1 0 3.2 1.0 100 1 1.4 0.05 3.4 -5.1
2400 22.1 0 3.4 1.0 99 1 1.4 0.05 3.5 -5.3
2500 23.1 0 3.5 1.1 98 1 1.5 0.05 3.7 -5.6
2600 24.2 0 3.7 1.1 98 1 1.6 0.05 3.8 -5.8
2700 25.2 0 3.8 1.0 97 1 1.6 0.06 4.0 -5.9
2800 26.2 0 4.0 1.0 96 1 1.7 0.06 4.1 -6.1
2900 27.3 0 4.1 1.1 95 1 1.8 0.06 4.2 -6.3
3000 28.4 0 4.3 1.1 94 1 1.8 0.06 4.4 -6.6
3100 29.4 0 4.4 1.1 94 1 1.9 0.07 4.5 -6.7
3200 30.5 0 4.6 1.1 93 1 1.9 0.07 4.6 -6.9
3300 31.6 0 4.8 1.1 92 1 2.0 0.07 4.7 -7.1
3400 32.7 0 4.9 1.1 91 1 2.1 0.07 4.9 -7.3
3500 33.8 0 5.1 1.1 91 1 2.1 0.07 5.0 -7.5
3600 34.9 0 5.2 1.1 90 1 2.2 0.08 5.2 -7.6
3700 36.0 0 5.4 1.1 89 1 2.3 0.08 5.3 -7.8
3800 37.2 0 5.6 1.1 88 1 2.3 0.08 5.4 -8.1
3900 38.3 0 5.7 1.1 87 1 2.4 0.08 5.6 -8.3
4000 39.5 0 5.9 1.1 87 1 2.5 0.09 5.7 -8.5
4100 40.6 0 6.1 1.1 86 1 2.6 0.09 5.8 -8.6
4200 41.8 0 6.2 1.2 85 1 2.6 0.09 6.0 -8.8
4300 43.0 0 6.4 1.2 85 1 2.7 0.09 6.1 -9.0
4400 44.2 0 6.6 1.2 84 2 2.8 0.10 6.1 -9.2
4500 45.4 0 6.7 1.2 83 2 2.8 0.10 6.3 -9.4
4600 46.6 0 6.9 1.2 82 2 2.9 0.10 6.4 -9.5
4700 47.8 0 7.1 1.3 82 2 3.0 0.10 6.6 -9.7
4800 49.1 0 7.3 1.3 81 2 3.0 0.11 6.6 -9.9
4900 50.3 0 7.4 1.3 80 2 3.1 0.11 6.7 -10.1
5000 51.6 0 7.6 1.3 80 2 3.2 0.11 6.8 -10.3
5100 52.9 0 7.8 1.3 79 2 3.3 0.11 6.9 -10.4
5200 54.1 0 8.0 1.3 78 2 3.3 0.12 7.1 -10.6
5300 55.4 0 8.1 1.3 77 2 3.4 0.12 7.2 -10.8
5400 56.7 0 8.3 1.3 77 2 3.5 0.12 7.3 -10.9
5500 58.1 0 8.5 1.4 76 2 3.5 0.12 7.4 -11.1
5600 59.4 0 8.7 1.3 75 2 3.6 0.13 7.5 -11.2
5700 60.7 0 8.9 1.3 75 2 3.7 0.13 7.7 -11.4
5800 62.1 0 9.1 1.4 74 2 3.8 0.13 7.8 -11.6
5900 63.4 0 9.2 1.4 73 2 3.8 0.14 7.8 -11.7
6000 64.8 0 9.4 1.4 73 2 3.9 0.14 8.0 -11.9
6100 66.2 0 9.6 1.4 72 2 4.0 0.14 8.1 -12.1
6200 67.6 0 9.8 1.4 71 2 4.1 0.14 8.2 -12.2
6300 69.0 0 10.0 1.5 71 2 4.1 0.15 8.3 -12.4
6400 70.5 0 10.2 1.5 70 2 4.2 0.15 8.5 -12.6
6500 71.9 0 10.4 1.5 70 2 4.3 0.15 8.5 -12.7
6600 73.4 0 10.6 1.5 69 2 4.4 0.15 8.6 -12.9
6700 74.8 0 10.8 1.5 68 2 4.4 0.16 8.8 -13.0
6800 76.3 0 11.0 1.5 68 2 4.5 0.16 8.9 -13.1
6900 77.8 0 11.2 1.5 67 2 4.6 0.16 8.9 -13.3
7000 79.3 0 11.4 1.5 66 2 4.7 0.17 9.1 -13.4
7100 80.8 0 11.6 1.5 66 2 4.7 0.17 9.2 -13.6
7200 82.4 0 11.8 1.5 65 2 4.8 0.17 9.2 -13.8
7300 83.9 0 12.0 1.5 65 2 4.9 0.17 9.4 -13.9
7400 85.5 0 12.2 1.6 64 2 5.0 0.18 9.5 -14.0
7500 87.1 0 12.4 1.6 63 2 5.1 0.18 9.5 -14.2
7600 88.7 0 12.6 1.6 63 2 5.1 0.18 9.7 -14.4
7700 90.3 0 12.8 1.6 62 2 5.2 0.19 9.7 -14.5
7800 131.20 0 13.1 1.2 62 2 5.3 0.19 9.9 -14.7
8000 133.50 0 13.5 1.3 60 3 5.4 0.20 10.0 -14.9
8200 136.00 0 13.9 1.3 59 3 5.6 0.20 10.3 -15.2
8400 138.60 0 14.4 1.3 58 3 5.8 0.21 10.5 -15.5
8600 141.20 0 14.8 1.4 57 3 5.9 0.21 10.6 -15.7
8800 144.00 0 15.3 1.4 56 3 6.1 0.22 10.8 -16.0
9000 146.80 0 15.7 1.5 55 3 6.3 0.23 10.9 -16.3
9200 149.80 0 16.2 1.6 54 3 6.4 0.23 11.1 -16.6
9400 152.90 0 16.7 1.6 53 3 6.6 0.24 11.3 -16.8
9600 156.10 0 17.1 1.6 52 3 6.8 0.25 11.5 -17.1
9800 159.30 0 17.6 1.7 51 3 7.0 0.25 11.7 -17.4
10000 162.70 0 18.1 1.8 50 3 7.1 0.26 11.8 -17.5
10200 166.20 0 18.6 1.8 49 4 7.3 0.27 12.0 -17.8
10400 169.80 0 19.1 1.9 48 4 7.5 0.27 12.2 -18.1
10600 173.50 0 19.6 1.9 47 4 7.7 0.28 12.3 -18.4
10800 177.30 0 20.2 2.0 46 4 7.9 0.29 12.5 -18.5
11000 181.20 0 20.7 2.0 45 4 8.0 0.29 12.7 -18.8
11200 185.20 0 21.2 2.1 44 4 8.2 0.30 12.8 -19.1
11400 189.30 0 21.8 2.2 43 4 8.4 0.31 13.0 -19.3
11600 193.60 0 22.3 2.2 43 4 8.6 0.31 13.1 -19.5
11800 197.90 0 22.9 2.3 42 5 8.8 0.32 13.3 -19.7
12000 202.40 0 23.5 2.3 41 5 9.0 0.33 13.4 -19.9
12200 207.00 0 24.0 2.4 40 5 9.2 0.34 13.6 -20.2
12400 211.70 0 24.6 2.4 39 5 9.4 0.34 13.7 -20.3
12600 216.50 0 25.2 2.5 39 5 9.6 0.35 13.9 -20.6
12800 221.40 0 25.8 2.5 38 5 9.8 0.36 14.1 -20.9
13000 226.40 0 26.4 2.6 37 6 10.0 0.37 14.2 -21.1
13200 231.60 0 27.0 2.7 36 6 10.2 0.37 14.4 -21.3
13400 236.90 0 27.7 2.7 36 6 10.4 0.38 14.5 -21.5
13600 242.30 0 28.3 2.8 35 6 10.6 0.39 14.7 -21.7
13800 247.90 0 28.9 2.8 34 6 10.8 0.40 14.8 -21.9
14000 253.40 0 29.6 2.9 34 7 11.1 0.40 15.0 -22.1
14200 259.20 0 30.2 3.0 33 7 11.3 0.41 15.1 -22.4
14400 265.10 0 30.9 3.0 32 7 11.5 0.42 15.3 -22.7
14600 271.10 0 31.5 3.2 32 7 11.7 0.43 15.4 -22.9
14800 277.40 0 32.2 3.1 31 8 11.9 0.43 15.6 -23.0
15000 283.60 0 32.9 3.3 31 8 12.2 0.44 15.7 -23.3
15200 290.10 0 33.6 3.2 30 8 12.4 0.45 15.8 -23.6
15400 296.50 0 34.2 3.4 30 8 12.6 0.45 16.0 -23.8
15600 303.20 0 34.9 3.4 29 9 12.9 0.46 16.1 -23.9
15800 309.90 0 35.6 3.5 29 9 13.1 0.47 16.2 -24.1
16000 316.90 0 36.3 3.5 28 9 13.3 0.47 16.4 -24.4
16200 323.90 0 37.1 3.6 28 9 13.6 0.48 16.5 -24.6
16400 331.10 0 37.8 3.7 27 10 13.8 0.49 16.7 -24.7
16600 338.40 0 38.5 3.7 27 10 14.0 0.50 16.8 -25.0
16800 345.80 0 39.2 3.8 27 10 14.3 0.50 17.0 -25.2
17000 353.40 0 40.0 3.9 26 11 14.5 0.51 17.2 -25.5
17200 361.20 0 40.7 3.9 26 11 14.8 0.51 17.3 -25.6
17400 369.00 0 41.5 4.0 25 11 15.0 0.52 17.5 -25.8
17600 377.10 0 42.3 4.1 25 12 15.3 0.53 17.6 -26.1
17800 385.20 0 43.0 4.2 24 12 15.5 0.53 17.7 -26.3
18000 393.60 0 43.8 4.1 24 12 15.8 0.54 17.9 -26.5
18200 401.90 0 44.6 4.4 24 13 16.1 0.55 18.0 -26.7
18400 410.60 0 45.4 4.4 23 13 16.3 0.55 18.1 -27.0
18600 419.40 0 46.2 4.5 23 14 16.6 0.56 18.3 -27.3
18800 428.40 0 47.1 4.5 22 14 16.9 0.57 18.4 -27.4
19000 437.50 0 47.9 4.8 22 14 17.2 0.57 18.6 -27.6
19200 447.00 0 48.7 4.8 21 15 17.4 0.58 18.7 -27.9
19400 456.50 0 49.6 4.9 21 15 17.7 0.59 18.9 -28.2
19600 466.20 0 50.5 5.0 21 16 18.0 0.59 19.1 -28.3
19800 476.20 0 51.4 5.1 20 16 18.3 0.60 19.2 -28.6
20000 486.40 0 52.3 5.3 20 17 18.7 0.60 19.5 -28.8
20200 496.90 0 53.2 5.4 19 18 19.0 0.61 19.6 -29.1
20400 507.60 0 54.1 5.5 19 18 19.3 0.62 19.8 -29.2
20600 518.50 0 55.1 5.7 19 19 19.7 0.62 19.9 -29.6
20800 529.90 0 56.1 5.8 18 19 20.0 0.63 20.1 -29.9
21000 541.50 0 57.1 5.9 18 20 20.4 0.64 20.2 -30.1
21200 553.40 0 58.1 6.3 17 21 20.8 0.64 20.4 -30.3
21400 566.00 0 59.2 6.4 16 22 21.3 0.65 20.6 -30.6
21600 578.80 0 60.3 6.7 16 23 21.7 0.66 20.7 -30.9
21800 592.30 0 61.4 7.1 15 24 22.2 0.67 20.9 -31.1
22000 606.40 0 62.6 7.3 15 25 22.7 0.67 21.0 -31.3
22200 621.00 0 63.8 7.9 14 27 23.3 0.68 21.2 -31.6
22400 636.70 0 65.1 8.4 13 29 23.9 0.69 21.4 -31.9
22600 653.50 0 66.5 9.0 13 31 24.6 0.70 21.6 -32.0
22800 671.50 0 68.0 9.9 12 34 25.4 0.71 21.7 -32.3
23000 691.20 0 69.6 11.1 11 37 26.3 0.72 22.0 -32.6
23200 713.40 0 71.3 13.2 10 42 27.4 0.73 22.1 -32.8
23400 739.70 0 73.3 16.7 8 49 28.7 0.75 22.3 -33.2
23600 773.00 0 75.7 27.9 7 61 30.4 0.76 22.6 -33.7
23800 828.80 0 78.7 28.0 5 89 33.0 0.78 23.0 -34.5
23850 850.00 0 85.0 28.5 4 90 40.0 0.82 24.0 -36.0
23800 878.20 0 89.1 23.9 6 77 47.3 0.86 24.9 -37.2
23600 925.90 0 91.2 13.3 9 50 51.8 0.88 25.4 -37.9
23400 952.50 0 92.7 10.4 11 40 54.2 0.90 25.4 -38.2
23200 973.20 0 94.0 8.8 12 34 56.9 0.92 25.5 -38.2
23000 990.70 0 95.0 7.7 14 30 59.7 0.93 25.4 -38.3
22800 1006.10 0 96.0 6.9 15 27 62.2 0.95 25.4 -38.3
22600 1019.90 0 96.8 6.4 16 25 64.6 0.96 25.5 -38.2
22400 1032.60 0 97.6 5.8 18 23 67.0 0.97 25.4 -38.3
22200 1044.30 0 98.3 5.5 19 22 69.4 0.99 25.3 -38.1
22000 1055.20 0 98.9 5.2 20 20 71.6 1.00 25.2 -38.1
21800 1065.60 0 99.6 5.0 21 20 73.9 1.01 25.2 -37.9
21600 1075.60 0 100.1 4.8 22 19 76.2 1.03 25.0 -37.8
21400 1085.10 0 100.7 4.5 23 18 78.4 1.04 24.9 -37.5
21200 1094.10 0 101.2 4.4 24 17 80.7 1.05 24.7 -37.3
21000 1102.90 0 101.7 4.2 25 16 82.9 1.07 24.6 -37.2
20800 1111.20 0 102.2 4.0 26 16 85.0 1.08 24.4 -36.9
20600 1119.30 0 102.7 3.9 26 15 87.1 1.09 24.2 -36.7
20400 1127.10 0 103.1 3.8 27 15 89.3 1.11 24.1 -36.4
20200 1134.70 0 103.5 3.7 28 14 91.5 1.12 23.8 -36.2
20000 1142.00 0 103.9 3.6 29 14 93.7 1.14 23.7 -35.8
19800 1149.20 0 104.3 3.4 30 13 95.8 1.15 23.5 -35.4
19600 1156.10 0 104.7 3.4 30 13 97.8 1.17 23.4 -35.2
19400 1162.80 0 105.1 3.3 31 13 99.9 1.18 23.2 -34.9
19200 1169.30 0 105.4 3.2 32 12 101.8 1.20 22.9 -34.6
19000 1175.70 0 105.7 3.2 33 12 103.7 1.21 22.7 -34.3
18800 1182.10 0 106.1 3.0 34 12 105.5 1.23 22.4 -33.9
18600 1188.00 0 106.4 2.9 34 11 107.3 1.25 22.3 -33.7
18400 1193.90 0 106.7 2.9 35 11 109.0 1.26 22.0 -33.3
18200 1199.70 0 107.0 2.8 36 11 110.7 1.28 21.8 -32.9
18000 1205.40 0 107.2 2.8 37 11 112.2 1.30 21.5 -32.6
17800 1211.00 0 107.5 2.8 37 10 113.7 1.32 21.4 -32.2
17600 1216.50 0 107.8 2.6 38 10 115.0 1.34 21.0 -31.9
17400 1221.80 0 108.0 2.6 39 10 116.3 1.35 20.8 -31.6
17200 1227.10 0 108.3 2.5 39 10 117.6 1.37 20.6 -31.3
17000 1232.20 0 108.5 2.6 40 10 119.1 1.39 20.3 -31.0
16800 1237.40 0 108.7 2.5 40 9 120.5 1.42 20.1 -30.7
16600 1242.40 0 109.0 2.5 40 9 122.0 1.44 20.0 -30.5
16400 1247.50 0 109.2 2.6 40 9 123.2 1.46 19.8 -30.4
16200 1252.70 0 109.4 2.6 40 9 124.4 1.48 19.7 -30.1
16000 1257.90 0 109.6 2.6 40 9 125.5 1.50 19.6 -29.9
15800 1263.00 0 109.8 2.6 40 9 126.4 1.52 19.4 -29.7
15600 1268.10 0 110.0 2.5 40 9 127.3 1.54 19.2 -29.5
15400 1273.10 0 110.2 2.5 40 9 128.1 1.57 19.0 -29.2
15200 1278.10 0 110.4 2.5 40 9 128.9 1.59 18.8 -28.9
15000 1283.20 0 110.6 2.5 40 9 129.7 1.61 18.6 -28.6
}
} Ende Spaltengruppe
} Ende Standard_Tafel
} Ende Schuss_Tafel
@@ -0,0 +1,308 @@
###########################################################################
# #
# Projekt TES : File "SMK-BE-RED-RED-PHOSPH-M1-M64Incr5-TableE.sus" #
# #
# Bei der Auspraegung des Ballistik-Moduls vereinbarte Bezeichnungen #
# Tafel_Namen : ENTFERNUNG, AUFSATZ, FLUGZEIT, -- obligatorisch #
# VORHALT -- projektspezifisch #
# Param_Namen : DELTA_V0, LUFTTEMP, LUFTDRUCK, #
# LAENGSWIND, QUERWIND, #
# PULVERTEMP -- Korrektur-Parameter #
# #
###########################################################################
# Aenderung/Stand: 09.07.14-07:52
Schuss_Tafel =
{
Munition = "SMK-BE-RED-PHOSPH-M1-M64Incr5"
Version = "SMK BE RED PHOSPH M1 M64 Incr5 Table-E"
Muni_Parameter = { Kaliber = 155.0 Masse = 46.30 V0 = 912.0 }
Std_Parameter = { DELTA_V0 = 0.0
LUFTTEMP = 15.0
LUFTDRUCK = 1013.25
LAENGSWIND= 0.0
QUERWIND = 0.0
PULVERTEMP= 21.1 }
Entfernung_Range= { Min = 10400.0 Max = 31400.0 Delta = 200.0 Scheitel = 31450.0 }
Ballistik = "Parabel"
###########################################################################
Standard_Tafel =
{
Spaltengruppe =
{ Belegung = { AUFSATZ = (2) [-]
VORHALT = (3) [-]
FLUGZEIT = (4)
DELTA_RGE = (5) [-]
DELTA_ELEV = (6)
FORK = (7) [-]
DRIFT = (8) [-]
}
Zeilenlaenge = 8
Datenblock =
{
#
# RGE ELEV TOF DELTA DELTA FORK BEARING-CORR. RANGE-CORR.
# ENTF AUFSATZ VORHALT FLUGZEIT RGE ELEV DRIFT CW DEC INC
# [m] [mil] [mil] [sec] [mil] [m] [mil] [mil] [mil] [m] [m]
#
100 0.6 0 0.1 0.6 167 1 0.0 0.00 0.2 -0.1
200 1.2 0 0.2 0.6 166 1 0.1 0.00 0.3 -0.3
300 1.8 0 0.3 0.6 165 1 0.1 0.00 0.6 -0.4
400 2.4 0 0.4 0.6 165 1 0.1 0.00 0.7 -0.7
500 3.0 0 0.6 0.6 164 1 0.1 0.00 0.9 -0.8
600 3.6 0 0.7 0.7 163 1 0.1 0.00 1.0 -1.0
700 4.3 0 0.8 0.7 162 1 0.2 0.00 1.2 -1.1
800 4.9 0 0.9 0.6 161 1 0.2 0.00 1.4 -1.3
900 5.5 0 1.0 0.6 160 1 0.2 0.00 1.6 -1.4
1000 6.1 0 1.1 0.7 160 1 0.2 0.00 1.8 -1.6
1100 6.8 0 1.2 0.7 159 1 0.3 0.00 1.9 -1.7
1200 7.4 0 1.4 0.6 158 1 0.3 0.01 2.1 -1.9
1300 8.0 0 1.5 0.6 157 1 0.3 0.01 2.2 -2.0
1400 8.7 0 1.6 0.7 156 1 0.3 0.01 2.4 -2.2
1500 9.3 0 1.7 0.7 156 1 0.4 0.01 2.6 -2.3
1600 10.0 0 1.8 0.7 155 1 0.4 0.01 2.8 -2.5
1700 10.6 0 1.9 0.7 154 1 0.4 0.01 3.0 -2.6
1800 11.3 0 2.1 0.6 153 1 0.5 0.01 3.1 -2.8
1900 11.9 0 2.2 0.7 153 1 0.5 0.01 3.3 -2.9
2000 12.6 0 2.3 0.7 152 1 0.5 0.01 3.5 -3.1
2100 13.2 0 2.4 0.6 151 1 0.5 0.02 3.6 -3.2
2200 13.9 0 2.5 0.7 150 1 0.6 0.02 3.8 -3.4
2300 14.6 0 2.6 0.7 149 1 0.6 0.02 3.9 -3.5
2400 15.2 0 2.8 0.6 149 1 0.6 0.02 4.1 -3.7
2500 15.9 0 2.9 0.7 148 1 0.6 0.02 4.3 -3.8
2600 16.6 0 3.0 0.7 147 1 0.7 0.02 4.4 -4.0
2700 17.3 0 3.1 0.7 146 1 0.7 0.02 4.6 -4.1
2800 18.0 0 3.3 0.7 146 1 0.7 0.02 4.7 -4.2
2900 18.7 0 3.4 0.7 145 1 0.7 0.03 4.9 -4.4
3000 19.4 0 3.5 0.7 144 1 0.8 0.03 5.1 -4.5
3100 20.1 0 3.6 0.7 143 1 0.8 0.03 5.2 -4.7
3200 20.8 0 3.7 0.7 143 1 0.8 0.03 5.4 -4.8
3300 21.5 0 3.9 0.7 142 1 0.9 0.03 5.5 -4.9
3400 22.2 0 4.0 0.7 141 1 0.9 0.03 5.7 -5.1
3500 22.9 0 4.1 0.7 140 1 0.9 0.03 5.9 -5.2
3600 23.6 0 4.2 0.7 140 1 0.9 0.03 6.0 -5.4
3700 24.3 0 4.4 0.7 139 1 1.0 0.03 6.2 -5.5
3800 25.0 0 4.5 0.8 138 1 1.0 0.04 6.3 -5.7
3900 25.8 0 4.6 0.8 138 1 1.0 0.04 6.4 -5.8
4000 26.5 0 4.8 0.7 137 1 1.1 0.04 6.6 -6.0
4100 27.2 0 4.9 0.8 136 1 1.1 0.04 6.7 -6.0
4200 28.0 0 5.0 0.8 135 1 1.1 0.04 6.9 -6.2
4300 28.7 0 5.1 0.8 135 1 1.1 0.04 7.1 -6.3
4400 29.5 0 5.3 0.8 134 1 1.2 0.04 7.2 -6.5
4500 30.2 0 5.4 0.8 133 1 1.2 0.04 7.3 -6.6
4600 31.0 0 5.5 0.8 133 1 1.2 0.05 7.5 -6.7
4700 31.7 0 5.7 0.8 132 1 1.3 0.05 7.6 -6.9
4800 32.5 0 5.8 0.8 131 1 1.3 0.05 7.8 -7.0
4900 33.3 0 5.9 0.8 131 1 1.3 0.05 7.9 -7.2
5000 34.0 0 6.1 0.8 130 1 1.3 0.05 8.1 -7.2
5100 34.8 0 6.2 0.8 129 1 1.4 0.05 8.2 -7.4
5200 35.6 0 6.3 0.8 128 1 1.4 0.05 8.4 -7.5
5300 36.4 0 6.5 0.8 128 1 1.4 0.05 8.5 -7.7
5400 37.2 0 6.6 0.8 127 1 1.5 0.06 8.7 -7.8
5500 38.0 0 6.7 0.8 126 1 1.5 0.06 8.8 -7.9
5600 38.7 0 6.9 0.8 126 1 1.5 0.06 8.9 -8.1
5700 39.5 0 7.0 0.9 125 1 1.6 0.06 9.1 -8.1
5800 40.4 0 7.1 0.9 124 2 1.6 0.06 9.2 -8.3
5900 41.2 0 7.3 0.8 124 2 1.6 0.06 9.4 -8.4
6000 42.0 0 7.4 0.8 123 2 1.6 0.06 9.5 -8.6
6100 42.8 0 7.6 0.8 122 2 1.7 0.06 9.6 -8.6
6200 43.6 0 7.7 0.8 122 2 1.7 0.07 9.8 -8.8
6300 44.4 0 7.8 0.9 121 2 1.7 0.07 9.9 -8.9
6400 45.3 0 8.0 0.8 120 2 1.8 0.07 10.0 -9.0
6500 46.1 0 8.1 0.9 120 2 1.8 0.07 10.2 -9.2
6600 47.0 0 8.3 0.9 119 2 1.8 0.07 10.4 -9.3
6700 47.8 0 8.4 0.9 118 2 1.9 0.07 10.4 -9.4
6800 48.7 0 8.5 0.9 118 2 1.9 0.07 10.6 -9.5
6900 49.5 0 8.7 0.9 117 2 1.9 0.08 10.8 -9.6
7000 50.4 0 8.8 0.9 117 2 2.0 0.08 10.8 -9.8
7100 51.2 0 9.0 0.8 116 2 2.0 0.08 11.0 -9.9
7200 52.1 0 9.1 0.9 115 2 2.0 0.08 11.1 -10.0
7300 53.0 0 9.3 0.9 115 2 2.1 0.08 11.2 -10.1
7400 53.8 0 9.4 0.9 114 2 2.1 0.08 11.4 -10.2
7500 54.7 0 9.6 0.9 113 2 2.1 0.08 11.5 -10.4
7600 55.6 0 9.7 0.9 113 2 2.2 0.08 11.6 -10.4
7700 56.5 0 9.9 0.9 112 2 2.2 0.09 11.8 -10.6
7800 57.4 0 10.0 0.9 112 2 2.2 0.09 11.9 -10.7
7900 58.3 0 10.2 0.9 111 2 2.3 0.09 12.0 -10.8
8000 59.2 0 10.3 0.9 110 2 2.3 0.09 12.1 -11.0
8100 60.1 0 10.5 0.9 110 2 2.3 0.09 12.3 -11.0
8200 60.1 0 10.6 1.0 109 2 2.4 0.09 12.4 -11.2
8300 60.2 0 10.8 0.9 109 2 2.4 0.09 12.5 -11.3
8400 60.3 0 10.9 0.9 108 2 2.4 0.10 12.7 -11.4
8500 60.4 0 11.1 1.0 107 2 2.5 0.10 12.8 -11.5
8600 60.5 0 11.2 0.9 107 2 2.5 0.10 12.9 -11.6
8700 60.6 0 11.4 0.9 106 2 2.5 0.10 13.0 -11.7
8800 60.7 0 11.5 1.0 106 2 2.6 0.10 13.2 -11.9
8900 60.8 0 11.7 1.0 105 2 2.6 0.10 13.2 -11.9
9000 60.9 0 11.8 1.0 104 2 2.6 0.10 13.4 -12.1
9100 61.0 0 12.0 1.0 104 2 2.7 0.11 13.6 -12.2
9200 61.1 0 12.2 1.0 103 2 2.7 0.11 13.6 -12.3
9300 61.2 0 12.3 1.0 103 2 2.7 0.11 13.8 -12.4
9400 61.3 0 12.5 1.0 102 2 2.8 0.11 13.9 -12.5
9500 61.4 0 12.6 1.0 102 2 2.8 0.11 14.1 -12.6
9600 61.5 0 12.8 1.0 101 2 2.8 0.11 14.1 -12.7
9700 61.6 0 13.0 1.0 100 2 2.9 0.11 14.3 -12.8
9800 61.7 0 13.1 1.0 100 2 2.9 0.12 14.4 -13.0
9900 61.8 0 13.3 1.0 99 2 2.9 0.12 14.5 -13.0
10000 61.9 0 13.5 1.0 99 2 3.0 0.12 14.6 -13.1
10100 61.0 0 13.6 1.0 98 2 3.0 0.12 14.8 -13.3
10200 61.1 0 13.8 1.0 97 2 3.1 0.12 14.9 -13.3
10300 61.2 0 14.0 1.0 97 2 3.1 0.12 15.0 -13.5
10400 62.40 0 15.3 1.6 78 2 3.8 0.19 13.5 -13.3
10600 65.60 0 15.7 1.6 76 3 3.9 0.20 13.7 -13.4
10800 68.80 0 16.1 1.6 75 3 4.0 0.20 13.9 -13.6
11000 72.00 0 16.5 1.6 74 3 4.1 0.21 14.1 -13.8
11200 75.20 0 16.9 1.7 73 3 4.2 0.21 14.3 -14.0
11400 78.50 0 17.3 1.7 71 3 4.3 0.22 14.4 -14.2
11600 81.80 0 17.7 1.7 70 3 4.4 0.22 14.6 -14.4
11800 85.20 0 18.1 1.7 69 3 4.5 0.23 14.8 -14.5
12000 88.50 0 18.5 1.8 68 3 4.6 0.23 14.9 -14.8
12200 92.00 0 19.0 1.8 67 3 4.8 0.24 15.1 -14.9
12400 95.50 0 19.4 1.8 65 3 4.9 0.24 15.2 -15.1
12600 99.00 0 19.9 1.8 64 3 5.0 0.25 15.5 -15.2
12800 102.50 0 20.3 1.8 63 3 5.1 0.25 15.6 -15.4
13000 106.00 0 20.8 1.9 62 3 5.2 0.26 15.8 -15.6
13200 109.70 0 21.2 1.8 61 4 5.3 0.26 15.9 -15.7
13400 113.40 0 21.7 1.9 60 4 5.5 0.27 16.1 -15.9
13600 117.10 0 22.2 1.9 59 4 5.6 0.27 16.3 -16.0
13800 120.90 0 22.6 2.0 58 4 5.7 0.28 16.4 -16.3
14000 124.80 0 23.1 1.9 57 4 5.9 0.28 16.6 -16.4
14200 128.60 0 23.6 2.0 56 4 6.0 0.29 16.7 -16.6
14400 132.60 0 24.1 2.0 55 4 6.1 0.30 16.9 -16.7
14600 136.60 0 24.6 2.0 54 4 6.3 0.30 17.0 -16.8
14800 140.60 0 25.1 2.1 53 4 6.4 0.31 17.3 -17.0
15000 144.70 0 25.6 2.1 52 5 6.5 0.31 17.4 -17.1
15200 148.90 0 26.1 2.2 52 5 6.7 0.32 17.6 -17.3
15400 153.20 0 26.7 2.1 51 5 6.8 0.32 17.7 -17.4
15600 157.40 0 27.2 2.2 50 5 7.0 0.33 17.9 -17.7
15800 161.80 0 27.7 2.2 49 5 7.1 0.34 18.0 -17.8
16000 166.20 0 28.3 2.3 48 5 7.3 0.34 18.2 -18.0
16200 170.70 0 28.8 2.3 47 5 7.4 0.35 18.4 -18.1
16400 175.30 0 29.4 2.3 47 5 7.6 0.35 18.6 -18.3
16600 179.80 0 30.0 2.4 46 6 7.7 0.36 18.7 -18.4
16800 184.60 0 30.5 2.4 45 6 7.9 0.37 18.9 -18.6
17000 189.30 0 31.1 2.4 44 6 8.1 0.37 19.0 -18.8
17200 194.10 0 31.7 2.4 44 6 8.2 0.38 19.2 -18.9
17400 198.90 0 32.3 2.6 43 6 8.4 0.38 19.3 -19.1
17600 204.00 0 32.9 2.5 42 6 8.6 0.39 19.5 -19.2
17800 209.00 0 33.5 2.6 42 7 8.8 0.40 19.7 -19.4
18000 214.10 0 34.1 2.6 41 7 8.9 0.40 19.8 -19.5
18200 219.30 0 34.7 2.6 40 7 9.1 0.41 20.0 -19.7
18400 224.50 0 35.3 2.7 40 7 9.3 0.41 20.1 -19.9
18600 229.90 0 35.9 2.7 39 7 9.5 0.42 20.4 -20.1
18800 235.30 0 36.6 2.8 39 8 9.7 0.43 20.5 -20.3
19000 240.80 0 37.2 2.8 38 8 9.9 0.43 20.7 -20.4
19200 246.30 0 37.9 2.8 37 8 10.1 0.44 20.9 -20.6
19400 251.90 0 38.5 2.9 37 8 10.3 0.44 21.0 -20.8
19600 257.60 0 39.2 2.9 36 8 10.5 0.45 21.3 -20.9
19800 263.40 0 39.8 2.9 36 9 10.7 0.46 21.4 -21.1
20000 269.30 0 40.5 3.0 35 9 10.9 0.46 21.6 -21.3
20200 275.20 0 41.1 3.0 35 9 11.1 0.47 21.8 -21.5
20400 281.20 0 41.8 3.0 34 9 11.4 0.47 21.9 -21.7
20600 287.30 0 42.5 3.1 34 10 11.6 0.48 22.2 -21.8
20800 293.50 0 43.2 3.1 34 10 11.8 0.49 22.3 -22.1
21000 299.70 0 43.9 3.2 33 10 12.1 0.49 22.6 -22.2
21200 306.00 0 44.6 3.1 33 10 12.3 0.50 22.8 -22.4
21400 312.30 0 45.3 3.3 32 10 12.5 0.50 23.0 -22.7
21600 318.90 0 46.0 3.2 32 11 12.8 0.51 23.2 -22.9
21800 325.40 0 46.7 3.3 32 11 13.0 0.51 23.4 -23.1
22000 332.00 0 47.4 3.4 31 11 13.3 0.52 23.5 -23.3
22200 338.70 0 48.1 3.4 31 11 13.5 0.52 23.8 -23.5
22400 345.50 0 48.8 3.4 30 12 13.8 0.53 23.9 -23.6
22600 352.30 0 49.6 3.4 30 12 14.0 0.53 24.1 -23.8
22800 359.20 0 50.3 3.5 30 12 14.3 0.54 24.4 -24.0
23000 366.30 0 51.1 3.6 29 13 14.6 0.55 24.6 -24.2
23200 373.50 0 51.8 3.6 29 13 14.9 0.55 24.8 -24.5
23400 380.70 0 52.6 3.7 28 13 15.1 0.56 25.0 -24.8
23600 388.00 0 53.4 3.6 28 14 15.4 0.56 25.3 -25.0
23800 395.30 0 54.1 3.8 28 14 15.7 0.57 25.6 -25.2
24000 402.80 0 54.9 3.8 27 14 16.0 0.57 25.8 -25.4
24200 410.40 0 55.7 3.8 27 14 16.3 0.58 26.0 -25.6
24400 418.10 0 56.5 3.9 27 15 16.6 0.58 26.2 -25.9
24600 425.80 0 57.4 4.0 26 15 16.9 0.59 26.5 -26.1
24800 433.80 0 58.2 4.0 26 16 17.3 0.59 26.8 -26.4
25000 441.80 0 59.1 4.1 26 16 17.6 0.60 27.1 -26.7
25200 450.00 0 59.9 4.1 25 16 17.9 0.61 27.3 -27.0
25400 458.20 0 60.8 4.2 25 17 18.3 0.61 27.7 -27.4
25600 466.60 0 61.7 4.2 24 17 18.6 0.62 28.0 -27.6
25800 475.10 0 62.6 4.3 24 18 19.0 0.62 28.3 -27.9
26000 483.70 0 63.5 4.4 24 18 19.4 0.63 28.6 -28.2
26200 492.50 0 64.4 4.5 23 19 19.7 0.63 29.0 -28.6
26400 501.40 0 65.3 4.6 23 19 20.1 0.64 29.3 -28.9
26600 510.60 0 66.3 4.6 22 20 20.5 0.65 29.6 -29.2
26800 519.80 0 67.3 4.8 22 20 21.0 0.65 30.0 -29.5
27000 529.30 0 68.3 4.9 22 21 21.4 0.66 30.5 -30.0
27200 539.00 0 69.3 4.9 21 21 21.8 0.66 30.8 -30.4
27400 548.80 0 70.3 5.0 21 22 22.3 0.67 31.4 -30.9
27600 558.80 0 71.4 5.1 20 22 22.8 0.68 32.0 -31.5
27800 569.10 0 72.5 5.2 20 23 23.3 0.68 32.7 -32.1
28000 579.50 0 73.5 5.3 20 23 23.8 0.69 33.4 -32.8
28200 590.00 0 74.6 5.3 20 24 24.3 0.69 34.1 -33.5
28400 600.60 0 75.7 5.3 19 25 24.9 0.70 34.6 -34.1
28600 611.30 0 76.8 5.5 19 25 25.4 0.70 35.2 -34.6
28800 622.30 0 77.9 5.7 18 26 26.0 0.71 35.8 -35.1
29000 633.70 0 79.1 5.8 18 27 26.7 0.71 36.3 -35.6
29200 645.30 0 80.2 6.0 17 28 27.3 0.72 36.9 -36.2
29400 657.30 0 81.4 6.2 17 30 28.0 0.72 37.4 -36.8
29600 669.80 0 82.7 6.5 16 31 28.8 0.73 38.0 -37.3
29800 682.70 0 84.0 6.7 15 33 29.6 0.74 38.7 -37.9
30000 696.20 0 85.3 7.1 14 35 30.5 0.74 39.4 -38.6
30200 710.40 0 86.7 7.5 14 37 31.5 0.75 40.1 -39.4
30400 725.50 0 88.2 8.1 13 41 32.6 0.75 41.0 -40.1
30600 741.70 0 89.9 8.7 12 45 33.8 0.76 41.8 -40.9
30800 759.10 0 91.7 9.7 10 51 35.2 0.77 42.7 -41.7
31000 778.40 0 93.8 11.5 9 62 37.0 0.77 43.7 -42.6
31200 801.40 0 96.3 5.4 7 81 39.4 0.78 44.4 -43.5
31400 812.10 0 99.9 6.0 3 171 43.3 0.80 44.9 -44.1
31450 900.00 0 105.0 7.5 2 72 50.0 0.82 45.0 -44.5
31400 1009.20 0 110.8 7.0 8 71 61.1 0.83 45.3 -44.7
31200 1023.10 0 112.6 6.9 11 48 65.4 0.84 45.5 -44.9
31000 1036.90 0 113.9 6.1 14 39 69.0 0.84 45.6 -45.0
30800 1049.10 0 115.0 5.3 16 33 72.2 0.85 45.6 -45.2
30600 1059.70 0 116.0 4.9 19 29 75.1 0.86 45.8 -45.2
30400 1069.40 0 116.8 4.5 21 26 77.8 0.87 46.0 -45.1
30200 1078.30 0 117.5 4.1 23 24 80.6 0.87 46.2 -45.0
30000 1086.50 0 118.2 3.6 25 22 82.5 0.88 46.1 -45.0
29800 1093.70 0 118.8 3.5 27 20 83.1 0.89 46.1 -45.0
29600 1100.80 0 119.3 3.4 29 19 83.3 0.90 46.0 -44.9
29400 1107.60 0 119.8 3.3 30 18 83.5 0.90 45.9 -44.8
29200 1114.10 0 120.2 3.2 31 17 83.9 0.91 45.8 -44.8
29000 1120.40 0 120.7 3.0 32 17 84.7 0.92 45.6 -44.7
28800 1126.50 0 121.1 3.0 33 16 85.6 0.93 45.5 -44.6
28600 1132.40 0 121.5 2.8 34 16 86.1 0.94 45.3 -44.4
28400 1138.10 0 121.9 2.7 36 15 86.5 0.94 45.2 -44.2
28200 1143.50 0 122.3 2.7 37 15 86.9 0.95 44.6 -44.0
28000 1148.90 0 122.7 2.5 38 14 87.5 0.96 44.1 -43.9
27800 1154.00 0 123.0 2.5 39 14 88.1 0.97 43.7 -43.8
27600 1159.10 0 123.4 2.5 40 13 88.8 0.98 43.3 -43.3
27400 1164.00 0 123.7 2.3 41 13 89.3 0.99 42.9 -42.7
27200 1168.70 0 124.0 2.4 42 13 89.8 1.00 42.5 -42.0
27000 1173.50 0 124.3 2.3 43 12 90.2 1.00 42.2 -41.6
26800 1178.00 0 124.6 2.3 44 12 90.6 1.01 41.9 -41.3
26600 1182.50 0 124.9 2.3 45 12 90.9 1.02 41.6 -41.0
26400 1187.00 0 125.2 2.2 45 12 91.1 1.03 41.3 -40.9
26200 1191.40 0 125.5 2.1 46 12 91.5 1.04 41.2 -40.7
26000 1195.70 0 125.8 2.2 46 12 91.7 1.05 40.9 -40.7
25800 1200.10 0 126.0 2.1 46 11 92.0 1.06 40.7 -40.7
25600 1204.40 0 126.3 2.2 46 11 92.3 1.07 40.5 -40.6
25400 1208.70 0 126.5 2.1 47 11 92.5 1.08 40.4 -40.6
25200 1213.00 0 126.8 2.1 47 11 92.7 1.09 40.1 -40.6
25000 1217.30 0 127.0 2.2 47 11 92.8 1.10 40.0 -40.5
24800 1221.60 0 127.2 2.0 47 11 92.8 1.11 39.8 -40.4
24600 1225.70 0 127.5 2.1 48 11 92.6 1.12 39.7 -39.9
24400 1229.90 0 127.7 2.1 48 11 92.5 1.13 39.5 -39.1
24200 1234.10 0 127.9 2.0 49 11 92.5 1.14 39.3 -38.7
24000 1238.10 0 128.1 2.1 49 11 92.5 1.15 39.1 -38.4
23800 1242.20 0 128.3 2.0 50 11 92.5 1.16 38.8 -38.2
23600 1246.30 0 128.5 2.0 50 10 92.5 1.17 38.5 -38.0
23400 1250.20 0 128.7 2.0 50 10 92.6 1.18 37.8 -37.7
23200 1254.20 0 128.9 2.0 51 10 92.7 1.19 36.9 -37.4
23000 1258.10 0 129.1 2.0 51 10 92.7 1.20 36.1 -37.2
}
} Ende Spaltengruppe
} Ende Standard_Tafel
} Ende Schuss_Tafel
@@ -0,0 +1,373 @@
###########################################################################
# #
# Projekt TES : File "SMK-BE-RED-RED-PHOSPH-M1-M64Incr5BaseBleed #
# -TableE.sus" #
# #
# Bei der Auspraegung des Ballistik-Moduls vereinbarte Bezeichnungen #
# Tafel_Namen : ENTFERNUNG, AUFSATZ, FLUGZEIT, -- obligatorisch #
# VORHALT -- projektspezifisch #
# Param_Namen : DELTA_V0, LUFTTEMP, LUFTDRUCK, #
# LAENGSWIND, QUERWIND, #
# PULVERTEMP -- Korrektur-Parameter #
# #
###########################################################################
# Aenderung/Stand: 09.07.14-07:52
Schuss_Tafel =
{
Munition = "-"
Version = "-"
Muni_Parameter = { Kaliber = 155.0 Masse = 46.30 V0 = 912.0 }
Std_Parameter = { DELTA_V0 = 0.0
LUFTTEMP = 15.0
LUFTDRUCK = 1013.25
LAENGSWIND= 0.0
QUERWIND = 0.0
PULVERTEMP= 21.1 }
Entfernung_Range= { Min = 11200.0 Max = 40200.0 Delta = 200.0 Scheitel = 40250.0 }
Ballistik = "Parabel"
###########################################################################
Standard_Tafel =
{
Spaltengruppe =
{ Belegung = { AUFSATZ = (2) [-]
VORHALT = (3) [-]
FLUGZEIT = (4)
DELTA_RGE = (5) [-]
DELTA_ELEV = (6)
FORK = (7) [-]
DRIFT = (8) [-]
}
Zeilenlaenge = 8
Datenblock =
{
#
# RGE ELEV TOF DELTA DELTA FORK BEARING-CORR. RANGE-CORR.
# ENTF AUFSATZ VORHALT FLUGZEIT RGE ELEV DRIFT CW DEC INC
# [m] [mil] [mil] [sec] [mil] [m] [mil] [mil] [mil] [m] [m]
#
100 0.6 0 0.1 0.6 167 1 0.0 0.00 0.2 -0.1
200 1.2 0 0.2 0.6 166 1 0.1 0.00 0.3 -0.3
300 1.8 0 0.3 0.6 165 1 0.1 0.00 0.6 -0.4
400 2.4 0 0.4 0.6 165 1 0.1 0.00 0.7 -0.7
500 3.0 0 0.6 0.6 164 1 0.1 0.00 0.9 -0.8
600 3.6 0 0.7 0.7 163 1 0.1 0.00 1.0 -1.0
700 4.3 0 0.8 0.7 162 1 0.2 0.00 1.2 -1.1
800 4.9 0 0.9 0.6 161 1 0.2 0.00 1.4 -1.3
900 5.5 0 1.0 0.6 160 1 0.2 0.00 1.6 -1.4
1000 6.1 0 1.1 0.7 160 1 0.2 0.00 1.8 -1.6
1100 6.8 0 1.2 0.7 159 1 0.3 0.00 1.9 -1.7
1200 7.4 0 1.4 0.6 158 1 0.3 0.01 2.1 -1.9
1300 8.0 0 1.5 0.6 157 1 0.3 0.01 2.2 -2.0
1400 8.7 0 1.6 0.7 156 1 0.3 0.01 2.4 -2.2
1500 9.3 0 1.7 0.7 156 1 0.4 0.01 2.6 -2.3
1600 10.0 0 1.8 0.7 155 1 0.4 0.01 2.8 -2.5
1700 10.6 0 1.9 0.7 154 1 0.4 0.01 3.0 -2.6
1800 11.3 0 2.1 0.6 153 1 0.5 0.01 3.1 -2.8
1900 11.9 0 2.2 0.7 153 1 0.5 0.01 3.3 -2.9
2000 12.6 0 2.3 0.7 152 1 0.5 0.01 3.5 -3.1
2100 13.2 0 2.4 0.6 151 1 0.5 0.02 3.6 -3.2
2200 13.9 0 2.5 0.7 150 1 0.6 0.02 3.8 -3.4
2300 14.6 0 2.6 0.7 149 1 0.6 0.02 3.9 -3.5
2400 15.2 0 2.8 0.6 149 1 0.6 0.02 4.1 -3.7
2500 15.9 0 2.9 0.7 148 1 0.6 0.02 4.3 -3.8
2600 16.6 0 3.0 0.7 147 1 0.7 0.02 4.4 -4.0
2700 17.3 0 3.1 0.7 146 1 0.7 0.02 4.6 -4.1
2800 18.0 0 3.3 0.7 146 1 0.7 0.02 4.7 -4.2
2900 18.7 0 3.4 0.7 145 1 0.7 0.03 4.9 -4.4
3000 19.4 0 3.5 0.7 144 1 0.8 0.03 5.1 -4.5
3100 20.1 0 3.6 0.7 143 1 0.8 0.03 5.2 -4.7
3200 20.8 0 3.7 0.7 143 1 0.8 0.03 5.4 -4.8
3300 21.5 0 3.9 0.7 142 1 0.9 0.03 5.5 -4.9
3400 22.2 0 4.0 0.7 141 1 0.9 0.03 5.7 -5.1
3500 22.9 0 4.1 0.7 140 1 0.9 0.03 5.9 -5.2
3600 23.6 0 4.2 0.7 140 1 0.9 0.03 6.0 -5.4
3700 24.3 0 4.4 0.7 139 1 1.0 0.03 6.2 -5.5
3800 25.0 0 4.5 0.8 138 1 1.0 0.04 6.3 -5.7
3900 25.8 0 4.6 0.8 138 1 1.0 0.04 6.4 -5.8
4000 26.5 0 4.8 0.7 137 1 1.1 0.04 6.6 -6.0
4100 27.2 0 4.9 0.8 136 1 1.1 0.04 6.7 -6.0
4200 28.0 0 5.0 0.8 135 1 1.1 0.04 6.9 -6.2
4300 28.7 0 5.1 0.8 135 1 1.1 0.04 7.1 -6.3
4400 29.5 0 5.3 0.8 134 1 1.2 0.04 7.2 -6.5
4500 30.2 0 5.4 0.8 133 1 1.2 0.04 7.3 -6.6
4600 31.0 0 5.5 0.8 133 1 1.2 0.05 7.5 -6.7
4700 31.7 0 5.7 0.8 132 1 1.3 0.05 7.6 -6.9
4800 32.5 0 5.8 0.8 131 1 1.3 0.05 7.8 -7.0
4900 33.3 0 5.9 0.8 131 1 1.3 0.05 7.9 -7.2
5000 34.0 0 6.1 0.8 130 1 1.3 0.05 8.1 -7.2
5100 34.8 0 6.2 0.8 129 1 1.4 0.05 8.2 -7.4
5200 35.6 0 6.3 0.8 128 1 1.4 0.05 8.4 -7.5
5300 36.4 0 6.5 0.8 128 1 1.4 0.05 8.5 -7.7
5400 37.2 0 6.6 0.8 127 1 1.5 0.06 8.7 -7.8
5500 38.0 0 6.7 0.8 126 1 1.5 0.06 8.8 -7.9
5600 38.7 0 6.9 0.8 126 1 1.5 0.06 8.9 -8.1
5700 39.5 0 7.0 0.9 125 1 1.6 0.06 9.1 -8.1
5800 40.4 0 7.1 0.9 124 2 1.6 0.06 9.2 -8.3
5900 41.2 0 7.3 0.8 124 2 1.6 0.06 9.4 -8.4
6000 42.0 0 7.4 0.8 123 2 1.6 0.06 9.5 -8.6
6100 42.8 0 7.6 0.8 122 2 1.7 0.06 9.6 -8.6
6200 43.6 0 7.7 0.8 122 2 1.7 0.07 9.8 -8.8
6300 44.4 0 7.8 0.9 121 2 1.7 0.07 9.9 -8.9
6400 45.3 0 8.0 0.8 120 2 1.8 0.07 10.0 -9.0
6500 46.1 0 8.1 0.9 120 2 1.8 0.07 10.2 -9.2
6600 47.0 0 8.3 0.9 119 2 1.8 0.07 10.4 -9.3
6700 47.8 0 8.4 0.9 118 2 1.9 0.07 10.4 -9.4
6800 48.7 0 8.5 0.9 118 2 1.9 0.07 10.6 -9.5
6900 49.5 0 8.7 0.9 117 2 1.9 0.08 10.8 -9.6
7000 50.4 0 8.8 0.9 117 2 2.0 0.08 10.8 -9.8
7100 51.2 0 9.0 0.8 116 2 2.0 0.08 11.0 -9.9
7200 52.1 0 9.1 0.9 115 2 2.0 0.08 11.1 -10.0
7300 53.0 0 9.3 0.9 115 2 2.1 0.08 11.2 -10.1
7400 53.8 0 9.4 0.9 114 2 2.1 0.08 11.4 -10.2
7500 54.7 0 9.6 0.9 113 2 2.1 0.08 11.5 -10.4
7600 55.6 0 9.7 0.9 113 2 2.2 0.08 11.6 -10.4
7700 56.5 0 9.9 0.9 112 2 2.2 0.09 11.8 -10.6
7800 57.4 0 10.0 0.9 112 2 2.2 0.09 11.9 -10.7
7900 58.3 0 10.2 0.9 111 2 2.3 0.09 12.0 -10.8
8000 59.2 0 10.3 0.9 110 2 2.3 0.09 12.1 -11.0
8100 60.1 0 10.5 0.9 110 2 2.3 0.09 12.3 -11.0
8200 61.1 0 10.6 1.0 109 2 2.4 0.09 12.4 -11.2
8300 61.2 0 10.8 0.9 109 2 2.4 0.09 12.5 -11.3
8400 61.5 0 10.9 0.9 108 2 2.4 0.10 12.7 -11.4
8500 61.6 0 11.1 1.0 107 2 2.5 0.10 12.8 -11.5
8600 61.7 0 11.2 0.9 107 2 2.5 0.10 12.9 -11.6
8700 61.8 0 11.4 0.9 106 2 2.5 0.10 13.0 -11.7
8800 61.9 0 11.5 1.0 106 2 2.6 0.10 13.2 -11.9
8900 62.0 0 11.7 1.0 105 2 2.6 0.10 13.2 -11.9
9000 62.1 0 11.8 1.0 104 2 2.6 0.10 13.4 -12.1
9100 62.2 0 12.0 1.0 104 2 2.7 0.11 13.6 -12.2
9200 62.3 0 12.2 1.0 103 2 2.7 0.11 13.6 -12.3
9300 62.4 0 12.3 1.0 103 2 2.7 0.11 13.8 -12.4
9400 62.5 0 12.5 1.0 102 2 2.8 0.11 13.9 -12.5
9500 62.6 0 12.6 1.0 102 2 2.8 0.11 14.1 -12.6
9600 62.7 0 12.8 1.0 101 2 2.8 0.11 14.1 -12.7
9700 62.8 0 13.0 1.0 100 2 2.9 0.11 14.3 -12.8
9800 62.9 0 13.1 1.0 100 2 2.9 0.12 14.4 -13.0
9900 63.0 0 13.3 1.0 99 2 2.9 0.12 14.5 -13.0
10000 63.1 0 13.5 1.0 99 2 3.0 0.12 14.6 -13.1
10100 63.2 0 13.6 1.0 98 2 3.0 0.12 14.8 -13.3
10200 63.3 0 13.8 1.0 97 2 3.1 0.12 14.9 -13.3
10300 63.4 0 14.0 1.0 97 2 3.1 0.12 15.0 -13.5
10400 63.5 0 14.1 1.0 96 2 3.1 0.13 15.1 -13.6
10500 63.6 0 14.3 1.0 96 2 3.2 0.13 15.3 -13.7
10600 63.7 0 14.5 1.1 95 2 3.2 0.13 15.3 -13.8
10700 63.8 0 14.6 1.1 95 2 3.2 0.13 15.5 -13.9
10800 63.9 0 14.8 1.0 94 2 3.3 0.13 15.6 -14.0
10900 64.0 0 15.0 1.1 94 2 3.3 0.13 15.7 -14.2
11000 64.1 0 15.1 1.1 93 2 3.3 0.13 15.8 -14.2
11100 64.2 0 15.3 1.1 92 2 3.4 0.14 16.0 -14.4
11200 64.30 0 15.5 1.1 92 2 3.4 0.14 16.1 -14.5
11400 67.00 0 15.8 1.1 91 2 3.5 0.14 16.3 -14.7
11600 69.60 0 16.2 1.1 90 2 3.6 0.14 16.5 -14.9
11800 72.30 0 16.5 1.2 89 2 3.7 0.15 16.8 -15.1
12000 75.00 0 16.9 1.2 88 2 3.7 0.15 17.0 -15.3
12200 77.80 0 17.3 1.1 86 2 3.8 0.15 17.3 -15.5
12400 80.60 0 17.6 1.2 85 2 3.9 0.16 17.4 -15.7
12600 83.30 0 18.0 1.2 84 2 4.0 0.16 17.7 -16.0
12800 86.10 0 18.4 1.3 83 2 4.0 0.16 17.9 -16.2
13000 89.00 0 18.8 1.2 82 2 4.1 0.17 18.1 -16.4
13200 91.70 0 19.1 1.3 81 2 4.2 0.17 18.4 -16.6
13400 94.60 0 19.5 1.3 80 2 4.3 0.18 18.6 -16.8
13600 97.50 0 19.9 1.3 79 2 4.4 0.18 18.8 -17.0
13800 100.40 0 20.3 1.3 78 2 4.5 0.18 19.0 -17.2
14000 103.30 0 20.7 1.3 77 3 4.5 0.19 19.3 -17.4
14200 106.30 0 21.1 1.3 77 3 4.6 0.19 19.5 -17.6
14400 109.20 0 21.5 1.3 76 3 4.7 0.19 19.7 -17.8
14600 112.20 0 21.9 1.3 75 3 4.8 0.20 19.9 -18.0
14800 115.20 0 22.3 1.4 74 3 4.9 0.20 20.2 -18.2
15000 118.30 0 22.7 1.4 73 3 5.0 0.20 20.3 -18.3
15200 121.40 0 23.2 1.4 72 3 5.1 0.21 20.6 -18.6
15400 124.50 0 23.6 1.4 71 3 5.1 0.21 20.7 -18.8
15600 127.60 0 24.0 1.4 70 3 5.2 0.22 21.0 -19.0
15800 130.70 0 24.4 1.5 69 3 5.3 0.22 21.1 -19.2
16000 133.90 0 24.9 1.4 69 3 5.4 0.22 21.4 -19.4
16200 137.20 0 25.3 1.5 68 3 5.5 0.23 21.6 -19.6
16400 140.40 0 25.7 1.5 67 3 5.6 0.23 21.8 -19.8
16600 143.70 0 26.2 1.5 66 3 5.7 0.24 22.1 -20.1
16800 147.00 0 26.6 1.6 65 3 5.8 0.24 22.3 -20.3
17000 150.30 0 27.1 1.5 65 3 5.9 0.24 22.6 -20.5
17200 153.70 0 27.6 1.6 64 3 6.0 0.25 22.9 -20.7
17400 157.00 0 28.0 1.5 63 3 6.1 0.25 23.1 -20.9
17600 160.60 0 28.5 1.7 63 4 6.2 0.25 23.4 -21.2
17800 164.00 0 28.9 1.6 62 4 6.3 0.26 23.6 -21.4
18000 167.50 0 29.4 1.7 61 4 6.3 0.26 23.8 -21.6
18200 171.00 0 29.9 1.7 60 4 6.4 0.27 23.9 -21.8
18400 174.60 0 30.4 1.7 60 4 6.5 0.27 24.2 -21.9
18600 178.20 0 30.9 1.8 59 4 6.6 0.27 24.3 -22.1
18800 181.80 0 31.4 1.7 58 4 6.7 0.28 24.6 -22.2
19000 185.50 0 31.8 1.8 58 4 6.8 0.28 24.7 -22.4
19200 189.20 0 32.3 1.8 57 4 6.9 0.29 25.0 -22.7
19400 192.90 0 32.8 1.8 57 4 7.0 0.29 25.2 -22.9
19600 196.70 0 33.3 1.8 56 4 7.1 0.29 25.5 -23.1
19800 200.50 0 33.8 1.8 56 4 7.2 0.30 25.7 -23.3
20000 204.40 0 34.4 1.9 55 5 7.3 0.30 25.9 -23.5
20200 208.20 0 34.9 1.8 54 5 7.4 0.31 26.2 -23.7
20400 212.10 0 35.4 1.9 54 5 7.5 0.31 26.4 -23.9
20600 216.10 0 35.9 1.9 53 5 7.6 0.31 26.7 -24.3
20800 220.00 0 36.4 1.9 53 5 7.7 0.32 27.0 -24.7
21000 224.10 0 37.0 2.0 52 5 7.8 0.32 27.2 -25.0
21200 228.20 0 37.5 1.9 52 5 7.9 0.33 27.5 -25.3
21400 232.20 0 38.0 2.0 51 5 8.0 0.33 27.6 -25.1
21600 236.30 0 38.6 1.9 51 5 8.1 0.33 27.8 -25.5
21800 240.40 0 39.1 2.1 50 6 8.2 0.34 28.0 -25.6
22000 244.70 0 39.7 2.0 50 6 8.4 0.34 28.4 -25.7
22200 248.80 0 40.2 2.1 49 6 8.5 0.35 28.8 -26.1
22400 253.10 0 40.8 2.1 49 6 8.6 0.35 29.2 -26.5
22600 257.40 0 41.3 2.1 48 6 8.7 0.35 29.6 -26.8
22800 261.80 0 41.9 2.1 48 6 8.8 0.36 29.7 -27.1
23000 266.10 0 42.4 2.1 48 6 8.9 0.36 29.8 -27.1
23200 270.50 0 43.0 2.2 47 7 9.0 0.36 29.9 -27.2
23400 275.00 0 43.6 2.1 47 7 9.1 0.37 30.2 -27.4
23600 279.40 0 44.2 2.2 47 7 9.2 0.37 30.6 -27.7
23800 283.90 0 44.7 2.2 46 7 9.3 0.37 31.1 -28.1
24000 288.50 0 45.3 2.2 46 7 9.4 0.38 31.5 -28.5
24200 293.00 0 45.9 2.2 45 7 9.5 0.38 31.6 -28.7
24400 297.60 0 46.5 2.3 45 7 9.7 0.39 31.6 -28.7
24600 302.20 0 47.1 2.3 45 8 9.8 0.39 31.6 -28.8
24800 306.90 0 47.6 2.3 44 8 9.9 0.39 32.0 -28.9
25000 311.60 0 48.2 2.3 44 8 10.0 0.40 32.4 -29.3
25200 316.40 0 48.8 2.3 44 8 10.1 0.40 32.8 -29.8
25400 321.10 0 49.4 2.4 43 8 10.2 0.40 33.3 -30.3
25600 325.90 0 50.0 2.3 43 8 10.3 0.41 33.7 -30.6
25800 330.70 0 50.6 2.4 43 9 10.5 0.41 34.0 -30.9
26000 335.60 0 51.3 2.4 42 9 10.6 0.41 34.3 -31.2
26200 340.40 0 51.9 2.4 42 9 10.7 0.42 34.4 -31.3
26400 345.40 0 52.5 2.4 42 9 10.8 0.42 34.4 -31.4
26600 350.30 0 53.1 2.4 41 9 10.9 0.42 34.6 -31.5
26800 355.30 0 53.7 2.5 41 10 11.1 0.43 35.1 -31.9
27000 360.40 0 54.3 2.5 41 10 11.2 0.43 35.6 -32.4
27200 365.40 0 55.0 2.4 41 10 11.3 0.43 36.2 -32.9
27400 370.50 0 55.6 2.5 40 10 11.5 0.44 36.6 -33.2
27600 375.70 0 56.2 2.6 40 10 11.6 0.44 36.9 -33.5
27800 380.80 0 56.9 2.5 40 11 11.7 0.44 37.3 -33.9
28000 386.00 0 57.5 2.6 40 11 11.8 0.44 37.7 -34.2
28200 391.20 0 58.1 2.6 39 11 12.0 0.45 38.1 -34.7
28400 396.40 0 58.8 2.6 39 11 12.1 0.45 38.5 -35.0
28600 401.70 0 59.4 2.6 39 11 12.3 0.45 38.9 -35.3
28800 407.00 0 60.1 2.6 39 12 12.4 0.46 39.4 -35.6
29000 412.40 0 60.7 2.6 38 12 12.5 0.46 39.8 -35.9
29200 417.70 0 61.4 2.7 38 12 12.7 0.46 40.1 -36.3
29400 423.10 0 62.0 2.7 38 13 12.8 0.46 40.3 -36.7
29600 428.60 0 62.7 2.7 38 13 13.0 0.47 40.6 -37.1
29800 434.00 0 63.4 2.8 37 13 13.1 0.47 41.0 -37.4
30000 439.60 0 64.0 2.7 37 13 13.3 0.47 41.5 -37.9
30200 445.19 0 64.7 2.8 37 14 13.4 0.48 42.0 -38.3
30400 450.70 0 65.4 2.8 37 14 13.6 0.48 42.5 -38.8
30600 456.40 0 66.1 2.8 36 14 13.8 0.48 43.0 -39.4
30800 462.00 0 66.8 2.8 36 14 13.9 0.48 43.8 -40.0
31000 467.70 0 67.4 2.8 36 15 14.1 0.49 44.6 -40.6
31200 473.40 0 68.1 2.8 36 15 14.3 0.49 45.4 -41.2
31400 479.10 0 68.8 2.9 36 15 14.4 0.49 45.9 -41.6
31600 484.90 0 69.5 2.9 35 15 14.6 0.49 46.3 -42.0
31800 490.70 0 70.2 2.9 35 16 14.8 0.49 46.5 -42.2
32000 496.60 0 70.9 2.9 35 16 15.0 0.50 46.6 -42.3
32200 502.50 0 71.6 2.9 34 17 15.2 0.50 46.7 -42.6
32400 508.50 0 72.3 3.0 34 17 15.3 0.50 47.2 -43.0
32600 514.50 0 73.0 3.0 34 17 15.5 0.50 47.9 -43.7
32800 520.60 0 73.8 3.0 34 17 15.7 0.51 48.7 -44.4
33000 526.70 0 74.5 3.0 33 18 15.9 0.51 49.5 -45.0
33200 532.80 0 75.2 3.1 33 18 16.2 0.51 50.3 -45.7
33400 539.00 0 75.9 3.1 33 19 16.4 0.51 51.0 -46.3
33600 545.20 0 76.7 3.1 33 19 16.6 0.51 51.6 -46.8
33800 551.60 0 77.4 3.2 32 19 16.8 0.52 52.2 -47.3
34000 557.90 0 78.2 3.2 32 20 17.0 0.52 52.8 -47.9
34200 564.30 0 78.9 3.2 32 20 17.3 0.52 53.4 -48.4
34400 570.70 0 79.7 3.3 31 21 17.5 0.52 54.0 -48.9
34600 577.20 0 80.4 3.3 31 21 17.8 0.52 54.7 -49.5
34800 583.80 0 81.2 3.4 31 22 18.0 0.52 55.5 -50.2
35000 590.50 0 82.0 3.3 30 22 18.3 0.53 56.3 -51.1
35200 597.20 0 82.8 3.4 30 23 18.6 0.53 56.8 -51.7
35400 604.10 0 83.6 3.5 30 23 18.8 0.53 57.2 -52.0
35600 611.00 0 84.4 3.5 29 24 19.1 0.53 57.8 -52.3
35800 618.00 0 85.2 3.5 29 24 19.4 0.53 58.5 -53.0
36000 625.10 0 86.0 3.6 28 25 19.7 0.53 59.3 -53.7
36200 632.30 0 86.8 3.6 28 26 20.1 0.53 60.1 -54.4
36400 639.60 0 87.7 3.8 27 26 20.4 0.54 60.9 -55.1
36600 647.10 0 88.5 3.8 27 27 20.7 0.54 61.6 -55.8
36800 654.70 0 89.4 3.9 26 28 21.1 0.54 62.4 -56.6
37000 662.40 0 90.3 3.9 26 29 21.5 0.54 63.3 -57.6
37200 670.30 0 91.2 4.0 25 30 21.9 0.54 64.6 -58.6
37400 678.30 0 92.1 4.1 25 31 22.3 0.54 66.0 -59.6
37600 686.50 0 93.0 4.2 24 32 22.7 0.54 67.0 -60.7
37800 695.00 0 94.0 4.3 24 33 23.2 0.54 68.0 -61.7
38000 703.60 0 94.9 4.5 23 34 23.7 0.55 69.1 -62.5
38200 712.50 0 95.9 4.6 22 36 24.2 0.55 70.3 -63.4
38400 721.80 0 96.9 4.7 22 37 24.7 0.55 71.5 -64.6
38600 731.20 0 98.0 4.8 21 38 25.3 0.55 72.9 -65.7
38800 740.60 0 99.0 4.9 21 39 25.9 0.55 74.1 -66.8
39000 750.50 0 100.1 5.2 20 42 26.5 0.55 75.2 -67.5
39200 760.70 0 101.2 5.4 19 44 27.2 0.55 75.6 -68.0
39400 771.40 0 102.4 5.8 18 48 27.9 0.55 76.7 -69.6
39600 782.69 0 103.7 6.3 16 52 28.7 0.55 78.6 -71.1
39800 794.70 0 105.1 7.0 15 58 29.6 0.55 80.1 -72.3
40000 807.80 0 106.6 8.0 13 68 30.7 0.55 81.6 -73.5
40200 821.70 0 108.4 10.1 10 86 32.1 0.55 82.9 -74.6
40250 900.00 0 115.0 9.5 10 82 38.0 0.56 83.5 -75.5
40200 977.70 0 120.3 9.1 11 79 44.0 0.57 84.9 -76.4
40000 989.80 0 121.7 7.1 15 61 45.9 0.57 85.4 -76.9
39800 1000.80 0 122.8 5.9 17 51 47.5 0.58 85.7 -77.2
39600 1010.80 0 123.8 5.3 20 45 48.9 0.58 85.8 -77.3
39400 1020.00 0 124.6 4.8 22 41 50.2 0.58 85.8 -77.4
39200 1028.60 0 125.3 4.4 23 38 51.4 0.59 85.5 -77.2
39000 1036.60 0 126.0 4.1 25 35 52.4 0.59 85.2 -77.0
38800 1044.20 0 126.7 3.9 26 33 53.4 0.59 84.8 -76.7
38600 1051.40 0 127.3 3.6 28 31 54.2 0.60 84.3 -76.2
38400 1058.30 0 127.8 3.5 29 29 55.1 0.60 83.7 -75.6
38200 1065.00 0 128.4 3.4 30 28 56.0 0.60 83.1 -75.0
38000 1071.30 0 128.9 3.2 32 27 56.8 0.61 82.5 -74.6
37800 1077.50 0 129.3 3.1 33 26 57.7 0.61 82.0 -74.1
37600 1083.40 0 129.8 3.0 34 24 58.5 0.61 81.5 -73.7
37400 1089.10 0 130.2 2.8 35 23 59.3 0.62 80.9 -73.3
37200 1094.70 0 130.6 2.8 36 23 60.1 0.62 80.1 -72.9
37000 1099.90 0 131.0 2.7 37 22 60.9 0.62 79.3 -72.5
36800 1105.20 0 131.4 2.7 39 21 61.7 0.63 79.0 -72.0
36600 1110.30 0 131.8 2.5 40 20 62.5 0.63 78.8 -71.5
36400 1115.20 0 132.2 2.5 41 20 63.2 0.63 78.5 -71.0
36200 1120.10 0 132.5 2.5 42 19 63.9 0.64 78.0 -70.5
36000 1124.90 0 132.8 2.3 42 19 64.6 0.64 77.3 -70.1
35800 1129.50 0 133.2 2.4 43 18 65.2 0.64 76.7 -69.6
35600 1134.00 0 133.5 2.3 44 18 65.8 0.65 75.9 -69.2
35400 1138.40 0 133.8 2.2 45 17 66.4 0.65 75.1 -68.7
35200 1142.80 0 134.0 2.2 46 17 66.9 0.65 74.4 -68.2
35000 1147.10 0 134.3 2.1 47 16 67.4 0.66 73.9 -67.8
34800 1151.20 0 134.6 2.1 48 16 68.0 0.66 73.5 -67.2
34600 1155.30 0 134.9 2.0 49 15 68.6 0.67 73.2 -66.9
34400 1159.30 0 135.1 2.0 50 15 69.4 0.67 72.9 -66.5
34200 1163.30 0 135.4 2.0 52 14 70.2 0.67 72.6 -66.1
34000 1167.00 0 135.6 1.9 53 14 70.9 0.68 72.2 -65.8
33800 1170.80 0 135.8 1.9 54 14 71.5 0.68 71.7 -65.5
33600 1174.50 0 136.1 1.8 55 13 71.5 0.69 71.3 -65.2
33400 1178.10 0 136.3 1.8 56 13 71.2 0.69 70.8 -64.8
33200 1181.60 0 136.5 1.8 57 13 70.8 0.70 70.3 -64.5
33000 1185.10 0 136.7 1.8 58 12 70.4 0.70 69.9 -64.1
32800 1188.50 0 136.9 1.7 59 12 70.1 0.71 69.3 -63.7
32600 1191.90 0 137.1 1.7 59 12 70.0 0.71 68.8 -63.3
32400 1195.30 0 137.3 1.7 60 12 70.0 0.72 68.3 -62.9
32200 1198.60 0 137.5 1.7 60 11 69.9 0.72 67.8 -62.5
32000 1201.90 0 137.7 1.7 60 11 70.0 0.73 67.4 -62.4
31800 1205.20 0 137.9 1.7 61 11 70.1 0.73 67.2 -62.2
31600 1208.60 0 138.1 1.7 61 11 70.2 0.74 67.0 -62.2
31400 1211.90 0 138.2 1.6 61 11 70.3 0.74 66.9 -62.1
31200 1215.20 0 138.4 1.7 61 11 70.4 0.75 66.7 -62.0
31000 1218.50 0 138.6 1.6 61 11 70.4 0.75 66.6 -61.7
30800 1221.60 0 138.8 1.7 61 10 70.3 0.76 66.2 -61.4
30600 1224.90 0 138.9 1.7 62 10 70.2 0.76 65.9 -61.1
30400 1228.20 0 139.1 1.6 62 10 70.1 0.77 65.6 -60.8
30200 1231.40 0 139.3 1.7 62 10 70.1 0.77 65.2 -60.5
30000 1234.70 0 139.4 1.6 63 10 70.1 0.78 64.9 -60.1
29800 1237.80 0 139.6 1.6 63 10 70.1 0.78 64.6 -59.8
29600 1240.90 0 139.8 1.6 64 10 70.2 0.79 64.2 -59.4
29400 1244.10 0 139.9 1.6 64 9 70.2 0.79 63.8 -59.1
29200 1247.30 0 140.1 1.5 64 9 70.3 0.80 63.4 -58.7
29000 1250.40 0 140.2 1.5 65 9 70.3 0.80 62.9 -58.4
28800 1253.50 0 140.4 1.6 65 9 70.3 0.81 62.5 -58.1
28600 1256.50 0 140.5 1.5 66 9 70.3 0.81 62.0 -57.7
}
} Ende Spaltengruppe
} Ende Standard_Tafel
} Ende Schuss_Tafel
@@ -0,0 +1,2 @@
// Fire_Report: TimerTick=58908 AmmuniationType=4 Azimut=79,7 Elevation=67,1 Temperatur=25 RoundsAmm1=0 RoundsAmm2=7
E3 01 1C E6 04 9F 02 00 00 1D 03 00 00 19 00 00 00 07
@@ -0,0 +1,436 @@
###########################################################################
# #
# Projekt TES : File "VLAP-M64Incr5-TableE.sus" zur Munition "M64" #
# #
# Bei der Auspraegung des Ballistik-Moduls vereinbarte Bezeichnungen #
# Tafel_Namen : ENTFERNUNG, AUFSATZ, FLUGZEIT, -- obligatorisch #
# VORHALT -- projektspezifisch #
# Param_Namen : DELTA_V0, LUFTTEMP, LUFTDRUCK, #
# LAENGSWIND, QUERWIND, #
# PULVERTEMP -- Korrektur-Parameter #
# #
###########################################################################
# Aenderung/Stand: 09.07.14-07:52
Schuss_Tafel =
{
Munition = "VLAP-M64"
Version = "VLAP M64 Incr5 Table-E"
Muni_Parameter = { Kaliber = 155.0 Masse = 46.30 V0 = 912.0 }
Std_Parameter = { DELTA_V0 = 0.0
LUFTTEMP = 15.0
LUFTDRUCK = 1013.25
LAENGSWIND= 0.0
QUERWIND = 0.0
PULVERTEMP= 21.1 }
Entfernung_Range= { Min = 100.0 Max = 54100.0 Delta = 100.0 Scheitel = 54184.0 }
Ballistik = "Parabel"
###########################################################################
Standard_Tafel =
{
Spaltengruppe =
{ Belegung = { AUFSATZ = (2) [-]
VORHALT = (3) [-]
FLUGZEIT = (4)
DELTA_RGE = (5) [-]
DELTA_ELEV = (6)
FORK = (7) [-]
DRIFT = (8) [-]
}
Zeilenlaenge = 8
Datenblock =
{
#
# RGE ELEV TOF DELTA DELTA FORK BEARING-CORR. RANGE-CORR.
# ENTF AUFSATZ VORHALT FLUGZEIT RGE ELEV DRIFT CW DEC INC
# [m] [mil] [mil] [sec] [mil] [m] [mil] [mil] [mil] [m] [m]
#
25000 234.4 0 39.7 1.8 57 10 9.2 0.34 2.9 -2.8
25100 236.2 0 40.0 1.8 56 11 9.2 0.35 2.9 -2.8
25200 238.0 0 40.2 1.8 56 11 9.3 0.35 2.9 -2.8
25300 239.8 0 40.5 1.8 55 11 9.3 0.35 2.9 -2.7
25400 241.7 0 40.8 1.8 54 11 9.4 0.35 2.9 -2.7
25500 243.5 0 41.1 1.8 54 11 9.4 0.36 2.8 -2.7
25600 245.4 0 41.4 1.9 53 11 9.4 0.36 2.8 -2.7
25700 247.3 0 41.7 1.9 53 11 9.5 0.36 2.8 -2.7
25800 249.2 0 42.0 1.9 53 11 9.5 0.37 2.7 -2.7
25900 251.1 0 42.3 1.9 52 11 9.6 0.37 2.7 -2.7
26000 253.0 0 42.6 1.9 52 11 9.6 0.37 2.7 -2.7
26100 255.0 0 42.9 1.9 52 11 9.7 0.38 2.7 -2.7
26200 256.9 0 43.2 1.9 52 11 9.7 0.38 2.7 -2.7
26300 258.9 0 43.5 1.9 51 11 9.8 0.38 2.7 -2.6
26400 260.8 0 43.8 1.9 51 11 9.8 0.38 2.7 -2.6
26500 262.7 0 44.1 1.9 51 11 9.9 0.38 2.6 -2.6
26600 264.7 0 44.4 2.0 50 11 9.9 0.38 2.6 -2.6
26700 266.7 0 44.7 2.0 50 12 10.0 0.39 2.6 -2.6
26800 268.6 0 45.0 2.0 50 12 10.0 0.39 2.6 -2.6
26900 270.6 0 45.3 2.0 49 12 10.1 0.39 2.6 -2.5
27000 272.6 0 45.6 2.0 49 12 10.1 0.40 2.6 -2.5
27100 274.7 0 45.9 2.1 49 12 10.2 0.40 2.6 -2.5
27200 276.8 0 46.2 2.1 48 12 10.2 0.40 2.5 -2.5
27300 278.9 0 46.5 2.1 48 12 10.3 0.41 2.5 -2.5
27400 281.0 0 46.8 2.1 48 13 10.3 0.41 2.5 -2.5
27500 283.1 0 47.2 2.1 47 13 10.4 0.41 2.5 -2.5
27600 285.3 0 47.5 2.1 47 13 10.4 0.42 2.5 -2.4
27700 287.5 0 47.8 2.1 47 13 10.5 0.42 2.5 -2.4
27700 287.5 0 47.8 2.1 47 13 10.5 0.42 2.5 -2.4
27800 289.7 0 48.1 2.1 47 13 10.5 0.42 2.5 -2.4
27900 291.8 0 48.4 2.1 47 13 10.6 0.42 2.5 -2.4
28000 294.0 0 48.8 2.1 46 13 10.6 0.42 2.5 -2.4
28100 296.2 0 49.1 2.1 46 13 10.7 0.43 2.4 -2.4
28200 298.3 0 49.4 2.1 46 13 10.7 0.43 2.4 -2.4
28300 300.5 0 49.7 2.1 46 13 10.7 0.43 2.4 -2.4
28400 302.6 0 50.0 2.1 46 13 10.8 0.43 2.4 -2.4
28500 304.7 0 50.3 2.2 46 13 10.8 0.43 2.4 -2.4
28600 306.9 0 50.6 2.2 45 13 10.9 0.44 2.4 -2.4
28700 309.0 0 51.0 2.2 45 13 10.9 0.44 2.4 -2.3
28800 311.2 0 51.3 2.3 45 14 11.0 0.44 2.4 -2.3
28900 313.5 0 51.6 2.3 45 14 11.0 0.44 2.4 -2.3
29000 315.8 0 51.9 2.3 45 14 11.1 0.45 2.4 -2.3
29100 318.2 0 52.3 2.3 44 14 11.1 0.45 2.4 -2.3
29200 320.5 0 52.6 2.3 44 14 11.2 0.45 2.4 -2.3
29300 322.8 0 52.9 2.3 44 14 11.2 0.45 2.4 -2.3
29400 325.0 0 53.3 2.3 44 14 11.3 0.46 2.3 -2.3
29500 327.3 0 53.6 2.3 44 14 11.3 0.46 2.3 -2.3
29600 329.5 0 53.9 2.3 44 14 11.4 0.46 2.3 -2.3
29700 331.8 0 54.2 2.3 44 14 11.4 0.46 2.3 -2.3
29800 334.1 0 54.6 2.3 44 14 11.5 0.46 2.3 -2.2
29900 336.4 0 54.9 2.3 44 14 11.5 0.47 2.3 -2.2
30000 338.7 0 55.2 2.3 44 14 11.6 0.47 2.3 -2.2
30100 341.0 0 55.5 2.3 43 14 11.6 0.47 2.3 -2.2
30200 343.3 0 55.9 2.3 43 14 11.7 0.47 2.3 -2.2
30300 345.6 0 56.2 2.3 43 14 11.7 0.48 2.3 -2.2
30400 347.9 0 56.5 2.3 43 15 11.8 0.48 2.3 -2.2
30500 350.2 0 56.8 2.3 43 15 11.8 0.48 2.3 -2.2
30500 350.2 0 56.8 2.3 43 15 11.8 0.48 2.3 -2.2
30600 352.5 0 57.2 2.3 43 15 11.9 0.48 2.3 -2.2
30700 354.9 0 57.5 2.3 43 15 11.9 0.48 2.3 -2.2
30800 357.2 0 57.8 2.3 43 15 12.0 0.49 2.3 -2.2
30900 359.5 0 58.1 2.3 43 15 12.0 0.49 2.3 -2.2
31000 361.9 0 58.5 2.3 43 15 12.1 0.49 2.3 -2.2
31100 364.2 0 58.8 2.3 43 15 12.1 0.49 2.3 -2.2
31200 366.5 0 59.1 2.3 43 15 12.2 0.50 2.3 -2.2
31300 368.9 0 59.5 2.3 43 15 12.2 0.50 2.2 -2.2
31400 371.2 0 59.8 2.3 43 15 12.3 0.50 2.2 -2.2
31500 373.6 0 60.1 2.3 43 15 12.3 0.50 2.2 -2.2
31600 375.9 0 60.4 2.3 43 15 12.4 0.51 2.2 -2.2
31700 378.3 0 60.8 2.3 43 15 12.4 0.51 2.2 -2.2
31800 380.6 0 61.1 2.3 43 15 12.5 0.51 2.2 -2.2
31900 383.0 0 61.4 2.3 43 15 12.5 0.51 2.2 -2.2
32000 385.3 0 61.7 2.3 43 15 12.6 0.52 2.2 -2.2
32100 387.6 0 62.1 2.4 43 15 12.6 0.52 2.2 -2.2
32200 390.0 0 62.4 2.4 43 15 12.7 0.52 2.2 -2.2
32300 392.3 0 62.7 2.4 43 16 12.7 0.52 2.2 -2.2
32400 394.7 0 63.1 2.4 43 16 12.8 0.52 2.2 -2.2
32500 397.0 0 63.4 2.4 43 16 12.8 0.53 2.2 -2.2
32600 399.4 0 63.7 2.4 43 16 12.9 0.53 2.2 -2.2
32700 401.7 0 64.0 2.4 43 16 12.9 0.53 2.2 -2.2
32800 404.1 0 64.4 2.4 43 16 13.0 0.53 2.2 -2.2
32900 406.5 0 64.7 2.4 43 16 13.0 0.53 2.2 -2.2
33000 408.8 0 65.0 2.4 43 16 13.1 0.53 2.2 -2.2
33100 411.2 0 65.3 2.4 43 16 13.1 0.53 2.2 -2.2
33200 413.5 0 65.7 2.4 43 16 13.2 0.53 2.2 -2.2
33200 413.5 0 65.7 2.4 43 16 13.2 0.53 2.2 -2.2
33300 415.9 0 66.0 2.3 43 16 13.2 0.54 2.2 -2.2
33400 418.2 0 66.3 2.3 43 16 13.3 0.54 2.2 -2.2
33500 420.5 0 66.6 2.3 43 16 13.3 0.54 2.2 -2.2
33600 422.9 0 67.0 2.3 43 16 13.4 0.54 2.2 -2.2
33700 425.2 0 67.3 2.3 43 16 13.4 0.55 2.2 -2.2
33800 427.5 0 67.6 2.3 43 16 13.5 0.55 2.2 -2.2
33900 429.9 0 67.9 2.3 43 16 13.6 0.55 2.2 -2.2
34000 432.2 0 68.3 2.3 43 16 13.6 0.55 2.2 -2.2
34100 434.6 0 68.6 2.3 43 16 13.7 0.55 2.2 -2.2
34200 436.9 0 68.9 2.3 43 16 13.7 0.55 2.2 -2.2
34300 439.2 0 69.2 2.3 43 16 13.8 0.55 2.2 -2.2
34400 441.6 0 69.5 2.3 43 16 13.8 0.55 2.2 -2.2
34500 443.9 0 69.9 2.3 43 16 13.9 0.55 2.3 -2.2
34600 446.2 0 70.2 2.3 43 16 13.9 0.56 2.3 -2.2
34700 448.5 0 70.5 2.3 43 16 14.0 0.56 2.3 -2.2
34800 450.8 0 70.8 2.3 43 16 14.0 0.56 2.3 -2.2
34900 453.1 0 71.2 2.3 43 16 14.1 0.56 2.3 -2.2
35000 455.5 0 71.5 2.3 43 17 14.1 0.56 2.3 -2.2
35100 457.8 0 71.8 2.3 43 17 14.2 0.56 2.3 -2.2
35200 460.1 0 72.1 2.3 43 17 14.3 0.56 2.3 -2.2
35300 462.4 0 72.4 2.3 43 17 14.3 0.56 2.3 -2.2
35400 464.7 0 72.8 2.3 44 17 14.4 0.56 2.3 -2.2
35500 467.0 0 73.1 2.3 44 17 14.4 0.57 2.3 -2.2
35600 469.3 0 73.4 2.3 44 17 14.5 0.57 2.3 -2.2
35700 471.6 0 73.7 2.3 44 17 14.5 0.57 2.3 -2.2
35800 473.9 0 74.0 2.3 44 17 14.6 0.57 2.3 -2.2
35900 476.1 0 74.3 2.3 44 17 14.7 0.58 2.3 -2.2
36000 478.4 0 74.7 2.3 44 17 14.7 0.58 2.3 -2.2
36100 480.7 0 75.0 2.3 44 17 14.8 0.58 2.3 -2.2
36200 483.0 0 75.3 2.3 44 17 14.8 0.58 2.4 -2.2
36300 485.3 0 75.6 2.3 44 17 14.9 0.58 2.4 -2.3
36400 487.5 0 75.9 2.3 44 17 14.9 0.58 2.4 -2.3
36500 489.8 0 76.2 2.3 44 17 15.0 0.58 2.4 -2.3
36600 492.1 0 76.5 2.3 44 17 15.1 0.58 2.4 -2.3
36700 494.3 0 76.9 2.3 44 17 15.1 0.58 2.4 -2.3
36800 496.6 0 77.2 2.3 44 17 15.2 0.58 2.4 -2.3
36900 498.8 0 77.5 2.3 44 17 15.2 0.58 2.4 -2.3
37000 501.1 0 77.8 2.3 45 17 15.3 0.58 2.4 -2.3
37100 503.3 0 78.1 2.3 45 17 15.4 0.58 2.4 -2.3
37200 505.6 0 78.4 2.3 45 17 15.4 0.59 2.4 -2.3
37300 507.8 0 78.7 2.3 45 17 15.5 0.59 2.4 -2.3
37400 510.0 0 79.0 2.3 45 17 15.5 0.59 2.4 -2.3
37500 512.3 0 79.4 2.2 45 17 15.6 0.59 2.4 -2.3
37600 514.5 0 79.7 2.2 45 17 15.7 0.59 2.4 -2.3
37700 516.7 0 80.0 2.2 45 17 15.7 0.59 2.5 -2.4
37800 518.9 0 80.3 2.2 45 17 15.8 0.59 2.5 -2.4
37900 521.1 0 80.6 2.2 45 17 15.8 0.59 2.5 -2.4
38000 523.3 0 80.9 2.2 46 17 15.9 0.59 2.5 -2.4
38100 525.5 0 81.2 2.2 46 17 16.0 0.60 2.5 -2.4
38200 527.7 0 81.5 2.2 46 17 16.0 0.60 2.5 -2.4
38300 529.9 0 81.8 2.2 46 17 16.1 0.60 2.5 -2.4
38400 532.2 0 82.1 2.2 46 17 16.1 0.60 2.5 -2.4
38500 534.4 0 82.4 2.2 46 17 16.2 0.60 2.5 -2.4
38600 536.6 0 82.7 2.2 46 17 16.3 0.60 2.5 -2.4
38700 538.7 0 83.0 2.1 46 17 16.3 0.60 2.5 -2.4
38800 540.9 0 83.3 2.1 46 17 16.4 0.60 2.5 -2.5
38900 542.9 0 83.6 2.1 46 17 16.5 0.60 2.5 -2.5
39000 545.0 0 83.9 2.1 46 17 16.5 0.60 2.6 -2.5
39100 547.0 0 84.2 2.1 46 17 16.6 0.60 2.6 -2.5
39200 549.1 0 84.5 2.1 46 17 16.6 0.60 2.6 -2.5
39300 551.2 0 84.8 2.1 46 18 16.7 0.60 2.6 -2.5
39400 553.3 0 85.1 2.1 46 18 16.8 0.60 2.6 -2.5
39500 555.5 0 85.4 2.1 46 18 16.8 0.60 2.6 -2.5
39600 557.6 0 85.7 2.1 46 18 16.9 0.60 2.6 -2.5
39700 559.8 0 86.0 2.1 46 18 17.0 0.60 2.6 -2.5
39800 562.1 0 86.3 2.1 46 18 17.0 0.60 2.6 -2.5
39900 564.4 0 86.6 2.1 46 18 17.1 0.60 2.6 -2.5
40000 566.7 0 86.9 2.1 46 18 17.2 0.61 2.6 -2.6
40100 568.9 0 87.2 2.1 46 18 17.3 0.61 2.6 -2.6
40200 571.1 0 87.5 2.1 46 18 17.3 0.61 2.6 -2.6
40300 573.3 0 87.8 2.1 47 18 17.4 0.61 2.6 -2.6
40400 575.4 0 88.1 2.1 47 18 17.5 0.61 2.7 -2.6
40500 577.5 0 88.4 2.1 47 18 17.5 0.61 2.7 -2.6
40600 579.7 0 88.7 2.1 47 18 17.6 0.61 2.7 -2.6
40700 581.8 0 89.0 2.1 47 18 17.7 0.61 2.7 -2.6
40800 583.9 0 89.3 2.1 47 18 17.8 0.61 2.7 -2.6
40900 586.0 0 89.6 2.1 47 18 17.8 0.61 2.7 -2.6
41000 588.1 0 89.9 2.1 47 18 17.9 0.61 2.7 -2.6
41100 590.2 0 90.2 2.1 47 18 18.0 0.61 2.7 -2.6
41200 592.4 0 90.5 2.1 48 18 18.0 0.61 2.7 -2.6
41300 594.5 0 90.8 2.1 48 18 18.1 0.61 2.8 -2.7
41400 596.6 0 91.1 2.1 48 18 18.2 0.61 2.8 -2.7
41500 598.7 0 91.4 2.1 48 18 18.3 0.61 2.8 -2.7
41600 600.7 0 91.6 2.1 48 18 18.3 0.61 2.8 -2.7
41700 602.7 0 91.9 2.1 48 18 18.4 0.61 2.8 -2.7
41800 604.6 0 92.2 2.1 48 18 18.5 0.61 2.8 -2.7
41900 606.6 0 92.5 2.1 48 18 18.6 0.61 2.8 -2.7
42000 608.6 0 92.8 2.1 48 18 18.6 0.61 2.8 -2.7
42100 610.6 0 93.0 2.1 48 18 18.7 0.61 2.8 -2.7
42200 612.8 0 93.3 2.1 48 18 18.8 0.61 2.8 -2.7
42300 615.1 0 93.6 2.1 48 18 18.9 0.61 2.8 -2.7
42400 617.3 0 93.9 2.1 48 18 19.0 0.61 2.8 -2.7
42500 619.5 0 94.2 2.1 48 18 19.0 0.61 2.8 -2.7
42600 621.7 0 94.5 2.1 48 18 19.1 0.61 2.8 -2.7
42700 623.8 0 94.8 2.1 48 18 19.2 0.61 2.9 -2.8
42800 625.9 0 95.1 2.1 48 18 19.3 0.61 2.9 -2.8
42900 627.9 0 95.4 2.0 48 18 19.4 0.61 2.9 -2.8
43000 629.9 0 95.7 2.0 48 18 19.4 0.61 2.9 -2.8
43100 631.9 0 96.0 2.0 49 18 19.5 0.61 2.9 -2.8
43200 633.8 0 96.2 2.0 49 18 19.6 0.61 2.9 -2.8
43300 635.7 0 96.5 2.0 49 18 19.7 0.61 3.0 -2.8
43400 637.7 0 96.8 2.0 49 18 19.8 0.61 3.0 -2.9
43500 639.7 0 97.0 2.0 49 18 19.8 0.61 3.0 -2.9
43600 641.8 0 97.3 2.0 49 18 19.9 0.61 3.0 -2.9
43700 644.1 0 97.6 2.0 49 18 20.0 0.61 3.0 -2.9
43800 646.3 0 97.9 2.0 49 18 20.1 0.61 3.0 -2.9
43900 648.5 0 98.2 2.0 49 18 20.2 0.61 3.0 -2.9
44000 650.6 0 98.5 2.0 49 18 20.3 0.61 3.0 -2.9
44100 652.5 0 98.8 2.0 49 18 20.4 0.61 3.0 -2.9
44200 654.4 0 99.1 2.0 49 18 20.5 0.61 3.1 -2.9
44300 656.3 0 99.3 2.0 49 18 20.6 0.61 3.1 -3.0
44400 658.2 0 99.6 2.0 50 18 20.6 0.61 3.1 -3.0
44500 660.1 0 99.9 2.0 50 18 20.7 0.61 3.1 -3.0
44600 662.2 0 100.2 2.0 50 18 20.8 0.61 3.1 -3.0
44700 664.4 0 100.4 2.0 50 18 20.9 0.61 3.2 -3.0
44800 666.5 0 100.7 2.0 50 18 21.0 0.61 3.2 -3.0
44900 668.7 0 101.0 2.0 50 18 21.1 0.61 3.2 -3.0
45000 670.8 0 101.3 2.0 50 18 21.2 0.61 3.2 -3.1
45100 672.8 0 101.6 2.0 50 18 21.3 0.61 3.2 -3.1
45200 674.8 0 101.8 2.0 50 18 21.4 0.61 3.2 -3.1
45300 676.8 0 102.1 2.0 50 18 21.5 0.61 3.3 -3.1
45400 678.7 0 102.4 2.0 50 18 21.6 0.61 3.3 -3.1
45500 680.6 0 102.6 2.0 50 18 21.7 0.61 3.3 -3.2
45600 682.4 0 102.9 2.0 50 19 21.8 0.61 3.3 -3.2
45700 684.2 0 103.1 2.0 50 19 21.9 0.61 3.3 -3.2
45800 686.0 0 103.4 2.0 50 19 22.0 0.61 3.3 -3.2
45900 687.9 0 103.7 2.0 50 19 22.0 0.61 3.3 -3.2
46000 689.8 0 103.9 2.0 51 19 22.1 0.61 3.3 -3.2
46100 691.8 0 104.2 2.0 51 19 22.2 0.61 3.3 -3.2
46200 693.9 0 104.5 2.0 51 19 22.3 0.61 3.4 -3.2
46300 696.1 0 104.8 2.0 51 19 22.5 0.61 3.4 -3.2
46400 698.2 0 105.0 2.0 50 19 22.6 0.61 3.4 -3.2
46500 700.4 0 105.3 2.0 50 19 22.7 0.61 3.4 -3.2
46600 702.4 0 105.6 2.0 50 19 22.8 0.61 3.4 -3.2
46700 704.3 0 105.9 2.0 50 19 22.9 0.61 3.5 -3.2
46800 706.3 0 106.1 2.0 50 19 23.0 0.60 3.5 -3.2
46900 708.3 0 106.4 2.0 50 19 23.1 0.60 3.5 -3.2
47000 710.2 0 106.7 2.0 50 19 23.2 0.60 3.5 -3.2
47100 712.2 0 106.9 2.0 50 19 23.3 0.60 3.5 -3.2
47200 714.2 0 107.2 2.0 50 19 23.4 0.60 3.5 -3.2
47300 716.2 0 107.5 2.0 49 19 23.5 0.60 3.5 -3.3
47400 718.2 0 107.8 2.0 49 19 23.6 0.60 3.5 -3.3
47500 720.3 0 108.0 2.0 49 19 23.8 0.60 3.5 -3.3
47600 722.3 0 108.3 2.0 49 19 23.9 0.60 3.5 -3.3
47700 724.3 0 108.6 2.0 49 19 24.0 0.60 3.5 -3.3
47800 726.3 0 108.8 2.0 49 20 24.1 0.60 3.5 -3.3
47900 728.3 0 109.1 2.0 49 20 24.2 0.60 3.5 -3.3
48000 730.4 0 109.4 2.0 49 20 24.3 0.60 3.5 -3.3
48100 732.4 0 109.7 2.0 49 20 24.5 0.60 3.5 -3.3
48200 734.5 0 109.9 2.0 49 20 24.6 0.60 3.5 -3.4
48300 736.5 0 110.2 2.0 49 20 24.7 0.60 3.5 -3.4
48400 738.6 0 110.5 2.0 48 20 24.8 0.60 3.5 -3.4
48500 740.6 0 110.8 2.1 48 20 24.9 0.60 3.5 -3.4
48600 742.7 0 111.0 2.1 48 20 25.1 0.60 3.5 -3.4
48700 744.8 0 111.3 2.1 48 21 25.2 0.60 3.5 -3.4
48800 746.9 0 111.6 2.1 48 21 25.3 0.60 3.5 -3.4
48900 749.0 0 111.9 2.1 47 21 25.5 0.60 3.5 -3.4
49000 751.1 0 112.2 2.1 47 21 25.6 0.60 3.5 -3.4
49100 753.2 0 112.4 2.1 47 21 25.7 0.60 3.5 -3.5
49200 755.3 0 112.7 2.1 47 21 25.9 0.59 3.5 -3.5
49300 757.5 0 113.0 2.1 47 21 26.0 0.59 3.5 -3.5
49400 759.6 0 113.3 2.1 47 21 26.2 0.59 3.5 -3.5
49500 761.8 0 113.6 2.1 47 21 26.3 0.59 3.5 -3.5
49600 764.0 0 113.9 2.1 47 22 26.4 0.59 3.5 -3.5
49700 766.2 0 114.2 2.1 46 22 26.6 0.59 3.5 -3.5
49800 768.4 0 114.4 2.1 46 22 26.7 0.59 3.5 -3.5
49900 770.5 0 114.7 2.1 46 22 26.9 0.59 3.5 -3.5
50000 772.5 0 115.0 2.1 45 22 27.0 0.59 3.5 -3.5
50100 774.5 0 115.3 2.1 45 23 27.2 0.59 3.5 -3.5
50200 776.6 0 115.6 2.2 44 23 27.3 0.59 3.5 -3.5
50300 778.7 0 115.8 2.3 44 23 27.5 0.59 3.5 -3.5
50400 780.9 0 116.1 2.4 43 23 27.6 0.59 3.5 -3.5
50500 783.5 0 116.5 2.4 42 23 27.8 0.59 3.5 -3.4
50600 786.2 0 116.8 2.5 42 24 28.0 0.59 3.6 -3.4
50700 788.9 0 117.1 2.5 41 24 28.2 0.59 3.6 -3.4
50800 791.4 0 117.5 2.5 41 24 28.3 0.59 3.6 -3.4
50900 793.9 0 117.8 2.5 40 25 28.5 0.59 3.6 -3.3
51000 796.3 0 118.1 2.5 40 25 28.7 0.58 3.6 -3.3
51100 798.8 0 118.4 2.5 39 25 28.9 0.58 3.6 -3.3
51200 801.3 0 118.7 2.5 39 26 29.1 0.58 3.6 -3.3
51300 803.8 0 119.1 2.5 39 26 29.3 0.58 3.6 -3.3
51400 806.3 0 119.4 2.6 38 27 29.5 0.58 3.5 -3.3
51500 808.9 0 119.7 2.6 38 27 29.7 0.58 3.5 -3.4
51600 811.5 0 120.1 2.7 37 27 29.9 0.58 3.5 -3.3
51700 814.2 0 120.4 2.7 37 28 30.1 0.58 3.5 -3.3
51800 816.9 0 120.7 2.8 36 28 30.3 0.58 3.5 -3.3
51900 819.7 0 121.1 2.8 36 28 30.5 0.58 3.5 -3.3
52000 822.5 0 121.5 2.9 35 29 30.8 0.58 3.5 -3.3
52100 825.4 0 121.8 2.9 35 30 31.0 0.58 3.5 -3.3
52200 828.3 0 122.2 3.0 34 30 31.3 0.58 3.4 -3.3
52300 831.2 0 122.6 3.0 34 30 31.5 0.58 3.4 -3.3
52400 834.3 0 122.9 3.1 33 31 31.8 0.58 3.4 -3.2
52500 837.4 0 123.3 3.1 32 31 32.1 0.58 3.4 -3.2
52600 840.6 0 123.7 3.2 32 33 32.4 0.58 3.4 -3.2
52700 843.9 0 124.1 3.2 32 35 32.7 0.58 3.4 -3.2
52800 847.3 0 124.6 3.3 31 36 33.0 0.58 3.4 -3.2
52900 850.6 0 125.0 3.4 31 37 33.3 0.58 3.3 -3.2
53000 853.5 0 125.4 3.6 30 38 33.6 0.58 3.3 -3.1
53100 856.5 0 125.7 3.8 29 39 33.9 0.58 3.3 -3.1
53200 859.8 0 126.2 4.0 28 43 34.3 0.58 3.3 -3.1
53300 864.6 0 126.7 4.3 27 45 34.8 0.58 3.3 -3.0
53400 870.3 0 127.4 4.5 25 47 35.3 0.57 3.3 -3.0
53500 875.0 0 127.9 4.8 23 47 35.8 0.57 3.2 -2.9
53600 879.6 0 128.5 5.0 21 48 36.3 0.57 3.2 -2.9
53700 883.5 0 129.0 6.0 19 53 36.8 0.57 3.2 -2.9
53800 887.7 0 129.5 8.0 17 58 37.4 0.57 3.1 -2.9
53900 895.1 0 130.4 11.6 14 64 38.1 0.57 3.0 -2.8
54000 903.1 0 131.3 16.4 14 71 39.6 0.57 2.9 -2.8
54100 908.9 0 132.0 22.8 13 72 41.7 0.58 2.9 -2.8
54184 948.6 0 135.3 29.4 12 73 44.0 0.58 2.5 -2.3
54100 967.8 0 138.5 13.6 13 72 46.3 0.58 2.3 -2.0
54000 975.8 0 139.3 7.3 14 71 48.6 0.59 2.3 -1.9
53900 982.4 0 140.0 6.1 16 60 50.3 0.59 2.2 -1.8
53800 988.0 0 140.5 4.9 20 53 51.2 0.59 2.1 -1.8
53700 992.2 0 140.9 4.2 23 46 52.1 0.59 2.0 -1.7
53600 995.8 0 141.3 3.9 25 41 52.8 0.60 1.9 -1.7
53500 999.3 0 141.6 3.7 26 38 53.5 0.60 1.9 -1.6
53400 1003.1 0 142.0 3.6 27 36 54.2 0.60 1.8 -1.6
53300 1007.0 0 142.3 3.5 28 35 54.9 0.60 1.8 -1.5
53200 1010.8 0 142.7 3.4 28 34 55.6 0.60 1.7 -1.5
53100 1014.2 0 143.0 3.3 29 33 56.3 0.60 1.7 -1.4
53000 1017.5 0 143.3 3.2 31 32 56.9 0.61 1.7 -1.3
52900 1020.7 0 143.6 3.1 32 30 57.6 0.61 1.6 -1.3
52800 1023.8 0 143.9 3.0 33 30 58.2 0.61 1.6 -1.2
52700 1026.7 0 144.2 2.9 34 29 58.8 0.61 1.5 -1.2
52600 1029.6 0 144.5 2.8 36 28 59.3 0.61 1.5 -1.2
52500 1032.3 0 144.7 2.7 36 27 59.9 0.61 1.4 -1.1
52400 1035.0 0 145.0 2.7 37 26 60.4 0.62 1.4 -1.1
52300 1037.5 0 145.2 2.6 38 25 61.0 0.62 1.3 -1.0
52200 1040.0 0 145.4 2.6 39 25 61.5 0.62 1.3 -1.0
52100 1042.5 0 145.6 2.5 40 24 62.0 0.62 1.3 -1.0
52000 1044.9 0 145.8 2.5 41 23 62.5 0.62 1.3 -1.0
51900 1047.2 0 146.0 2.4 42 23 63.1 0.63 1.2 -1.0
51800 1049.6 0 146.2 2.4 43 22 63.6 0.63 1.2 -0.9
51700 1052.2 0 146.5 2.3 44 22 64.2 0.63 1.2 -0.9
51600 1054.8 0 146.7 2.3 45 21 64.8 0.63 1.2 -0.8
51500 1057.3 0 147.0 2.2 46 21 65.3 0.63 1.1 -0.7
51400 1059.7 0 147.2 2.2 47 20 65.8 0.63 1.1 -0.7
51300 1061.6 0 147.3 2.1 48 20 66.3 0.63 1.1 -0.6
51200 1063.5 0 147.5 2.1 49 19 66.7 0.63 1.0 -0.6
51100 1065.3 0 147.6 2.0 50 19 67.2 0.64 1.0 -0.6
51000 1067.0 0 147.7 2.0 50 18 67.6 0.64 0.9 -0.6
50900 1068.8 0 147.9 2.0 51 18 68.1 0.64 0.9 -0.6
50800 1070.7 0 148.0 2.0 52 18 68.5 0.64 0.8 -0.5
50700 1072.9 0 148.2 1.9 53 17 69.0 0.64 0.8 -0.5
50600 1075.0 0 148.4 1.9 54 17 69.5 0.65 0.8 -0.5
50500 1077.1 0 148.6 1.9 54 17 70.0 0.65 0.8 -0.5
50400 1079.2 0 148.8 1.9 55 16 70.5 0.65 0.7 -0.5
50300 1081.0 0 148.9 1.8 56 16 70.9 0.65 0.7 -0.5
50200 1082.7 0 149.1 1.8 57 16 71.4 0.65 0.7 -0.5
50100 1084.3 0 149.2 1.7 58 16 71.8 0.65 0.7 -0.5
50000 1085.9 0 149.3 1.7 59 15 72.2 0.66 0.6 -0.4
49900 1087.5 0 149.4 1.7 59 15 72.6 0.66 0.6 -0.4
49800 1089.0 0 149.5 1.6 60 15 73.0 0.66 0.6 -0.4
49700 1090.6 0 149.6 1.6 61 15 73.4 0.66 0.6 -0.4
49600 1092.3 0 149.7 1.6 61 15 73.8 0.66 0.6 -0.4
49500 1093.9 0 149.9 1.6 62 14 74.3 0.67 0.6 -0.3
49400 1095.6 0 150.0 1.6 62 14 74.7 0.67 0.5 -0.3
49300 1097.2 0 150.1 1.6 62 14 75.1 0.67 0.5 -0.3
49200 1098.8 0 150.3 1.6 63 14 75.6 0.68 0.5 -0.3
49100 1100.5 0 150.4 1.6 63 14 76.0 0.68 0.5 -0.2
49000 1102.1 0 150.5 1.6 63 14 76.4 0.68 0.5 -0.2
48900 1103.7 0 150.6 1.6 64 13 76.8 0.68 0.4 -0.2
48800 1105.2 0 150.7 1.6 64 13 77.2 0.69 0.4 -0.2
48700 1106.8 0 150.8 1.5 65 13 77.6 0.69 0.4 -0.1
48600 1108.3 0 151.0 1.5 65 13 78.0 0.69 0.4 -0.1
48500 1109.9 0 151.1 1.5 66 13 78.4 0.69 0.3 -0.1
48400 1111.4 0 151.2 1.5 66 13 78.8 0.69 0.3 0.0
48300 1112.9 0 151.3 1.5 67 13 79.2 0.69 0.3 0.0
48200 1114.3 0 151.4 1.5 67 13 79.6 0.69 0.3 0.0
48100 1115.8 0 151.5 1.5 68 13 80.0 0.70 0.3 0.0
48000 1117.3 0 151.6 1.5 68 12 80.4 0.70 0.3 0.0
47900 1118.7 0 151.7 1.5 68 12 80.8 0.70 0.3 0.0
47800 1120.2 0 151.8 1.5 69 12 81.2 0.70 0.3 0.1
47700 1121.6 0 151.9 1.5 69 12 81.5 0.70 0.3 0.1
47600 1123.0 0 152.0 1.5 69 12 81.9 0.70 0.2 0.1
47500 1124.5 0 152.1 1.5 68 12 82.3 0.70 0.2 0.1
47400 1125.9 0 152.2 1.5 68 12 82.6 0.71 0.2 0.1
47300 1127.3 0 152.3 1.5 68 12 83.0 0.71 0.2 0.1
47200 1128.8 0 152.4 1.5 68 12 83.3 0.71 0.2 0.1
47100 1130.2 0 152.5 1.5 67 12 83.7 0.71 0.2 0.1
47000 1131.7 0 152.6 1.5 67 12 84.0 0.71 0.2 0.1
46900 1133.3 0 152.7 1.5 67 11 84.4 0.72 0.1 0.1
46800 1134.8 0 152.8 1.5 67 11 84.8 0.72 0.1 0.1
46700 1136.3 0 153.0 1.4 68 11 85.1 0.72 0.1 0.1
46600 1137.7 0 153.1 1.4 70 11 85.5 0.73 0.0 0.1
46500 1139.2 0 153.2 1.4 71 11 85.8 0.73 0.0 0.1
46400 1140.6 0 153.3 1.4 73 11 86.2 0.73 0.0 0.1
46300 1141.9 0 153.3 1.4 75 11 86.5 0.73 0.0 0.1
46200 1143.2 0 153.4 1.3 76 10 86.8 0.73 0.0 0.1
46100 1144.5 0 153.5 1.3 77 10 87.1 0.73 0.0 0.1
46000 1145.7 0 153.6 1.3 78 10 87.4 0.74 0.0 0.1
45900 1147.0 0 153.6 1.3 77 10 87.7 0.74 0.0 0.1
45800 1148.3 0 153.7 1.3 77 10 88.0 0.74 0.0 0.1
45700 1149.6 0 153.8 1.3 76 10 88.3 0.74 0.0 0.1
}
} Ende Spaltengruppe
} Ende Standard_Tafel
} Ende Schuss_Tafel
@@ -0,0 +1,55 @@
/**
* Geopairing Test
* $Id$
* $HeadURL$
* $Author$
* Created by Gerlinde Rudolphus, ESZS, 2016-04-14
*/
#include <stdio.h>
#include <Schusstafel.h>
#include <stdlib.h>
static const double ANGULAR_MIL = 6400.0 / 360.0;
int main(int argc, char **argv)
{
const char *st_directory = "./GeoPairing/firingTables";
const char *st_file = "HE-M1-M64Incr3-TableE";
Schusstafel schusstafel(st_directory,
st_file,
".sus");
Schusstafel::TAFEL_NAMEN_ET tafelName = Schusstafel::ST_AUFSATZ;
if (argc == 1)
{
fprintf(stderr, "Usage: %s <elevation_milrad1> [<elevation_milrad2> ...]\n", argv[0]);
return 1;
}
fprintf(stdout, "Using schusstafel %s/%s.sus\n", st_directory, st_file);
fprintf(stdout, " Range\t Aufsatz\tFlugzeit\t Drift\n");
for (int i = 1; i < argc; i++)
{
float arg_wert = atof(argv[i]) / 1000;
float zielhoehenwinkel = 0.0;
float entfernung1 = 0.0;
float aufsatz1 = 0.0;
float flugzeit1 = 0.0;
float drift1 = 0.0;
float entfernung2 = 0.0;
float aufsatz2 = 0.0;
float flugzeit2 = 0.0;
float drift2 = 0.0;
schusstafel.ST_artillerie(tafelName, arg_wert, zielhoehenwinkel, &entfernung1, &aufsatz1, &flugzeit1, &drift1,
&entfernung2, &aufsatz2, &flugzeit2, &drift2);
fprintf(stdout, "%8.2f\t%8.2f\t%8.2f\t%8.2f\n", entfernung1, aufsatz1 * 1000, flugzeit1, drift1 * 1000);
}
return 0;
}
@@ -0,0 +1,350 @@
Testen der GeoPairing - Software
--------------------------------
Um das Telegram DATENVERKEHR_GEOP_TDS 181 im LogView erzeugen zu koennen, muss in training_area_telegrams.h aus DATENVERKEHR_SRT_TDS = 71 eine 181 gemacht werden und neu compiliert werden.
--------------------------------------------------------------------
1) Mörser
--------------------------------------------------------------------
Transparente Daten vom GeoPairingModul (Stream.txt)
E3 01 1C E6 04 9F 02 00 00 1D 03 00 00 19 00 00 00 07
Daten fuer das Telegramm DATENVERKEHR_GEOP_TDS (Id = 181) in LogView ( Neu TelegemmId 71 GEF_DATENVERKEHR_SRT_TDS OpaquePayloadDataId)
--------------------------------------------------------------------
Ausstg-Nr : 1390
Utm Nordwert: 76400
Utm Ostwert : 92000
Payload-Length: 18
Daten in Integer:
227
1
28
230
4
159
2
0
0
29
3
0
0
25
0
0
0
7
Ausgabe von GeoPairing auf der Konsole
--------------------------------------
playerId = 1390
time = 1327406834
positionLat = 53.0371
positonLon = 8.88367
tr.Data-Size = 18
transparentData = e3011ce6049f0200001d0300001900000007
l_MessageID = e3
l_DeviceID = 1
--> E3 : Firing Report
calculateSingleFire (Mortar)...
Sichtbar auf der Karte
----------------------
Position : 32U MD 92435 76435
Durchmesser : 50m
Guns : 1x1
Munitionsart: Annz
Identifier : _G_48
Telegramm ins Gefechtsfeld
--------------------------
Telegramm Name --> wirkfeld_einzelgeschoss
identitaet 0
kennung 85
bezeichner _G_48
gps_zeit 1327408286
utm_nordwert 76435
utm_ostwert 92435
wirkdurchmesser 30
munitionsart 11
--------------------------------------------------------------------
2) IGLA Target Detection
--------------------------------------------------------------------
Transparente Daten vom GeoPairingModul (Stream.txt)
E3 02 1C E6 04 9F 02 00 00 1D 03 00 00 19 00 00 05 07
Luftfahrzeug
------------
Ausstg-Nr : 7701
Utm Nordwert: 76859
Utm Ostwert : 91600
Hoehe : 120
Daten fuer das Telegramm DATENVERKEHR_GEOP_TDS (Id = 181) in LogView ( Neu TelegemmId 71 GEF_DATENVERKEHR_SRT_TDS OpaquePayloadDataId)
--------------------------------------------------------------------
Ausstg-Nr : 1390
Utm Nordwert: 76850
Utm Ostwert : 91550
Payload-Length: 18
Daten in Integer:
227
2
28
230
4
159
2
0
0
29
3
0
0
25
0
0
5
7
Ausgabe von GeoPairing auf der Konsole
--------------------------------------
playerId = 1390
time = 1327407368
positionLat = 53.0411
positonLon = 8.87397
tr.Data-Size = 18
transparentData = e3021ce6049f0200001d0300001900000507
l_MessageID = e3
l_DeviceID = 2
--> E3 : Firing Report
calculateAirFire (IGLA)...
Step 1: Update the air targets. Count : 1
-> IGLA : Request Target Detection
searchAirTarget (IGLA)...
<-- EC : Report Target Detection
Target Found : 1
Telegramm ins Gefechtsfeld
--------------------------
Telegramm Name --> datenverkehr_tds_geop
identitaet 1390
payload.payload_len 5
payload.payload_val[i] -21
payload.payload_val[i] 5
payload.payload_val[i] 0
payload.payload_val[i] 0
payload.payload_val[i] 0
--------------------------------------------------------------------
3) IGLA Target Fire
--------------------------------------------------------------------
Transparente Daten vom GeoPairingModul (Stream.txt)
E3 03 1C E6 04 9F 02 00 00 1D 03 00 00 19 00 00 05 07
Luftfahrzeug
wichtig: eine 'aktuelle' Position mit dem Messagegenerator erzeugen
Beim Test wurde positions_meldung_flaeflue benutzt
------------
Ausstg-Nr : 7701
Utm Nordwert: 76859
Utm Ostwert : 91600
Hoehe : 120
Daten fuer das Telegramm DATENVERKEHR_GEOP_TDS (Id = 181) in LogView ( Neu TelegemmId 71 GEF_DATENVERKEHR_SRT_TDS OpaquePayloadDataId)
--------------------------------------------------------------------
Ausstg-Nr : 1390
Utm Nordwert: 76850
Utm Ostwert : 91550
Payload-Length: 18
Daten in Integer:
227
3
28
230
4
159
2
0
0
29
3
0
0
25
0
0
5
7
Ausgabe von GeoPairing auf der Konsole
--------------------------------------
playerId = 1390
time = 1327408071
positionLat = 53.0411
positonLon = 8.87397
tr.Data-Size = 18
transparentData = e3031ce6049f0200001d0300001900000507
l_MessageID = e3
l_DeviceID = 3
--> E3 : Firing Report
calculateAirFire (IGLA)...
Step 1: Update the air targets. Count : 2
--> IGLA : Report Target Fire
14682956 [0x7fc28300a7c0] ERROR simtec null - Couldn't create sensorData for DeviceID :
Air Target 7701 in reach and hit
Telegramm ins Gefechtsfeld
--------------------------
Telegramm Name --> ausloesung_dus_treffer
identitaet 7701
gps_zeit 0
munitionsart 101
bek_richtung 28131
bek_entfernung 51
bek_wirkung d
verursacher 1390
--------------------------------------------------------------------
4) MK19
--------------------------------------------------------------------
Transparente Daten vom GeoPairingModul (Stream.txt)
E3 05 1C E6 04 9F 02 00 00 1D 03 00 00 19 00 00 05 07
Daten fuer das Telegramm DATENVERKEHR_GEOP_TDS (Id = 181) in LogView ( Neu TelegemmId 71 GEF_DATENVERKEHR_SRT_TDS OpaquePayloadDataId)
--------------------------------------------------------------------
Ausstg-Nr : 1390
Utm Nordwert: 76850
Utm Ostwert : 91550
Payload-Length: 18
Daten in Integer:
227
5
28
230
4
159
2
0
0
29
3
0
0
25
0
0
5
7
Ausgabe von GeoPairing auf der Konsole
--------------------------------------
playerId = 1390
time = 1327408571
positionLat = 53.0411
positonLon = 8.87397
tr.Data-Size = 18
transparentData = e3051ce6049f0200001d0300001900000507
l_MessageID = e3
l_DeviceID = 5
--> E3 : Firing Report
calculateAreaFire (MK19)...
Sichtbar auf der Karte
----------------------
Position : 32U MD 92826 77076
Dimension : 16 x 10
Aiming axis : 1404
Guns : 1x5
Munitionsart: Az
Identifier : _G_49
Telegramm ins Gefechtsfeld
--------------------------
Telegramm Name --> wirkfeld_flaechendeckendes_feuer
identitaet 0
kennung 86
bezeichner _G_49
gps_zeit 1327408601
wirkdauer 0
utm_nordwert 77076
utm_ostwert 92826
breite 3
tiefe 2
drehwinkel 1103
anzahl_einschlaege 5
wirkkantenlaenge 25
munitionsart 10
--------------------------------------------------------------------
5) AGS-17
--------------------------------------------------------------------
Transparente Daten vom GeoPairingModul (Stream.txt)
E3 08 1C E6 04 9F 02 00 00 1D 03 00 00 19 00 00 05 07
Daten fuer das Telegramm DATENVERKEHR_GEOP_TDS (Id = 181) in LogView ( Neu TelegemmId 71 GEF_DATENVERKEHR_SRT_TDS OpaquePayloadDataId)
--------------------------------------------------------------------
Ausstg-Nr : 1390
Utm Nordwert: 76850
Utm Ostwert : 91550
Payload-Length: 18
Daten in Integer:
227
8
28
230
4
204
1
0
0
132
3
0
0
25
0
0
5
7
@@ -0,0 +1,60 @@
#
# --- Library svcCesGeoPairingImpl --------------------------------------------------------------------------------
#
SET(SRCS_common
GeoPairingDataBase.cpp
GeoPairingDataFireReport.cpp
GeoPairingImplAirTargetCache.cpp
GeoPairingImplAirTarget.cpp
GeoPairingImplAirTargetTracker.cpp
GeoPairingImplAirTargetUpdater.cpp
GeoPairingImplBalistic.cpp
GeoPairingImpl.cpp
GeoPairingImplDted.cpp
GeoPairingImplDummy.cpp
GeoPairingImplFactory.cpp
GeoPairingImplFiredBulletBalistic.cpp
GeoPairingImplFiredBullet.cpp
GeoPairingImplFiredBulletDted.cpp
GeoPairingDataBase.hpp
GeoPairingDataFireReport.hpp
GeoPairingImplAirTargetCacheData.hpp
GeoPairingImplAirTargetCache.hpp
GeoPairingImplAirTarget.hpp
GeoPairingImplAirTargetTracker.hpp
GeoPairingImplAirTargetUpdater.hpp
GeoPairingImplBalistic.hpp
GeoPairingImplDted.hpp
GeoPairingImplDummy.hpp
GeoPairingImplFactory.hpp
GeoPairingImplFiredBulletBalistic.hpp
GeoPairingImplFiredBulletDted.hpp
GeoPairingImplFiredBullet.hpp
GeoPairingImpl.hpp
GeoPairingImplImpactData.hpp
GeoPairingImplMeteoData.hpp
GeoPairingImplSensorData.hpp
GeoPairingImplTrajectoryData.hpp
geo_settings.h
geo_settings.cpp
)
NGL_ADD_LIBRARY(AAR SV svcCesGeoPairingImpl STATIC ${SRCS_common})
NGL_TARGET_INCLUDE_DIRECTORIES(svcCesGeoPairingImpl
PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/../
${CMAKE_CURRENT_BINARY_DIR}/../
)
NGL_TARGET_LINK_LIBRARIES(svcCesGeoPairingImpl
PRIVATE
RTI::nddscpp2
PUBLIC
Qt5::Core
NGLLogger
svcPdmCommon
LtsCoordTrans
GBL_Types
GBL_ConfigSystem
FW_Ballistic
NGLLogger
)
@@ -0,0 +1,56 @@
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
// manual class headers
#include "GeoPairingDataBase.hpp"
#include "../logger.h"
namespace N_GeoPairingImpl
{
GeoPairingDataBase::GeoPairingDataBase(const char *loggerName)
: m_logger(CesGeoPairing::getLogger(loggerName ? loggerName : "GeoPairingDataBase"))
{
}
// ---------------------------------------------------------------
// This function parses a data stream
// ---------------------------------------------------------------
bool GeoPairingDataBase::parse(const QByteArray& a_transparentData)
{
const int startMessageId = 0;
//const int lenMessageId = 1;
const int startDevice = 1;
//const int lenDevice = 1;
if (a_transparentData.size() < m_Size)
{
ERROR_LOG(m_logger) << "Size of transparent Data not valid :" << a_transparentData.size()
<< " instead of " << m_Size;
return false;
}
m_MessageID = a_transparentData[startMessageId];
int messageId = m_MessageID;
INFO_LOG(m_logger) << "Header -> MessageID : " << messageId;
UInt8 deviceId;
deviceId = a_transparentData[startDevice];
m_DeviceID = static_cast<PanGeoPairingDeviceId>(deviceId);
INFO_LOG(m_logger) << "Header -> DeviceID : " << m_DeviceID;
return true;
}
} // namespace N_GeoPairingImpl
@@ -0,0 +1,101 @@
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
#pragma once
#include <GBL_Global/Types.hpp>
#include <NGLLogger/INGLLogger.h>
enum PanGeoPairingDeviceId
{
PAN_GP_INVALID = -1,
PAN_GP_REQUEST_MORTAR = 0,
PAN_GP_REPORT_MORTAR = 1,
PAN_GP_REQUEST_IGLA = 2,
PAN_GP_REPORT_IGLA = 3,
PAN_GP_REQUEST_MK19 = 4,
PAN_GP_REPORT_MK19 = 5,
PAN_GP_REQUEST_M109 = 6,
PAN_GP_REPORT_M109 = 7,
/*
PAN_GP_REPORT_AGS17 = 8,
PAN_GP_REPORT_MORTAR_2S12_SANI = 9,
PAN_GP_REPORT_UR_83P = 10,
PAN_GP_REPORT_2S19_HOWITZER = 11,
PAN_GP_REPORT_2S3M_HOWITZER = 12,
*/
PAN_GP_REQUEST_G5_G6 = 13,
PAN_GP_REPORT_G5_G6 = 14
};
enum e_AmmunitionType
{
AmmunitionTypeUnknown = -1,
MortarType1 = 1, // Siehe Geo-Munition [GUEZE-2411]
MortarType2 = 2,
M60mm_m385 = 1,
M60mm_m430 = 2,
MK19Type_m385 = 2,
MK19Type_m430 = 3,
HE_M1A2 = 4,
VLAP_M9703 = 5,
SMK_BE_M2 = 6,
CLUSTER_HEHC_M9609 = 7
};
enum e_IgnitionTypeG5G6
{
IgnitionTypeUnknown = -1,
IgnitionTypePercussion = 0,
IgnitionTypeProximity = 1,
IgnitionTypeTime = 2
};
namespace N_GeoPairingImpl
{
/**
* This is the Data base class
*
* @author Daniel.Schmid
* @version 1.0
* @created 01-Nov-2011 08:37:58
*/
class GeoPairingDataBase
{
public:
GeoPairingDataBase(const char *loggerName = nullptr);
virtual ~GeoPairingDataBase() = default;
UInt8 m_MessageID = 0;
PanGeoPairingDeviceId m_DeviceID = PAN_GP_INVALID;
/**
* This function parses a data stream
*
* @param a_transparentData
* @param a_sizeOfTransparentData
*/
virtual bool parse(const QByteArray& a_transparentData);
protected:
int m_Size = 2;
NGL::INGLLogger &m_logger;
};
}
@@ -0,0 +1,122 @@
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
// manual class headers
#include "GeoPairingDataFireReport.hpp"
namespace N_GeoPairingImpl
{
GeoPairingDataFireReport::GeoPairingDataFireReport()
: GeoPairingDataBase("GeoPairingDataFireReport")
{
m_Size = 18;
}
// ---------------------------------------------------------------
bool GeoPairingDataFireReport::parse(const QByteArray& a_transparentData)
{
if (!GeoPairingDataBase::parse(a_transparentData))
{
ERROR_LOG(m_logger) << "Couldn't parse Header";
return false;
}
//char *l_Buffer = (char *) a_transparentData;
const char *l_Buffer = a_transparentData.constData();
int l_StreamPosition = 2;
memcpy(&m_TimerTick, l_Buffer + l_StreamPosition, sizeof(m_TimerTick));
l_StreamPosition += sizeof(m_TimerTick);
INFO_LOG(m_logger) << "Stream -> TimerTick : " << (int) m_TimerTick;
memcpy(&m_Ammunition, l_Buffer + l_StreamPosition, sizeof(m_Ammunition));
l_StreamPosition += sizeof(m_Ammunition);
INFO_LOG(m_logger) << "Stream -> Ammunition : " << (int) m_Ammunition;
memcpy(&m_Pitch, l_Buffer + l_StreamPosition, sizeof(m_Pitch));
memcpy(&m_PitchMin, l_Buffer + l_StreamPosition, sizeof(m_PitchMin));
memcpy(&m_PitchMax, l_Buffer + l_StreamPosition + sizeof(m_PitchMin), sizeof(m_PitchMax));
l_StreamPosition += sizeof(m_Pitch);
INFO_LOG(m_logger) << "Stream -> Elevation : " << (int) m_Pitch;
memcpy(&m_Heading, l_Buffer + l_StreamPosition, sizeof(m_Heading));
memcpy(&m_HeadingMin, l_Buffer + l_StreamPosition, sizeof(m_HeadingMin));
memcpy(&m_HeadingMax, l_Buffer + l_StreamPosition + sizeof(m_HeadingMin), sizeof(m_HeadingMax));
l_StreamPosition += sizeof(m_Heading);
INFO_LOG(m_logger) << "Stream -> Azimuth : " << (int) m_Heading;
memcpy(&m_Temperature, l_Buffer + l_StreamPosition, sizeof(m_Temperature));
l_StreamPosition += sizeof(m_Temperature);
INFO_LOG(m_logger) << "Stream -> Temperature : " << (int) m_Temperature;
memcpy(&m_TimeToDetonate, l_Buffer + l_StreamPosition, sizeof(m_TimeToDetonate));
l_StreamPosition += sizeof(m_TimeToDetonate);
INFO_LOG(m_logger) << "Stream -> TimeToDetonate : " << (int) m_TimeToDetonate;
UInt8 l_WeaponSpecific = 0;
memcpy(&l_WeaponSpecific, l_Buffer + l_StreamPosition, sizeof(l_WeaponSpecific));
l_StreamPosition += sizeof(l_WeaponSpecific);
INFO_LOG(m_logger) << "Stream -> WeaponSpecific : " << (int) l_WeaponSpecific;
switch (m_DeviceID)
{
case PAN_GP_REPORT_MK19:
{
m_MK19NbrRounds = l_WeaponSpecific;
m_Pitch = m_PitchMin;
m_Heading = m_HeadingMin;
m_UseMinMax = true;
INFO_LOG(m_logger) << "--> MK19NbrRounds : " << (int) m_MK19NbrRounds;
INFO_LOG(m_logger) << "--> Pitch (avg) : " << (int) m_Pitch;
INFO_LOG(m_logger) << "--> PitchMin : " << (int) m_PitchMin;
INFO_LOG(m_logger) << "--> PitchMax : " << (int) m_PitchMax;
INFO_LOG(m_logger) << "--> Heading (avg) : " << (int) m_Heading;
INFO_LOG(m_logger) << "--> HeadingMin : " << (int) m_HeadingMin;
INFO_LOG(m_logger) << "--> HeadingMax : " << (int) m_HeadingMax;
break;
}
case PAN_GP_REPORT_IGLA:
case PAN_GP_REQUEST_IGLA:
{
m_IGLAModeAuto = l_WeaponSpecific & PAN_GP_IGLA_MODE_MASK;
INFO_LOG(m_logger) << "--> IGLAModeAuto : " << m_IGLAModeAuto;
m_IGLAChangeOverPressed = l_WeaponSpecific & PAN_GP_IGLA_CHANGEOVER_MASK;
INFO_LOG(m_logger) << "--> IGLAChangeOverPressed : " << m_IGLAChangeOverPressed;
m_IGLARequestNbr = l_WeaponSpecific >> 2;
INFO_LOG(m_logger) << "--> IGLARequestNbr : " << (int) m_IGLARequestNbr;
break;
}
case PAN_GP_REPORT_MORTAR:
case PAN_GP_REPORT_G5_G6:
case PAN_GP_REPORT_M109:
break;
default:
{
ERROR_LOG(m_logger) << "--> Weapon with id " << m_DeviceID << " not implemented yet !";
return false;
}
}
UInt8 l_Reserved = 0;
memcpy(&l_Reserved, l_Buffer + l_StreamPosition, sizeof(l_Reserved));
INFO_LOG(m_logger) << "Stream -> Reserved : " << (int) l_Reserved;
//l_StreamPosition += sizeof(l_Reserved);
return true;
}
} // namespace N_GeoPairingImpl
@@ -0,0 +1,66 @@
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
#pragma once
// from stereotyped includes
#include "GeoPairingDataBase.hpp"
#include "../logger.h"
#define PAN_GP_IGLA_MODE_MASK 1
#define PAN_GP_IGLA_CHANGEOVER_MASK 2
#define PAN_AMMU_MORTAR_1 1
#define PAN_AMMU_MORTAR_2 2
namespace N_GeoPairingImpl
{
/**
* @author Daniel.Schmid
* @version 1.0
* @created 01-Nov-2011 08:36:26
*/
class GeoPairingDataFireReport : public GeoPairingDataBase
{
public:
GeoPairingDataFireReport();
UInt16 m_TimerTick = 0;
SInt32 m_Pitch = 0;
SInt16 m_PitchMin = 0;
SInt16 m_PitchMax = 0;
SInt32 m_Heading = 0;
SInt16 m_HeadingMin = 0;
SInt16 m_HeadingMax = 0;
UInt16 m_TimeToDetonate = 0;
SInt8 m_Temperature = 0;
UInt8 m_Ammunition = 0;
UInt8 m_MK19NbrRounds = 0;
UInt8 m_IGLARequestNbr = 0;
bool m_IGLAModeAuto = false;
bool m_IGLAChangeOverPressed = false;
bool m_UseMinMax = false;
/**
*
* @param a_transparentData
* @param a_sizeOfTransparentData
*/
bool parse(const QByteArray& a_transparentData) override;
};
}
@@ -0,0 +1,406 @@
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
// manual class headers
#include "GeoPairingImpl.hpp"
#include <GBL_ConfigSystem/geoconfig.h>
#include <FW_Ballistic/AmmunitionTypes.hpp>
#include "../settings.h"
// from cpp_includes
#include <GBL_Types/Radian64.hpp>
#include "GeoPairingImplAirTargetCacheData.hpp"
#include "GeoPairingDataFireReport.hpp"
#include <QDateTime>
#define PAN_AMMU_TIMEPROG(ammunition) (ammunition & 0x01)
#define PAN_AMMU_INDEX(ammunition) ((ammunition >> 1) & 0x03)
#define PAN_AMMU_CHARGE(ammunition) ((ammunition >> 3) & 0x07)
#define PAN_AMMU_INDEX_G5_G6(ammunition) (ammunition & 0x0F)
#define PAN_AMMU_CHARGE_G5_G6(ammunition) ((ammunition >> 4) & 0x0F)
namespace N_GeoPairingImpl
{
inline void endian_swap(UInt16 &a_value)
{
a_value = (a_value >> 8) |
(a_value << 8);
}
inline void endian_swap(UInt32 &a_value)
{
a_value = (a_value >> 24) |
((a_value << 8) & 0x00FF0000) |
((a_value >> 8) & 0x0000FF00) |
(a_value << 24);
}
GeoPairingImpl::GeoPairingImpl(const char *loggerName)
: m_Initialized(false)
, m_logger(CesGeoPairing::getLogger(loggerName))
{
}
// ---------------------------------------------------------------
// creates a new air target tracker
// ---------------------------------------------------------------
GeoPairingImplAirTargetTracker *GeoPairingImpl::createAirTargetTracker()
{
return new GeoPairingImplAirTargetTracker(&m_ListAirTargets);
}
// ---------------------------------------------------------------
// creates a new air target updater
// ---------------------------------------------------------------
GeoPairingImplAirTargetUpdater *GeoPairingImpl::createAirTargetUpdater()
{
return new GeoPairingImplAirTargetUpdater(&m_ListAirTargets);
}
// ---------------------------------------------------------------
// creates a new air target cache
// ---------------------------------------------------------------
GeoPairingImplAirTargetCache *GeoPairingImpl::createAirTargetCache(UInt32 a_playerID)
{
return new GeoPairingImplAirTargetCache(a_playerID, &m_CacheData);
}
// ---------------------------------------------------------------
// Pupulates a SensorData instance according to the given
// transparent datastream
// ---------------------------------------------------------------
SInt32 GeoPairingImpl::createSensorData(GeoPairingImplSensorData *a_sensorData, const QByteArray& a_transparendData, int &isDefault)
{
INFO_LOG(m_logger) << "createSensorData";
if (!m_Initialized)
{
ERROR_LOG(m_logger) << "Implementation not initialized";
return -1;
}
if (!a_sensorData)
{
ERROR_LOG(m_logger) << "SensorData Object argument not valid";
return -1;
}
GeoPairingDataFireReport l_Report;
if (!l_Report.parse(a_transparendData))
{
ERROR_LOG(m_logger) << "Couldn't parse FireReport";
return -1;
}
N_Types::Radian64 l_Azimuth;
l_Azimuth.setDegree(l_Report.m_Heading / 10.0);
N_Types::Radian64 l_Elevation;
l_Elevation.setDegree(l_Report.m_Pitch / 10.0);
bool l_ConsiderGeoMagneticField = false;
Float64 l_GeoMagneticCorrection = 0.0;
if (l_Report.m_DeviceID == PAN_GP_REPORT_MORTAR ||
l_Report.m_DeviceID == PAN_GP_REQUEST_IGLA ||
l_Report.m_DeviceID == PAN_GP_REPORT_IGLA)
l_ConsiderGeoMagneticField = true;
if (l_ConsiderGeoMagneticField)
{
auto l_config = N_ConfigSystem::GeoConfig::getInstance();
QString geoMagneticFieldStr = QStringLiteral("GeoMagneticField");
QString dateStr = QStringLiteral("Date");
QString declinationStr = QStringLiteral("Declination");
QString changePerYearStr = QStringLiteral("ChangePerYear");
QString l_DateRecord = l_config->getString(geoMagneticFieldStr, dateStr, QString());
Float64 l_Declination = l_config->getFloat(geoMagneticFieldStr, declinationStr, 0.0);
Float64 l_ChangePerYear = l_config->getFloat(geoMagneticFieldStr, changePerYearStr, 0.0);
int l_Year = 0, l_Month = 0, l_Day = 0;
//int l_Result = sscanf(l_DateRecord.c_str(), "%d-%d-%d", &l_Year, &l_Month, &l_Day);
QDate date = QDate::fromString(l_DateRecord, QStringLiteral("yyyy-MM-dd"));
l_Year = date.year();
l_Month = date.month();
l_Day = date.day();
if (date.isValid())
{
INFO_LOG(m_logger) << "GeoMagneticField DateRecord = " << l_DateRecord;
INFO_LOG(m_logger) << "GeoMagneticField Declination = " << l_Declination;
INFO_LOG(m_logger) << "GeoMagneticField ChangePerYear = " << l_ChangePerYear;
time_t l_TimeNow = time(nullptr);
struct tm l_TimeInfo;
memset(&l_TimeInfo, 0, sizeof(tm));
l_TimeInfo.tm_year = l_Year - 1900;
l_TimeInfo.tm_mon = l_Month - 1;
l_TimeInfo.tm_mday = l_Day;
time_t l_TimeRec = mktime(&l_TimeInfo);
double l_TimeDiff = difftime(l_TimeNow, l_TimeRec);
int l_SecondsPerYear = 365 * 24 * 3600;
int l_Years = l_TimeDiff / l_SecondsPerYear; // number of years since DateRecords
DEBUG_LOG(m_logger) << "GeoMagneticField Years since DateRecord : " << l_Years;
l_GeoMagneticCorrection = l_Declination + (l_Years * l_ChangePerYear);
INFO_LOG(m_logger) << "GeoMagneticField Azimuth correction [degrees]: " << l_GeoMagneticCorrection;
l_GeoMagneticCorrection *= N_SST::PI_OVER_180;
l_Azimuth += l_GeoMagneticCorrection;
}
}
INFO_LOG(m_logger) << "createSensorData";
if (l_Report.m_DeviceID == PAN_GP_REPORT_MORTAR)
{
int l_AmmunitionField = PAN_AMMU_INDEX(l_Report.m_Ammunition);
INFO_LOG(m_logger) << "createSensorData PAN_GP_REPORT_MORTAR l_AmmunitionField=" << +l_AmmunitionField
<< " l_Report.m_Ammunition=" << +l_Report.m_Ammunition
<< " l_Report.m_Ammunition & 0x03=" << +(l_Report.m_Ammunition & 0x03);
switch (l_Report.m_Ammunition & 0x03)
{
case 1:
a_sensorData->AmmunitionType = MortarType1;
INFO_LOG(m_logger) << "Using Mortar Ammunition 1";
break;
case 2:
a_sensorData->AmmunitionType = MortarType2;
INFO_LOG(m_logger) << "Using Mortar Ammunition 2";
break;
default:
a_sensorData->AmmunitionType = MortarType1;
ERROR_LOG(m_logger) << "Ammunition value means 'reserved' : "
<< l_AmmunitionField;
return -1;
}
a_sensorData->IgnitionType = (l_Report.m_Ammunition >> 3) & 0x07;
INFO_LOG(m_logger) << "a_sensorData->IgnitionType= " << a_sensorData->IgnitionType;
}
else if ((l_Report.m_DeviceID == PAN_GP_REPORT_G5_G6) || (l_Report.m_DeviceID == PAN_GP_REPORT_M109))
{
int l_AmmunitionField = PAN_AMMU_INDEX_G5_G6(l_Report.m_Ammunition);
switch (l_AmmunitionField)
{
case 1:
a_sensorData->AmmunitionType = HE_M1A2;
a_sensorData->IgnitionTypeG5G6 = IgnitionTypePercussion;
INFO_LOG(m_logger) << "Using HE_M1A2 Percussion";
break;
case 2:
a_sensorData->AmmunitionType = HE_M1A2;
a_sensorData->IgnitionTypeG5G6 = IgnitionTypeProximity;
INFO_LOG(m_logger) << "Using HE_M1A2 Proximity";
break;
case 3:
a_sensorData->AmmunitionType = VLAP_M9703;
a_sensorData->IgnitionTypeG5G6 = IgnitionTypePercussion;
INFO_LOG(m_logger) << "Using VLAP_M9703 Percussion";
break;
case 4:
a_sensorData->AmmunitionType = VLAP_M9703;
a_sensorData->IgnitionTypeG5G6 = IgnitionTypeProximity;
INFO_LOG(m_logger) << "Using VLAP_M9703 Proximity";
break;
case 5:
a_sensorData->AmmunitionType = SMK_BE_M2;
a_sensorData->IgnitionTypeG5G6 = IgnitionTypeTime;
INFO_LOG(m_logger) << "Using SMK_BE_M2 Time";
break;
case 6:
a_sensorData->AmmunitionType = CLUSTER_HEHC_M9609;
a_sensorData->IgnitionTypeG5G6 = IgnitionTypeTime;
INFO_LOG(m_logger) << "Using CLUSTER_HEHC_M9609 Time";
break;
default:
a_sensorData->AmmunitionType = HE_M1A2;
a_sensorData->IgnitionTypeG5G6 = IgnitionTypePercussion;
isDefault = 1;
ERROR_LOG(m_logger) << "Ammunition value means 'reserved' : " << l_AmmunitionField;
return -1;
}
}
else if (l_Report.m_DeviceID == PAN_GP_REPORT_MK19)
{
N_Types::Radian64 l_AzimuthMin;
l_AzimuthMin.setDegree(l_Report.m_HeadingMin / 10.0);
N_Types::Radian64 l_AzimuthMax;
l_AzimuthMax.setDegree(l_Report.m_HeadingMax / 10.0);
l_AzimuthMin += l_GeoMagneticCorrection;
l_AzimuthMax += l_GeoMagneticCorrection;
N_Types::Radian64 l_ElevationMin;
l_ElevationMin.setDegree(l_Report.m_PitchMin / 10.0);
N_Types::Radian64 l_ElevationMax;
l_ElevationMax.setDegree(l_Report.m_PitchMax / 10.0);
// we have to negate the sensor heading for SST coordinate system which is ccw
a_sensorData->WeaponAzimuthMin = - l_AzimuthMin;
a_sensorData->WeaponAzimuthMax = - l_AzimuthMax;
if (a_sensorData->WeaponAzimuthMin > a_sensorData->WeaponAzimuthMax)
{
a_sensorData->WeaponAzimuthMin = - l_AzimuthMax;
a_sensorData->WeaponAzimuthMax = - l_AzimuthMin;
}
a_sensorData->WeaponElevationMin = l_ElevationMin;
a_sensorData->WeaponElevationMax = l_ElevationMax;
if (a_sensorData->WeaponElevationMin > a_sensorData->WeaponElevationMax)
{
a_sensorData->WeaponElevationMin = l_ElevationMax;
a_sensorData->WeaponElevationMax = l_ElevationMin;
}
int l_AmmunitionField = PAN_AMMU_INDEX(l_Report.m_Ammunition);
switch (l_AmmunitionField)
{
case 1:
a_sensorData->AmmunitionType = MK19Type_m385;
INFO_LOG(m_logger) << "Using MK19 Ammunition 1 (m385)";
break;
case 2:
a_sensorData->AmmunitionType = MK19Type_m430;
INFO_LOG(m_logger) << "Using MK19 Ammunition 2 (m430)";
break;
default:
a_sensorData->AmmunitionType = MK19Type_m385;
ERROR_LOG(m_logger) << "Ammunition value means 'reserved' : " << l_AmmunitionField;
return -1;
}
}
else if (l_Report.m_DeviceID == PAN_GP_REPORT_IGLA ||
l_Report.m_DeviceID == PAN_GP_REQUEST_IGLA)
{
a_sensorData->AmmunitionType = AmmunitionTypeUnknown; // irrelevant
INFO_LOG(m_logger) << "Using IGLA Ammunition 1";
}
else
{
ERROR_LOG(m_logger) << "Couldn't create sensorData for DeviceID : " << l_Report.m_DeviceID;
return -1;
}
a_sensorData->UseMinMax = l_Report.m_UseMinMax;
a_sensorData->WeaponAzimuth = - l_Azimuth; // we have to negate the sensor heading for SST coordinate system which is ccw
a_sensorData->WeaponElevation = l_Elevation;
a_sensorData->WeaponTemperature = l_Report.m_Temperature;
INFO_LOG(m_logger) << "a_sensorData->ChargeType=" << a_sensorData->ChargeType
<< " l_Report.m_Ammunition=" << l_Report.m_Ammunition
<< " l_Report.m_DeviceID=" << l_Report.m_DeviceID;
if (l_Report.m_DeviceID == PAN_GP_REPORT_MORTAR)
{
switch (l_Report.m_Ammunition)
{
case MortarType1:
default:
a_sensorData->ChargeType = N_Ballistic::MOERSER;
break;
case MortarType2:
a_sensorData->ChargeType = N_Ballistic::NEBEL;
break;
}
// if ( l_Report.m_Ammunition == 2)
// a_sensorData->ChargeType = 382;
// else
// a_sensorData->ChargeType = 385;
INFO_LOG(m_logger) << "PAN_GP_REPORT_MORTAR: l_Report.m_Ammunition" << l_Report.m_Ammunition
<< " a_sensorData->ChargeType=" << a_sensorData->ChargeType;
}
else if ((l_Report.m_DeviceID != PAN_GP_REPORT_G5_G6) && (l_Report.m_DeviceID != PAN_GP_REPORT_M109))
{
a_sensorData->ChargeType = PAN_AMMU_CHARGE(l_Report.m_Ammunition);
if (PAN_AMMU_TIMEPROG(l_Report.m_Ammunition))
a_sensorData->IgnitionType = l_Report.m_TimeToDetonate;
else
a_sensorData->IgnitionType = 0;
INFO_LOG(m_logger) << "if a_sensorData->ChargeType=" << a_sensorData->ChargeType;
}
else
{
INFO_LOG(m_logger) << "else a_sensorData->ChargeType=" << a_sensorData->ChargeType;
SInt32 ch = PAN_AMMU_CHARGE_G5_G6(l_Report.m_Ammunition);
if (ch == 1) // M64 Base
{
a_sensorData->ChargeType = 0;
INFO_LOG(m_logger) << "Using Charge M64 Base";
}
else if (ch == 3) // 3 x M64 Incr
{
a_sensorData->ChargeType = 1;
INFO_LOG(m_logger) << "Using Charge M64 INCR x 3";
}
else if (ch == 4) // 4 x M64 Incr
{
a_sensorData->ChargeType = 2;
INFO_LOG(m_logger) << "Using Charge M64 INCR x 4";
}
else if (ch == 5) // 5 x M64 Incr
{
a_sensorData->ChargeType = 3;
INFO_LOG(m_logger) << "Using Charge M64 INCR x 5";
}
else if (ch == 6) // 5 x M64 Incr + Base Bleed
{
a_sensorData->ChargeType = 4;
INFO_LOG(m_logger) << "Using Charge M64 INCR x 5 + Base Bleed";
}
else
{
a_sensorData->ChargeType = 0;
isDefault = 1;
WARNING_LOG(m_logger) << "Unknown Charge Type. Using Charge M64 Base";
}
}
INFO_LOG(m_logger) << "a_sensorData->ChargeType=" << a_sensorData->ChargeType;
return l_Report.m_DeviceID;
}
// ---------------------------------------------------------------
// Sets global meteo conditions
// ---------------------------------------------------------------
void GeoPairingImpl::setMeteoData(const GeoPairingImplMeteoData &a_meteoData)
{
if (!m_Initialized)
{
ERROR_LOG(m_logger) << "Implementation not initialized";
return;
}
m_MeteoData = a_meteoData;
INFO_LOG(m_logger) << "---------- Setting Meteo Data ------------";
INFO_LOG(m_logger) << "AirPressure : " << m_MeteoData.AirPressure;
INFO_LOG(m_logger) << "Temperature : " << m_MeteoData.Temperature;
INFO_LOG(m_logger) << "WindDirection : " << m_MeteoData.WindDirection;
INFO_LOG(m_logger) << "WindSpeed : " << m_MeteoData.WindSpeed;
}
} // namespace N_GeoPairingImpl
Loaded 100 of 16245 files, more files were not shown because too many files have changed in this diff. Show more