What's Changed
* V2.0.0b0 by o-murphy in https://github.com/o-murphy/py-ballisticcalc/pull/52
* Fixed example so it actually works
* Bug fix: Barrel twist direction had wrong sign.
* New interface. UsageDemo Jupyter notebook shows how to use it.
* Fixed bugs to allow default to no spin drift.
* Simplified twist parameters and row arguments
in calculator; fixed logic for outputting special rows
* Refactoring: Removed "weapon"
* Some bug fixes, and refactored to require zero or
elevation be specified for every trajectory calculation
since any change to parameters will likely alter the zero.
* Remove and replace units *.value() method because:
1. It was identical to *.get_in() methods
2. We expect .value to be a property, not a method, but IDEs can't
detect that erroneous assumption and it creates confusing runtime errors
3. Replaced with .get_value() method that does .get_in(default_unit)
* Revert to original setup.py for pull request
* Notes and subtle fix.
* Notes and subtle fix.
* Delete .gitignore
* Delete .vscode directory
* Bug fix to restore sight_angle algorithm
* Add .gitignore
* Modified zero-finding logic to support look angles.
Implemented look_angles for charting and added lines of interest.
* Applied changes to .pyx; cleaned lint
* New paradigm:
Weapon class stores only characteristics of the gun: scope_height, barrel twist, and zero_elevation (which gives angle of barrel with sight set to "zero")
(Expect to use Calculator.set_weapon_zero to get the zero-elevation to hit a target under specific conditions.)
Shot class stores data specific to a shot: atmosphere, weapon, look_angle, cant_angle, and relative_angle (which reflects any sight/hold adjustments to firing angle)
The range and step for trajectory calculation are now passed explicitly to Calculator.fire(), not stored in Shot.
Changes not yet applied to .pyx
TODO comments added throughout code. Particularly as I discovered cant_angle not consistently implemented and wind_vector calculation needs review.
* Got tests working on pure python. Delinted.
Extended example to show use of relative_angle.
* Implemented changes in .pyx + improvements to plots.
* Update __init__.py
* Added representation of default Settings.Units.
* Angles truncated to circle (i.e., always < 2Pi).
Removed null tests. Added new test module for newly specified "sanity-check" tests.
* Moved ammo and weapon from Calculator to Shot class, which now stores all data relevant to a shot including look angle and atmosphere.
Calculator defaults to 10 steps.
* Delinted.
* Delinted.
* Changed default atmosphere to use 0% humidity (vs. 78% previously).
Changed trajectory tests based on this default.
Added twist tests.
Fixed sign on spin drift.
Switched default units for pressure, temperature, and energy from metric to standard (matching all the others).
Optional argument to format DataFrame values as strings with units.
* Renamed "HP" pressure unit to "hPa".
* Trying to get package test fail details.
* Trying to get check-in tests to pass.
* Added look angle to danger space string when non-zero.
Added HitResult.get_at_distance() and .index_at_distance().
Added Units section to Example.
* Broke out logic from Calculator.set_weapon_zero to .barrel_elevation_for_target() so we can get elevation without setting the weapon zero.
Added .unit_value property to Units to simplify arithmetic on Units.
* Tweaks.
* Improved examples; output tweaks.
* Implemented cant_angle.
* Put changes into cython trajectory_calc.pyx
* Fixed and verified wind effect on trajectory.
* Added unit tests for Atmo and Ammo. Made optional:
DragModel.weight and .diameter, Ammo.length
because those are only relevant for computing
spin-drift, (i.e., when Weapon.twist!=0).
* Fixes to Atmosphere: Given altitude but no temperature, will now calculate standard temperature.
* Cleanup
* Removed obsolete demo.
* Update README.md
* Fixed confusing names for constants.
* Moved projectile length from Ammo to DragModel, where the other projectile dimensions are handled.
* Fixed Ammo temperature sensitivity logic.
* Tweaks to unit strings.
* Beginning Atmosphere refactoring.
* Refactored and revalidated Atmosphere.
* Fixed bugs: Zero-finding now incorporates powder sensitivity, if enabled.
Trajectory_range works with Distance-type argument.
Optimized Atmosphere density calls.
* Fixed drawing of danger space for non-zero look angles.
Added Exception when zero() fails to find solution within cZeroFindingAccuracy.
* Added some changes from current head master.
* Cleanup and comments.
* Delinted.
* Cleanup.
* Clarified ballistic coefficient and magic constant. Ref issue 12
* Fix to danger space.
* Fixed dbookstaber/py_ballistics2 and cleaned up time-step logic.
* Reverted change to delta_time. Added fields to TrajectoryData to facilitate understanding non-zero look-angle trajectories.
* Applied same changes to cython so all tests pass.
* Reframed drop adjustment to line-of-sight.
* Added illustrations to README
* Restored all README contents.
* Added multiple-winds example.
* Fix: Assume no wind if none listed after last Wind.until_distance
* Major refactoring of trajectory_calc; ref dbookstaber/py_ballistics11
* Windage/spin-drift cleanup.
* Applied to cython
* Changes for merge to parent project:
Changed Unit enums to CamelCase so they match AbstractUnit subclasses.
Reverted Ammo.temp_modifier from fps/°F to %v_delta/15°C.
Added example from previous version: ukrop_338lm_300gr_smk.py
* Delinted
* dependencies fix
* pylint fix
* example updated
* copyright update, README.md fix
* pyproject.toml fix
---------
Co-authored-by: dbookstaber <bookstabergmail.com>
Co-authored-by: dbookstaber <99043839+dbookstaberusers.noreply.github.com>
**Full Changelog**: https://github.com/o-murphy/py-ballisticcalc/compare/v1.1.4...v2.0.0b0