libgolf

libgolf is a C++ library designed to simulate golf ball trajectories based on initial conditions like velocity, atmospheric data, and more. It provides easy-to-use functions to visualize or calculate the ball’s flight path and landing point (now including bounces, rolling, and dynamic ground surfaces!).

The in-air math here is based on work done by Prof. Alan M. Nathan at the University of Illinois Urbana-Champaign.

Build

git clone https://github.com/gdifiore/libgolf.git

cd libgolf

chmod +x build.sh

./build.sh

Features

Documentation

Quick Example

#include <libgolf.hpp>

const LaunchData ball{160.0f, 11.0f, 0.0f, 3000.0f, 0.0f}; // mph, °, °, rpm, rpm
const AtmosphericData atmos{70.0f, 0.0f, 0.0f, 0.0f, 0.0f, 50.0f, 29.92f};
GroundSurface ground; // Default fairway

FlightSimulator sim(ball, atmos, ground);
sim.run();

LandingResult result = sim.getLandingResult();
printf("Distance: %.1f yards\n", result.distance);

For dynamic ground surfaces (fairway/rough/green), see the Ground Providers Guide.