lob 0.13.0
Exterior ballistics library — API + technical reference
Loading...
Searching...
No Matches
lob.h
Go to the documentation of this file.
1// Copyright (c) 2025 Joel Benway
2// SPDX-License-Identifier: GPL-3.0-or-later
3// Please see end of file for extended copyright information
4
5#ifndef LOB_H
6#define LOB_H
7
8#include <stddef.h>
9#include <stdint.h>
10
11#include "lob/lob_export.hpp"
12
13#ifdef __cplusplus
14extern "C" {
15// NOLINTBEGIN
16#endif
17
19#define LOB_SPLINE_SEGMENTS 15
21#define LOB_BUILDER_BUFFER_SIZE 320
23#define LOB_WIND_POINTS 8
24
26typedef uint8_t LobDragFunctionT;
27enum {
34};
35
38enum {
41 1
42};
43
45typedef uint8_t LobClockAngleT;
46enum {
59};
60
62typedef uint8_t LobErrorT;
63enum {
103};
104
106typedef struct {
107 double x;
108 double y;
109} LobGravity;
110
112typedef struct {
113 double range_ft;
114 double heading_deg;
115 double speed_mph;
116 double height_ft;
118
120typedef struct {
121 uint32_t range_ft;
122 double x_fps;
123 double y_fps;
124 double z_fps;
126
128typedef struct {
129 double cos_l_sin_a;
130 double sin_l;
131 double cos_l_cos_a;
133
163
165typedef struct {
166 uint32_t range;
167 uint16_t velocity;
168 uint32_t energy;
169 double elevation;
171 double
175} LobOutput;
176
178typedef struct {
179 union {
183 } buffer;
184} LobBuilder;
185
187LOB_EXPORT extern const char* LobVersion(void);
188
190LOB_EXPORT extern void LobBuilderInit(LobBuilder* pbuilder);
193LOB_EXPORT extern void LobBuilderDestroy(LobBuilder* pbuilder);
195LOB_EXPORT extern void LobBuilderCopy(LobBuilder* dst, const LobBuilder* src);
198LOB_EXPORT extern LobBuilder* LobBuilderReset(LobBuilder* pbuilder);
199
207 LobBuilder* pbuilder, double value);
208
216 LobBuilder* pbuilder, LobAtmosphereReferenceT type);
217
229LOB_EXPORT extern LobBuilder* LobBuilderBCDragFunction(LobBuilder* pbuilder,
230 LobDragFunctionT type);
231
238LOB_EXPORT extern LobBuilder* LobBuilderDiameterInch(LobBuilder* pbuilder,
239 double value);
240
248 double value);
249
257 double value);
258
265LOB_EXPORT extern LobBuilder* LobBuilderLengthInch(LobBuilder* pbuilder,
266 double value);
267
274LOB_EXPORT extern LobBuilder* LobBuilderNoseLengthInch(LobBuilder* pbuilder,
275 double value);
276
283LOB_EXPORT extern LobBuilder* LobBuilderTailLengthInch(LobBuilder* pbuilder,
284 double value);
285
292LOB_EXPORT extern LobBuilder* LobBuilderOgiveRtR(LobBuilder* pbuilder,
293 double value);
294
312LOB_EXPORT extern LobBuilder* LobBuilderSplineFitTable(LobBuilder* pbuilder,
313 const float* pmachs,
314 const float* pdrags,
315 size_t size);
316
338 const float* pfps,
339 const float* pbcs,
340 size_t size);
341
360 const float* pcoefs);
361
368LOB_EXPORT extern LobBuilder* LobBuilderMassGrains(LobBuilder* pbuilder,
369 double value);
370
378 uint16_t value);
379
387 double value);
388
397 double value);
398
408LOB_EXPORT extern LobBuilder* LobBuilderZeroAngleMOA(LobBuilder* pbuilder,
409 double value);
410
418 double value);
419
429 LobBuilder* pbuilder, double value);
430
438 LobBuilder* pbuilder, double value);
439
447 double value);
448
460 LobBuilder* pbuilder, double value);
461
469 double value);
470
482 LobBuilder* pbuilder, double value);
483
491 LobBuilder* pbuilder, double value);
492
500LOB_EXPORT extern LobBuilder* LobBuilderWindHeading(LobBuilder* pbuilder,
501 LobClockAngleT value);
502
510LOB_EXPORT extern LobBuilder* LobBuilderWindHeadingDeg(LobBuilder* pbuilder,
511 double value);
512
519LOB_EXPORT extern LobBuilder* LobBuilderWindSpeedFps(LobBuilder* pbuilder,
520 double value);
521
528LOB_EXPORT extern LobBuilder* LobBuilderWindSpeedMph(LobBuilder* pbuilder,
529 double value);
530
542 LobBuilder* pbuilder, const LobWindPoint* ppoints, size_t count);
543
556 LobBuilder* pbuilder, double value);
557
565LOB_EXPORT extern LobBuilder* LobBuilderAzimuthDeg(LobBuilder* pbuilder,
566 double value);
567
575LOB_EXPORT extern LobBuilder* LobBuilderLatitudeDeg(LobBuilder* pbuilder,
576 double value);
577
584LOB_EXPORT extern LobBuilder* LobBuilderRangeAngleDeg(LobBuilder* pbuilder,
585 double value);
586
594LOB_EXPORT extern LobBuilder* LobBuilderMinimumSpeed(LobBuilder* pbuilder,
595 uint16_t value);
596
604LOB_EXPORT extern LobBuilder* LobBuilderMinimumEnergy(LobBuilder* pbuilder,
605 uint16_t value);
606
614LOB_EXPORT extern LobBuilder* LobBuilderMaximumTime(LobBuilder* pbuilder,
615 double value);
616
624LOB_EXPORT extern LobBuilder* LobBuilderStepSize(LobBuilder* pbuilder,
625 uint16_t value);
626
633LOB_EXPORT extern void LobBuilderBuild(LobBuilder* pbuilder,
634 LobContext* presult);
635
647LOB_EXPORT extern size_t LobSolve(const LobContext* pctx,
648 const uint32_t* pranges, LobOutput* pouts,
649 size_t size);
650
663LOB_EXPORT extern size_t LobFastInverse(const LobContext* pctx,
664 LobOutput* pouts, size_t size);
665
681LOB_EXPORT extern size_t LobSolveInverse(const LobContext* pctx,
682 const uint32_t* pranges,
683 LobOutput* pouts, size_t size);
684
689LOB_EXPORT extern double LobMoaToMil(double value);
694LOB_EXPORT extern double LobMoaToDeg(double value);
699LOB_EXPORT extern double LobMoaToIphy(double value);
707LOB_EXPORT extern double LobMoaToInch(double value, double range_ft);
708
713LOB_EXPORT extern double LobMilToMoa(double value);
718LOB_EXPORT extern double LobMilToDeg(double value);
723LOB_EXPORT extern double LobMilToIphy(double value);
731LOB_EXPORT extern double LobMilToInch(double value, double range_ft);
732
737LOB_EXPORT extern double LobDegToMoa(double value);
742LOB_EXPORT extern double LobDegToMil(double value);
743
750LOB_EXPORT extern double LobInchToMoa(double value, double range_ft);
757LOB_EXPORT extern double LobInchToMil(double value, double range_ft);
764LOB_EXPORT extern double LobInchToDeg(double value, double range_ft);
765
770LOB_EXPORT extern double LobJToFtLbs(double value);
775LOB_EXPORT extern double LobFtLbsToJ(double value);
776
781LOB_EXPORT extern double LobMToYd(double value);
786LOB_EXPORT extern double LobYdToFt(double value);
791LOB_EXPORT extern double LobMToFt(double value);
796LOB_EXPORT extern double LobFtToIn(double value);
801LOB_EXPORT extern double LobMmToIn(double value);
806LOB_EXPORT extern double LobCmToIn(double value);
811LOB_EXPORT extern double LobYdToM(double value);
816LOB_EXPORT extern double LobFtToM(double value);
821LOB_EXPORT extern double LobFtToYd(double value);
826LOB_EXPORT extern double LobInToMm(double value);
831LOB_EXPORT extern double LobInToCm(double value);
836LOB_EXPORT extern double LobInToFt(double value);
837
842LOB_EXPORT extern double LobPaToInHg(double value);
847LOB_EXPORT extern double LobMbarToInHg(double value);
852LOB_EXPORT extern double LobPsiToInHg(double value);
853
858LOB_EXPORT extern double LobLbsToGrain(double value);
863LOB_EXPORT extern double LobGToGrain(double value);
868LOB_EXPORT extern double LobKgToGrain(double value);
869
875LOB_EXPORT extern double LobKgSqMToPmsi(double value);
876
881LOB_EXPORT extern double LobFpsToMps(double value);
886LOB_EXPORT extern double LobMpsToFps(double value);
891LOB_EXPORT extern double LobKphToMph(double value);
896LOB_EXPORT extern double LobKnToMph(double value);
897
902LOB_EXPORT extern double LobMsToS(double value);
907LOB_EXPORT extern double LobUsToS(double value);
912LOB_EXPORT extern double LobSToMs(double value);
917LOB_EXPORT extern double LobSToUs(double value);
918
924LOB_EXPORT extern double LobDegCToDegF(double value);
925
926#ifdef __cplusplus
927// NOLINTEND
928}
929#endif
930
931#endif // LOB_H
932
933// This file is part of lob.
934//
935// lob is free software: you can redistribute it and/or modify it under the
936// terms of the GNU General Public License as published by the Free Software
937// Foundation, either version 3 of the License, or (at your option) any later
938// version.
939//
940// lob is distributed in the hope that it will be useful, but WITHOUT ANY
941// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
942// A PARTICULAR PURPOSE. See the GNU General Public License for more details.
943//
944// You should have received a copy of the GNU General Public License along with
945// lob. If not, see <https://www.gnu.org/licenses/>.
LobBuilder * LobBuilderAzimuthDeg(LobBuilder *pbuilder, double value)
Sets the azimuth (bearing) of the target in degrees.
double LobPaToInHg(double value)
Converts pascals to inches of mercury.
void LobBuilderInit(LobBuilder *pbuilder)
Initializes a builder to default state. No-op if pbuilder is null.
double LobInchToDeg(double value, double range_ft)
Inches of projection at a given range to degrees.
double LobMilToInch(double value, double range_ft)
Converts milliradians (MIL) to projected inches at a given range in feet.
double LobSToUs(double value)
Converts seconds to microseconds.
size_t LobSolve(const LobContext *pctx, const uint32_t *pranges, LobOutput *pouts, size_t size)
Solves the exterior ballistics problem for a given set of ranges. Results contain a forward-solution.
double LobMsToS(double value)
Converts milliseconds to seconds.
double LobInToMm(double value)
Converts inches to millimeters.
LobBuilder * LobBuilderWindSpeedFps(LobBuilder *pbuilder, double value)
Sets the wind speed in feet per second.
LobBuilder * LobBuilderTemperatureDegF(LobBuilder *pbuilder, double value)
Sets the temperature in degrees Fahrenheit.
LobBuilder * LobBuilderTailLengthInch(LobBuilder *pbuilder, double value)
Sets the projectile tail length in inches.
LobBuilder * LobBuilderOpticHeightInches(LobBuilder *pbuilder, double value)
Sets the height of the optic above the bore in inches.
#define LOB_BUILDER_BUFFER_SIZE
The size in bytes of the builder buffer.
Definition lob.h:21
double LobMoaToMil(double value)
Converts minutes of angle (MOA) to milliradians (MIL).
double LobFtToM(double value)
Converts feet to meters.
LobBuilder * LobBuilderAirPressureInHg(LobBuilder *pbuilder, double value)
Sets the air pressure in inches of mercury (inHg).
double LobMoaToDeg(double value)
Converts minutes of angle (MOA) to degrees.
LobBuilder * LobBuilderMinimumEnergy(LobBuilder *pbuilder, uint16_t value)
Sets the minimum energy threshold for the solver.
double LobYdToFt(double value)
Converts yards to feet.
LobBuilder * LobBuilderRelativeHumidityPercent(LobBuilder *pbuilder, double value)
Sets the relative humidity at the firing site in percent.
uint8_t LobClockAngleT
Clock angle positions for wind direction.
Definition lob.h:45
LobBuilder * LobBuilderDiameterInch(LobBuilder *pbuilder, double value)
Sets the projectile diameter (caliber) in inches.
LobBuilder * LobBuilderBCAtmosphere(LobBuilder *pbuilder, LobAtmosphereReferenceT type)
Sets the atmosphere reference associated with ballistic coefficient.
#define LOB_WIND_POINTS
Total wind profile points, muzzle point included.
Definition lob.h:23
size_t LobFastInverse(const LobContext *pctx, LobOutput *pouts, size_t size)
Converts forward-solution output to inverse-solution adjustments.
LobBuilder * LobBuilderLengthInch(LobBuilder *pbuilder, double value)
Sets the projectile length in inches.
double LobDegToMoa(double value)
Converts degrees to minutes of angle (MOA).
LobBuilder * LobBuilderTwistInchesPerTurn(LobBuilder *pbuilder, double value)
Sets the twist rate of the barrel in inches per turn.
LobBuilder * LobBuilderBCVelocityBands(LobBuilder *pbuilder, const float *pfps, const float *pbcs, size_t size)
Loads ballistic coefficients measured at multiple velocities.
const char * LobVersion(void)
Gets the library version in major.minor.patch format.
double LobMmToIn(double value)
Converts millimeters to inches.
uint8_t LobAtmosphereReferenceT
Atmosphere reference type.
Definition lob.h:37
double LobMoaToInch(double value, double range_ft)
Converts minutes of angle (MOA) to projected inches at a given range in feet.
double LobCmToIn(double value)
Converts centimeters to inches.
double LobInToFt(double value)
Converts inches to feet.
LobBuilder * LobBuilderSplineCoefficients(LobBuilder *pbuilder, const float *pcoefs)
Loads precomputed native spline coefficients for the drag curve.
LobBuilder * LobBuilderReset(LobBuilder *pbuilder)
Resets a builder state by re-initializing. No-op if pbuilder is null.
double LobFtToYd(double value)
Converts feet to yards.
LobBuilder * LobBuilderLatitudeDeg(LobBuilder *pbuilder, double value)
Sets the latitude of the firing location in degrees.
LobBuilder * LobBuilderBCDragFunction(LobBuilder *pbuilder, LobDragFunctionT type)
Sets the drag function associated with ballistic coefficient.
LobBuilder * LobBuilderMaximumTime(LobBuilder *pbuilder, double value)
Sets the maximum time of flight for the solver.
@ kLobDragFunctionG2
G2 drag function.
Definition lob.h:29
@ kLobDragFunctionG1
G1 drag function.
Definition lob.h:28
@ kLobDragFunctionG7
G7 drag function.
Definition lob.h:32
@ kLobDragFunctionG6
G6 drag function.
Definition lob.h:31
@ kLobDragFunctionG8
G8 drag function.
Definition lob.h:33
@ kLobDragFunctionG5
G5 drag function.
Definition lob.h:30
double LobMilToDeg(double value)
Converts milliradians (MIL) to degrees.
LobBuilder * LobBuilderOgiveRtR(LobBuilder *pbuilder, double value)
Sets the Rt/R ratio of the projectile ogive.
@ kLobErrorDiameterOOR
Definition lob.h:76
@ kLobErrorNotFormed
Definition lob.h:89
@ kLobErrorMeplatDiameterOOR
Definition lob.h:87
@ kLobErrorMachDragTableNotMonotonic
Definition lob.h:83
@ kLobErrorBaseDiameterOOR
Definition lob.h:72
@ kLobErrorLatitudeOOR
Definition lob.h:80
@ kLobErrorInternalError
Definition lob.h:79
@ kLobErrorNoseLengthOOR
Definition lob.h:88
@ kLobErrorBallisticCoefficientOOR
Definition lob.h:70
@ kLobErrorZeroAngleOOR
Definition lob.h:98
@ kLobErrorLengthOOR
Definition lob.h:81
@ kLobErrorZeroUnreachable
Definition lob.h:101
@ kLobErrorOgiveRtROOR
Definition lob.h:90
@ kLobErrorMachDragTableTooShort
Definition lob.h:84
@ kLobErrorWindProfileInvalid
Definition lob.h:95
@ kLobErrorRangeAngleOOR
Definition lob.h:91
@ kLobErrorZeroDataRequired
Definition lob.h:99
@ kLobErrorSplineCoefsInvalid
Definition lob.h:92
@ kLobErrorMaximumTimeOOR
Definition lob.h:86
@ kLobErrorTailLengthOOR
Definition lob.h:93
@ kLobErrorBallisticCoefficientRequired
Definition lob.h:71
@ kLobErrorBcBandsInvalid
Definition lob.h:73
@ kLobErrorAirPressureOOR
Definition lob.h:65
@ kLobErrorInitialVelocityRequired
Definition lob.h:78
@ kLobErrorNone
Definition lob.h:64
@ kLobErrorHumidityOOR
Definition lob.h:77
@ kLobErrorAzimuthOOR
Definition lob.h:69
@ kLobErrorMassOOR
Definition lob.h:85
@ kLobErrorZeroDistanceOOR
Definition lob.h:100
@ kLobErrorWindHeadingOOR
Definition lob.h:94
@ kLobErrorWindProfileTooLong
Definition lob.h:97
@ kLobErrorAltitudeOfThermometerOOR
Definition lob.h:68
@ kLobErrorBcBandsTooShort
Definition lob.h:75
@ kLobErrorMachDragTableInvalid
Definition lob.h:82
@ kLobErrorNumberOfErrors
Definition lob.h:102
@ kLobErrorBcBandsNotMonotonic
Definition lob.h:74
@ kLobErrorAltitudeOfBarometerOOR
Definition lob.h:66
@ kLobErrorAltitudeOfFiringSiteOOR
Definition lob.h:67
@ kLobErrorWindProfileNotMonotonic
Definition lob.h:96
double LobSToMs(double value)
Converts seconds to milliseconds.
double LobGToGrain(double value)
Converts grams to grains.
double LobMpsToFps(double value)
Converts meters per second to feet per second.
LobBuilder * LobBuilderZeroAngleMOA(LobBuilder *pbuilder, double value)
Sets the angle between the sight and launch angle used to achieve zero.
double LobJToFtLbs(double value)
Converts joules to foot-pounds.
#define LOB_SPLINE_SEGMENTS
The number of spline pieces comprising a drag function.
Definition lob.h:19
LobBuilder * LobBuilderAltitudeOfThermometerFt(LobBuilder *pbuilder, double value)
Sets the altitude of the location where temperature was taken in feet.
@ kLobClockAngleVIII
eight o'clock
Definition lob.h:54
@ kLobClockAngleIV
four o'clock
Definition lob.h:50
@ kLobClockAngleV
five o'clock
Definition lob.h:51
@ kLobClockAngleI
one o'clock
Definition lob.h:47
@ kLobClockAngleVI
six o'clock
Definition lob.h:52
@ kLobClockAngleXI
eleven o'clock
Definition lob.h:57
@ kLobClockAngleVII
seven o'clock
Definition lob.h:53
@ kLobClockAngleII
two o'clock
Definition lob.h:48
@ kLobClockAngleIII
three o'clock
Definition lob.h:49
@ kLobClockAngleXII
twelve o'clock
Definition lob.h:58
@ kLobClockAngleX
ten o'clock
Definition lob.h:56
@ kLobClockAngleIX
nine o'clock
Definition lob.h:55
double LobKphToMph(double value)
Converts kilometers per hour to miles per hour.
uint8_t LobDragFunctionT
Drag function type.
Definition lob.h:26
@ kLobAtmosphereReferenceArmyStandardMetro
Army Standard Metro.
Definition lob.h:39
@ kLobAtmosphereReferenceIcao
International Civil Aviation Organization (ICAO)
Definition lob.h:40
double LobFtLbsToJ(double value)
Converts foot-pounds to joules.
LobBuilder * LobBuilderSplineFitTable(LobBuilder *pbuilder, const float *pmachs, const float *pdrags, size_t size)
Loads a custom Mach vs Drag table for the projectile.
double LobKgToGrain(double value)
Converts kilograms to grains.
void LobBuilderBuild(LobBuilder *pbuilder, LobContext *presult)
Builds the LobContext object with the configured parameters.
double LobDegToMil(double value)
Converts degrees to milliradians (MIL).
LobBuilder * LobBuilderRangeAngleDeg(LobBuilder *pbuilder, double value)
Sets the range angle (inclination) to the target in degrees.
LobBuilder * LobBuilderStepSize(LobBuilder *pbuilder, uint16_t value)
Sets the step size for the numerical solver.
LobBuilder * LobBuilderZeroImpactHeightInches(LobBuilder *pbuilder, double value)
Sets the zero impact height in inches.
double LobMbarToInHg(double value)
Converts millibars to inches of mercury.
uint8_t LobErrorT
Error codes returned by the builder.
Definition lob.h:62
double LobMoaToIphy(double value)
Converts minutes of angle (MOA) to inches per hundred yards (IPHY).
double LobMilToMoa(double value)
Converts milliradians (MIL) to minutes of angle (MOA).
double LobInchToMil(double value, double range_ft)
Inches of projection at a given range to milliradians (MIL).
LobBuilder * LobBuilderBallisticCoefficientPsi(LobBuilder *pbuilder, double value)
Sets the ballistic coefficient (Psi).
double LobMToYd(double value)
Converts meters to yards.
double LobFtToIn(double value)
Converts feet to inches.
double LobInToCm(double value)
Converts inches to centimeters.
LobBuilder * LobBuilderWindProfile(LobBuilder *pbuilder, const LobWindPoint *ppoints, size_t count)
Sets the downrange wind profile points.
LobBuilder * LobBuilderAltitudeOfFiringSiteFt(LobBuilder *pbuilder, double value)
Sets the altitude of the firing site in feet.
double LobLbsToGrain(double value)
Converts pounds to grains.
LobBuilder * LobBuilderMinimumSpeed(LobBuilder *pbuilder, uint16_t value)
Sets the minimum speed threshold for the solver.
double LobMilToIphy(double value)
Converts milliradians (MIL) to inches per hundred yards (IPHY).
LobBuilder * LobBuilderZeroDistanceYds(LobBuilder *pbuilder, double value)
Sets the zero distance in yards.
double LobMToFt(double value)
Converts meters to feet.
LobBuilder * LobBuilderNoseLengthInch(LobBuilder *pbuilder, double value)
Sets the projectile nose length in inches.
LobBuilder * LobBuilderInitialVelocityFps(LobBuilder *pbuilder, uint16_t value)
Sets the initial velocity of the projectile in feet per second.
LobBuilder * LobBuilderMeplatDiameterInch(LobBuilder *pbuilder, double value)
Sets the projectile meplat diameter in inches.
LobBuilder * LobBuilderWindHeadingDeg(LobBuilder *pbuilder, double value)
Sets the wind heading in degrees.
LobBuilder * LobBuilderAltitudeOfBarometerFt(LobBuilder *pbuilder, double value)
Sets the altitude of the location where air pressure was taken in feet.
double LobInchToMoa(double value, double range_ft)
Inches of projection at a given range to minutes of angle (MOA).
LobBuilder * LobBuilderMassGrains(LobBuilder *pbuilder, double value)
Sets the projectile mass in grains.
size_t LobSolveInverse(const LobContext *pctx, const uint32_t *pranges, LobOutput *pouts, size_t size)
Solves the exterior ballistics problem for a given set of ranges. Results contain an inverse-solution...
double LobPsiToInHg(double value)
Converts pounds per square inch (PSI) to inches of mercury.
double LobKgSqMToPmsi(double value)
Converts kilograms per square meter to pounds mass per square inch.
LobBuilder * LobBuilderWindHeading(LobBuilder *pbuilder, LobClockAngleT value)
Sets the wind heading using a clock angle.
double LobFpsToMps(double value)
Converts feet per second to meters per second.
double LobDegCToDegF(double value)
Converts degrees celsius to degrees fahrenheit.
double LobKnToMph(double value)
Converts Knots to miles per hour.
double LobYdToM(double value)
Converts yards to meters.
void LobBuilderCopy(LobBuilder *dst, const LobBuilder *src)
Copies builder state from src to dst. No-op if either is null.
LobBuilder * LobBuilderBaseDiameterInch(LobBuilder *pbuilder, double value)
Sets the projectile base diameter in inches.
void LobBuilderDestroy(LobBuilder *pbuilder)
Destroys a builder and releases resources. No-op if pbuilder is null.
LobBuilder * LobBuilderWindSpeedMph(LobBuilder *pbuilder, double value)
Sets the wind speed in miles per hour.
LobBuilder * LobBuilderWindShearExponent(LobBuilder *pbuilder, double value)
Sets the Hellmann shear exponent for wind profile height scaling.
double LobUsToS(double value)
Converts microseconds to seconds.
Opaque builder type for constructing LobContext objects.
Definition lob.h:178
size_t align_size
Definition lob.h:181
double align_double
Definition lob.h:180
uint8_t buffer[320]
Definition lob.h:182
Structure of parameters consumed by the solver.
Definition lob.h:139
float drags[15 *4]
Drag curve coefficients.
Definition lob.h:152
double aerodynamic_jump
Aerodynamic jump effect in Moa.
Definition lob.h:148
LobCoriolis coriolis
Coriolis effect parameters.
Definition lob.h:145
double k_lapse
Projected linear density lapse coeff.
Definition lob.h:150
double wind_shear_exponent
Hellmann exponent alpha; scaling.
Definition lob.h:155
LobWindNode wind_nodes[8]
Frame-resolved profile.
Definition lob.h:153
double speed_of_sound
The local speed of sound in Fps.
Definition lob.h:141
uint8_t wind_count
Total wind points, 1..LOB_WIND_POINTS.
Definition lob.h:161
double max_time
Max time of flight for solver.
Definition lob.h:151
double drag_coeff
Drag coefficient scaling factor.
Definition lob.h:140
double stability_factor
Miller stability factor.
Definition lob.h:147
LobErrorT error
Error status after build.
Definition lob.h:160
double mass
Mass of the projectile in pounds.
Definition lob.h:142
uint16_t minimum_speed
Minimum speed for solver.
Definition lob.h:158
double optic_height
Height of the optic above the bore.
Definition lob.h:143
LobGravity gravity
Gravity vector.
Definition lob.h:144
double zero_angle
Angle between sight and trajectory.
Definition lob.h:146
uint16_t velocity
Initial velocity of projectile in Fps.
Definition lob.h:157
double spindrift_factor
Spin drift factor.
Definition lob.h:149
uint16_t step_size
Solver step size in inches.
Definition lob.h:159
Coriolis effect parameters.
Definition lob.h:128
double cos_l_sin_a
2*Omega*cos(latitude)*sin(azimuth)
Definition lob.h:129
double sin_l
2*Omega*sin(latitude)
Definition lob.h:130
double cos_l_cos_a
2*Omega*cos(latitude)*cos(azimuth)
Definition lob.h:131
Gravity vector.
Definition lob.h:106
double x
Acceleration ft/s/s in the x-direction.
Definition lob.h:107
double y
Acceleration ft/s/s in the y-direction.
Definition lob.h:108
Structure holding the output results of a ballistic calculation.
Definition lob.h:165
uint32_t energy
Calculated energy in foot-pounds.
Definition lob.h:168
uint16_t velocity
Calculated velocity in feet per second.
Definition lob.h:167
uint32_t range
Associated range in feet.
Definition lob.h:166
double time_of_flight
Time of flight in seconds.
Definition lob.h:174
double elevation
Elevation change in inches (forward-solution) or MOA adjustment (inverse-solution).
Definition lob.h:169
double deflection
Windage deflection in inches (forward-solution) or MOA adjustment (inverse-solution).
Definition lob.h:172
Solver-ready wind profile node with frame-resolved components.
Definition lob.h:120
double y_fps
Wind in fps, frame Y (frame-up).
Definition lob.h:123
double z_fps
Wind in fps, lateral.
Definition lob.h:124
uint32_t range_ft
Downrange station in whole feet.
Definition lob.h:121
double x_fps
Wind in fps, frame X (downrange).
Definition lob.h:122
Downrange wind profile point (horizontal-plane wind).
Definition lob.h:112
double heading_deg
Wind heading in degrees (0 tailwind, 180 headwind); wraps mod 360.
Definition lob.h:114
double range_ft
Downrange position in feet.
Definition lob.h:113
double height_ft
Measurement height above ground in feet.
Definition lob.h:116
double speed_mph
Wind speed in miles per hour.
Definition lob.h:115