Skip to content

Release v4.5.2 - docs + contract bugfixes - #40

Merged
gdifiore merged 9 commits into
mainfrom
development
May 30, 2026
Merged

gdifiore merged 9 commits into
mainfrom
development

Conversation

@gdifiore

@gdifiore gdifiore commented May 30, 2026 •

Copy link
Copy Markdown
Owner

Docs and contract bugfixes, no API change.

Changes

  • fix(sim): getLandingResult measures from launch start — subtracts {startX,startY}.
  • docs(atmospheric): corrected phiWind direction table in atmospheric_data.hpp (code unchanged).
  • docs: fixed air-density unit label on getRhoImperial; annotated context getters with what isn't pluggable.
  • chore(build): version bumped to 4.5.2; fixed GOLF_VERSION_MAJOR casing.
  • test(flight-sim): corrected stale atmospheric field labels.

Downstream callers

The landing-result fix changes numeric output for nonzero startX/startY. Previously the result was not offset by launch start; now it is. Callers passing a nonzero start will see different landing coordinates.

Tag

v4.5.2 after merge.

gdifiore added 9 commits May 30, 2026 08:37
Old bullets labeled every cardinal wrong (0°=crosswind, 90°=headwind, 180°=tailwind). Implementation is vWind*sin→x, vWind*cos→y (ShotPhysicsContext.cpp:117-118), so
0°=tailwind, 90°=crosswind L→R, 180°=headwind. Doc now matches the trig; code unchanged.
getLandingResult derived distance, bearing, and xF/yF/zF from the world origin, contradicting their docstrings ("straight-line distance from launch to final position",
bearing "from start to landing"). The start position was consumed at construction and never retained, so a nonzero startX/startY (e.g. an approach shot) skewed every output
by the start offset.

Persist the launch origin and subtract it once, in feet, before converting to yards and deriving the polar pair.

Output changes for nonzero startX/startY; zero-start shots are unaffected.
getRhoImperial is lb/ft³, not slugs/ft³ the documented label was off by ~32×. Annotate every ShotPhysicsContext getter with its unit to match the AerodynamicState
convention (imperial kinematics, SI atmosphere), so the conversion boundary is self-documenting.
set() defined golf_VERSION_MAJOR (lowercase) but version.hpp.in
substitutes @GOLF_VERSION_MAJOR@, leaving the generated header's
MAJOR define empty. Uppercase it so the configured version.hpp
carries all four version values.
@gdifiore gdifiore changed the title Release v4.5.2 — Wave A (docs + contract bugfixes) Release v4.5.2 - docs + contract bugfixes May 30, 2026
@gdifiore
gdifiore merged commit 8eb70dc into main May 30, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant