11#include "lob/lob_export.hpp"
19#define LOB_TABLE_SIZE 85
21#define LOB_BUILDER_BUFFER_SIZE 576
LOB_EXPORT double LobKgSqMToPmsi(double value)
Converts kilograms per square meter to pounds mass per square inch.
LOB_EXPORT double LobFtToIn(double value)
Converts feet to inches.
LOB_EXPORT double LobPaToInHg(double value)
Converts pascals to inches of mercury.
LOB_EXPORT double LobMoaToMil(double value)
Converts minutes of angle (MOA) to milliradians (MIL).
LOB_EXPORT LobBuilder * LobBuilderNoseLengthInch(LobBuilder *builder, double value)
Sets the projectile nose length in inches.
LOB_EXPORT LobBuilder * LobBuilderWindSpeedMph(LobBuilder *builder, double value)
Sets the wind speed in miles per hour.
LOB_EXPORT double LobJToFtLbs(double value)
Converts joules to foot-pounds.
LOB_EXPORT LobBuilder * LobBuilderLengthInch(LobBuilder *builder, double value)
Sets the projectile length in inches.
LOB_EXPORT LobBuilder * LobBuilderWindSpeedFps(LobBuilder *builder, double value)
Sets the wind speed in feet per second.
LOB_EXPORT double LobInToMm(double value)
Converts inches to millimeters.
LOB_EXPORT LobBuilder * LobBuilderTemperatureDegF(LobBuilder *builder, double value)
Sets the temperature in degrees Fahrenheit.
LOB_EXPORT LobBuilder * LobBuilderDiameterInch(LobBuilder *builder, double value)
Sets the projectile diameter (caliber) in inches.
#define LOB_BUILDER_BUFFER_SIZE
The size in bytes of the builder buffer.
Definition lob.h:21
LOB_EXPORT double LobMoaToDeg(double value)
Converts minutes of angle (MOA) to degrees.
LOB_EXPORT LobBuilder * LobBuilderBallisticCoefficientPsi(LobBuilder *builder, double value)
Sets the ballistic coefficient (Psi).
LOB_EXPORT void LobBuilderInit(LobBuilder *builder)
Initializes a builder to default state.
LOB_EXPORT double LobInchToMil(double value, double range_ft)
Inches of projection at a given range to milliradians (MIL).
LOB_EXPORT LobBuilder * LobBuilderAltitudeOfThermometerFt(LobBuilder *builder, double value)
Sets the altitude of the location where temperature was taken in feet.
LOB_EXPORT LobBuilder * LobBuilderLatitudeDeg(LobBuilder *builder, double value)
Sets the latitude of the firing location in degrees.
LOB_EXPORT LobBuilder * LobBuilderMinimumEnergy(LobBuilder *builder, uint16_t value)
Sets the minimum energy threshold for the solver.
LOB_EXPORT double LobMpsToFps(double value)
Converts meters per second to feet per second.
LOB_EXPORT LobBuilder * LobBuilderOgiveRtR(LobBuilder *builder, double value)
Sets the Rt/R ratio of the projectile ogive.
uint8_t LobClockAngleT
Clock angle positions for wind direction.
Definition lob.h:43
LOB_EXPORT LobBuilder * LobBuilderAirPressureInHg(LobBuilder *builder, double value)
Sets the air pressure in inches of mercury (inHg).
LOB_EXPORT double LobMmToIn(double value)
Converts millimeters to inches.
LOB_EXPORT LobBuilder * LobBuilderMinimumSpeed(LobBuilder *builder, uint16_t value)
Sets the minimum speed threshold for the solver.
LOB_EXPORT double LobFpsToMps(double value)
Converts feet per second to meters per second.
uint8_t LobAtmosphereReferenceT
Atmosphere reference type.
Definition lob.h:35
LOB_EXPORT void LobBuilderDestroy(LobBuilder *builder)
Destroys a builder and releases resources.
LOB_EXPORT LobBuilder * LobBuilderZeroAngleMOA(LobBuilder *builder, double value)
Sets the angle between the sight and launch angle used to achieve zero.
LOB_EXPORT double LobCmToIn(double value)
Converts centimeters to inches.
LOB_EXPORT double LobMbarToInHg(double value)
Converts millibars to inches of mercury.
LOB_EXPORT double LobYdToM(double value)
Converts yards to meters.
LOB_EXPORT LobBuilder * LobBuilderMeplatDiameterInch(LobBuilder *builder, double value)
Sets the projectile meplat diameter in inches.
LOB_EXPORT double LobInToFt(double value)
Converts inches to feet.
LOB_EXPORT double LobInToCm(double value)
Converts inches to centimeters.
@ kLobDragFunctionG2
G2 drag function.
Definition lob.h:27
@ kLobDragFunctionG1
G1 drag function.
Definition lob.h:26
@ kLobDragFunctionG7
G7 drag function.
Definition lob.h:30
@ kLobDragFunctionG6
G6 drag function.
Definition lob.h:29
@ kLobDragFunctionG8
G8 drag function.
Definition lob.h:31
@ kLobDragFunctionG5
G5 drag function.
Definition lob.h:28
#define LOB_TABLE_SIZE
The number of entries in a drag table.
Definition lob.h:19
LOB_EXPORT LobBuilder * LobBuilderReset(LobBuilder *builder)
Resets a builder state by re-initializing.
LOB_EXPORT double LobPsiToInHg(double value)
Converts pounds per square inch (PSI) to inches of mercury.
@ kLobErrorDiameterOOR
Definition lob.h:71
@ kLobErrorNotFormed
Definition lob.h:88
@ kLobErrorMeplatDiameterOOR
Definition lob.h:79
@ kLobErrorBaseDiameterOOR
Definition lob.h:70
@ kLobErrorLatitudeOOR
Definition lob.h:75
@ kLobErrorInternalError
Definition lob.h:74
@ kLobErrorNoseLengthOOR
Definition lob.h:80
@ kLobErrorBallisticCoefficientOOR
Definition lob.h:68
@ kLobErrorZeroAngleOOR
Definition lob.h:85
@ kLobErrorLengthOOR
Definition lob.h:76
@ kLobErrorOgiveRtROOR
Definition lob.h:81
@ kLobErrorRangeAngleOOR
Definition lob.h:82
@ kLobErrorZeroDataRequired
Definition lob.h:86
@ kLobErrorMaximumTimeOOR
Definition lob.h:78
@ kLobErrorTailLengthOOR
Definition lob.h:83
@ kLobErrorBallisticCoefficientRequired
Definition lob.h:69
@ kLobErrorAirPressureOOR
Definition lob.h:63
@ kLobErrorInitialVelocityRequired
Definition lob.h:73
@ kLobErrorNone
Definition lob.h:62
@ kLobErrorHumidityOOR
Definition lob.h:72
@ kLobErrorAzimuthOOR
Definition lob.h:67
@ kLobErrorMassOOR
Definition lob.h:77
@ kLobErrorZeroDistanceOOR
Definition lob.h:87
@ kLobErrorWindHeadingOOR
Definition lob.h:84
@ kLobErrorAltitudeOfThermometerOOR
Definition lob.h:66
@ kLobErrorAltitudeOfBarometerOOR
Definition lob.h:64
@ kLobErrorAltitudeOfFiringSiteOOR
Definition lob.h:65
LOB_EXPORT double LobKgToGrain(double value)
Converts kilograms to grains.
LOB_EXPORT double LobInchToDeg(double value, double range_ft)
Inches of projection at a given range to degrees.
LOB_EXPORT LobBuilder * LobBuilderZeroImpactHeightInches(LobBuilder *builder, double value)
Sets the zero impact height in inches.
@ kLobClockAngleVIII
eight o'clock
Definition lob.h:52
@ kLobClockAngleIV
four o'clock
Definition lob.h:48
@ kLobClockAngleV
five o'clock
Definition lob.h:49
@ kLobClockAngleI
one o'clock
Definition lob.h:45
@ kLobClockAngleVI
six o'clock
Definition lob.h:50
@ kLobClockAngleXI
eleven o'clock
Definition lob.h:55
@ kLobClockAngleVII
seven o'clock
Definition lob.h:51
@ kLobClockAngleII
two o'clock
Definition lob.h:46
@ kLobClockAngleIII
three o'clock
Definition lob.h:47
@ kLobClockAngleXII
twelve o'clock
Definition lob.h:56
@ kLobClockAngleX
ten o'clock
Definition lob.h:54
@ kLobClockAngleIX
nine o'clock
Definition lob.h:53
LOB_EXPORT LobBuilder * LobBuilderWindHeading(LobBuilder *builder, LobClockAngleT value)
Sets the wind heading using a clock angle.
uint8_t LobDragFunctionT
Drag function type.
Definition lob.h:24
LOB_EXPORT double LobKnToMph(double value)
Converts Knots to miles per hour.
@ kLobAtmosphereReferenceArmyStandardMetro
Army Standard Metro.
Definition lob.h:37
@ kLobAtmosphereReferenceIcao
International Civil Aviation Organization (ICAO)
Definition lob.h:38
LOB_EXPORT LobBuilder * LobBuilderOpticHeightInches(LobBuilder *builder, double value)
Sets the height of the optic above the bore in inches.
LOB_EXPORT double LobDegCToDegF(double value)
Converts degrees celsius to degrees fahrenheit.
LOB_EXPORT LobBuilder * LobBuilderStepSize(LobBuilder *builder, uint16_t value)
Sets the step size for the numerical solver.
LOB_EXPORT double LobFtToYd(double value)
Converts feet to yards.
LOB_EXPORT double LobGToGrain(double value)
Converts grams to grains.
LOB_EXPORT LobBuilder * LobBuilderMaximumTime(LobBuilder *builder, double value)
Sets the maximum time of flight for the solver.
LOB_EXPORT LobBuilder * LobBuilderInitialVelocityFps(LobBuilder *builder, uint16_t value)
Sets the initial velocity of the projectile in feet per second.
uint8_t LobErrorT
Error codes returned by the builder.
Definition lob.h:60
LOB_EXPORT const char * LobVersion(void)
Gets the library version in major.minor.patch format.
LOB_EXPORT double LobMoaToIphy(double value)
Converts minutes of angle (MOA) to inches per hundred yards (IPHY).
LOB_EXPORT double LobLbsToGrain(double value)
Converts pounds to grains.
LOB_EXPORT LobBuilder * LobBuilderTwistInchesPerTurn(LobBuilder *builder, double value)
Sets the twist rate of the barrel in inches per turn.
LOB_EXPORT LobBuilder * LobBuilderTailLengthInch(LobBuilder *builder, double value)
Sets the projectile tail length in inches.
LOB_EXPORT double LobFtLbsToJ(double value)
Converts foot-pounds to joules.
LOB_EXPORT double LobKphToMph(double value)
Converts kilometers per hour to miles per hour.
LOB_EXPORT LobBuilder * LobBuilderAltitudeOfBarometerFt(LobBuilder *builder, double value)
Sets the altitude of the location where air pressure was taken in feet.
LOB_EXPORT double LobMsToS(double value)
Converts milliseconds to seconds.
LOB_EXPORT LobBuilder * LobBuilderZeroDistanceYds(LobBuilder *builder, double value)
Sets the zero distance in yards.
LOB_EXPORT LobBuilder * LobBuilderRelativeHumidityPercent(LobBuilder *builder, double value)
Sets the relative humidity at the firing site in percent.
LOB_EXPORT LobBuilder * LobBuilderMachVsDragTable(LobBuilder *builder, const float *pmachs, const float *pdrags, size_t size)
Loads a custom Mach vs Drag table for the projectile.
LOB_EXPORT double LobSToMs(double value)
Converts seconds to milliseconds.
LOB_EXPORT LobBuilder * LobBuilderBaseDiameterInch(LobBuilder *builder, double value)
Sets the projectile base diameter in inches.
LOB_EXPORT LobInput LobBuilderBuild(LobBuilder *builder)
Builds the LobInput object with the configured parameters.
LOB_EXPORT double LobYdToFt(double value)
Converts yards to feet.
LOB_EXPORT double LobMoaToInch(double value, double range_ft)
Converts minutes of angle (MOA) to projected inches at a given range in feet.
LOB_EXPORT size_t LobSolve(const LobInput *in, const uint32_t *pranges, LobOutput *pouts, size_t size)
Solves the exterior ballistics problem for a given set of ranges.
LOB_EXPORT LobBuilder * LobBuilderWindHeadingDeg(LobBuilder *builder, double value)
Sets the wind heading in degrees.
LOB_EXPORT void LobBuilderCopy(LobBuilder *dst, const LobBuilder *src)
Copies builder state from src to dst.
LOB_EXPORT LobBuilder * LobBuilderAltitudeOfFiringSiteFt(LobBuilder *builder, double value)
Sets the altitude of the firing site in feet.
LOB_EXPORT double LobMToYd(double value)
Converts meters to yards.
LOB_EXPORT double LobSToUs(double value)
Converts seconds to microseconds.
LOB_EXPORT double LobInchToMoa(double value, double range_ft)
Inches of projection at a given range to minutes of angle (MOA).
LOB_EXPORT LobBuilder * LobBuilderRangeAngleDeg(LobBuilder *builder, double value)
Sets the range angle (inclination) to the target in degrees.
LOB_EXPORT LobBuilder * LobBuilderBCAtmosphere(LobBuilder *builder, LobAtmosphereReferenceT type)
Sets the atmosphere reference associated with ballistic coefficient.
LOB_EXPORT double LobMilToMoa(double value)
Converts milliradians (MIL) to minutes of angle (MOA).
LOB_EXPORT LobBuilder * LobBuilderBCDragFunction(LobBuilder *builder, LobDragFunctionT type)
Sets the drag function associated with ballistic coefficient.
LOB_EXPORT double LobDegToMoa(double value)
Converts degrees to minutes of angle (MOA).
LOB_EXPORT double LobFtToM(double value)
Converts feet to meters.
LOB_EXPORT double LobMilToInch(double value, double range_ft)
Converts milliradians (MIL) to projected inches at a given range in feet.
LOB_EXPORT LobBuilder * LobBuilderAzimuthDeg(LobBuilder *builder, double value)
Sets the azimuth (bearing) of the target in degrees.
LOB_EXPORT double LobMilToDeg(double value)
Converts milliradians (MIL) to degrees.
LOB_EXPORT double LobUsToS(double value)
Converts microseconds to seconds.
LOB_EXPORT LobBuilder * LobBuilderMassGrains(LobBuilder *builder, double value)
Sets the projectile mass in grains.
LOB_EXPORT double LobDegToMil(double value)
Converts degrees to milliradians (MIL).
LOB_EXPORT double LobMilToIphy(double value)
Converts milliradians (MIL) to inches per hundred yards (IPHY).
LOB_EXPORT double LobMToFt(double value)
Converts meters to feet.
Opaque builder type for constructing LobInput objects.
Definition lob.h:146
uint8_t buffer[LOB_BUILDER_BUFFER_SIZE]
Definition lob.h:151
size_t align_size
Definition lob.h:150
LobInput align_input
Definition lob.h:148
double align_double
Definition lob.h:149
Coriolis effect parameters.
Definition lob.h:104
double cos_l_sin_a
2*Omega*cos(latitude)*sin(azimuth)
Definition lob.h:105
double sin_l
2*Omega*sin(latitude)
Definition lob.h:106
double cos_l_cos_a
2*Omega*cos(latitude)*cos(azimuth)
Definition lob.h:107
Gravity vector.
Definition lob.h:92
double x
Acceleration ft/s/s in the x-direction.
Definition lob.h:93
double y
Acceleration ft/s/s in the y-direction.
Definition lob.h:94
Structure holding the output results of a ballistic calculation.
Definition lob.h:136
uint32_t energy
Calculated energy in foot-pounds.
Definition lob.h:139
uint16_t velocity
Calculated velocity in feet per second.
Definition lob.h:138
uint32_t range
Associated range in yards.
Definition lob.h:137
double time_of_flight
Time of flight in seconds.
Definition lob.h:142
double elevation
Calculated elevation change in inches.
Definition lob.h:140
double deflection
Calculated windage deflection in inches.
Definition lob.h:141
Wind vector.
Definition lob.h:98
double x
Wind speed in fps in the x-direction.
Definition lob.h:99
double z
Wind speed in fps in the z-direction.
Definition lob.h:100