Recent Releases of Pooltool

Pooltool - v0.4.4

What's Changed

  • Consolidate config options by @ekiefl in https://github.com/ekiefl/pooltool/pull/189
  • Fix numerical stability of Mathavan + make default by @ekiefl in https://github.com/ekiefl/pooltool/pull/192
  • Demo fix by @ekiefl in https://github.com/ekiefl/pooltool/pull/193
  • Billiard cushion height buff by @ekiefl in https://github.com/ekiefl/pooltool/pull/194
  • fix LICENSE link in CONTRIBUTING.md by @derek-mcblane in https://github.com/ekiefl/pooltool/pull/190
  • Change default ball-ball by @ekiefl in https://github.com/ekiefl/pooltool/pull/198

Full Changelog: https://github.com/ekiefl/pooltool/compare/v0.4.3...v0.4.4

Scientific Software - Peer-reviewed - Python
Published by ekiefl 10 months ago

Pooltool - v0.4.3

What's Changed

  • Add simple frictional inelastic ball-ball collision model by @derek-mcblane in https://github.com/ekiefl/pooltool/pull/155
  • Fix Error in Ball-Ball Frictional Inelastic No-Slip Velocity Calculation by @derek-mcblane in https://github.com/ekiefl/pooltool/pull/157
  • Fixes for Cuestick-Ball Collision by @derek-mcblane in https://github.com/ekiefl/pooltool/pull/163
  • Safeguard cue ball ID mismatch by @ekiefl in https://github.com/ekiefl/pooltool/pull/164
  • Fix example by @ekiefl in https://github.com/ekiefl/pooltool/pull/165
  • Two players by default by @ekiefl in https://github.com/ekiefl/pooltool/pull/168
  • Visualisation carom balls by @erdo100 in https://github.com/ekiefl/pooltool/pull/169
  • Add ispoint to threecushion ruleset by @ekiefl in https://github.com/ekiefl/pooltool/pull/172
  • Fix ispoint in ruleset.threecushion by @erdo100 in https://github.com/ekiefl/pooltool/pull/173
  • Add some get_* methods to API by @ekiefl in https://github.com/ekiefl/pooltool/pull/174
  • Update examples by @ekiefl in https://github.com/ekiefl/pooltool/pull/175
  • Fix Error in Ball-Ball Frictional Inelastic No-Slip Velocity Calculation (Again) by @derek-mcblane in https://github.com/ekiefl/pooltool/pull/177
  • Refactor Resolver serialization + ball ball friction sub models by @ekiefl in https://github.com/ekiefl/pooltool/pull/171
  • Account for Tip Geometry to Determine Contact Point by @derek-mcblane in https://github.com/ekiefl/pooltool/pull/182
  • Fix cue contact point offset coordinate system mismatch between GUI and physics by @derek-mcblane in https://github.com/ekiefl/pooltool/pull/181
  • Add Mathavan 2010 as WIP by @ekiefl in https://github.com/ekiefl/pooltool/pull/183
  • Fix 184 by @ekiefl in https://github.com/ekiefl/pooltool/pull/185
  • Catch near-zero case in quadratic solver by @ekiefl in https://github.com/ekiefl/pooltool/pull/186

New Contributors

  • @erdo100 made their first contribution in https://github.com/ekiefl/pooltool/pull/169

Full Changelog: https://github.com/ekiefl/pooltool/compare/v0.4.2...v0.4.3

Scientific Software - Peer-reviewed - Python
Published by ekiefl 10 months ago

Pooltool - v0.4.2

What's Changed

Physics realism of the ball-ball collision has been significantly increased via the introduction of the Mathavan model.

  • add Mathavan frictional ball-ball collision model by @jzitelli in https://github.com/ekiefl/pooltool/pull/153

New Contributors

  • @jzitelli made their first contribution in https://github.com/ekiefl/pooltool/pull/153

Full Changelog: https://github.com/ekiefl/pooltool/compare/v0.4.1...v0.4.2

Scientific Software - Peer-reviewed - Python
Published by ekiefl about 1 year ago

Pooltool - v0.4.1

What's Changed

  • README has been overhauled
  • Docs have been overhauled (https://pooltool.readthedocs.io/en/latest/), and now support an Examples section of rendered notebooks
  • Installation instructions are clear and simplified
  • Test files no longer exist in the package, and are found in a mirroring directory tests
  • Event caching speeds up simulation times considerably: https://github.com/ekiefl/pooltool/pull/133
  • Numba functions are compiled when the user first enters the interactive interface. A corresponding translucent menu now pops up
  • Add deflection angle physics (squirt): https://github.com/ekiefl/pooltool/pull/139
  • The ShotViewer class has a new abstraction, pooltool.show and window management is automatically handled. No more idle window when there is nothing being visualized.

Full Changelog: https://github.com/ekiefl/pooltool/compare/v0.4.0...v0.4.1

Scientific Software - Peer-reviewed - Python
Published by ekiefl over 1 year ago

Pooltool - v0.4.0

What's Changed

  • Support for python 3.12
  • Dropped support for python 3.8
  • Development version changed to 3.12
  • Manage environment with poetry (https://github.com/ekiefl/pooltool/pull/124)
  • Streamline publishing procedure with poetry + dynamic versioning (https://github.com/ekiefl/pooltool/pull/125)

Full Changelog: https://github.com/ekiefl/pooltool/compare/v0.3.3...v0.4.0

Scientific Software - Peer-reviewed - Python
Published by ekiefl over 1 year ago

Pooltool - v0.3.3

What's Changed

  • Change of LICENSE from GPL to Apache by @ekiefl in https://github.com/ekiefl/pooltool/pull/123

Full Changelog: https://github.com/ekiefl/pooltool/compare/v0.3.2...v0.3.3

Scientific Software - Peer-reviewed - Python
Published by ekiefl over 1 year ago

Pooltool - v0.3.3

License change

This release marks the end of GPLv3 and the start of Apache 2.0. Now pooltool can be used in commercial and noncommercial projects.

Scientific Software - Peer-reviewed - Python
Published by ekiefl over 1 year ago

Pooltool - v0.3.2

What's Changed

  • Add paper.md and github action by @ekiefl in https://github.com/ekiefl/pooltool/pull/122

Full Changelog: https://github.com/ekiefl/pooltool/compare/v0.3.1...v0.3.2

Scientific Software - Peer-reviewed - Python
Published by ekiefl over 1 year ago

Pooltool - v0.3.1

What's Changed

Small release to create files needed for submission to pyOpenSci.

  • Add CONTRIBUTING and CODEOFCONDUCT by @ekiefl in https://github.com/ekiefl/pooltool/pull/121

Full Changelog: https://github.com/ekiefl/pooltool/compare/v0.3.0...v0.3.1

Scientific Software - Peer-reviewed - Python
Published by ekiefl over 1 year ago

Pooltool - v0.3.0

What's changed?

This release marks the maturation of pooltool into a proper python library, and comes in anticipation for its submission to pyOpenSci and JOSS.

  • Docstrings have been added for core of the library
  • Documentation, including an API reference, are available on readthedocs
  • The API hierarchy has been modified with design in mind. The most common objects are surfaced to the top-level API layer (import pooltool as pt; pt.System) and nearly all other objects can be accessed by subpackage cascading (import pooltool as pt; pt.ruleset.utils.respot)
  • Continuous integration has been implemented to encourage code standards regardless of contributor.
  • The transition from mypy to pyright for type-checking is now complete
  • isort and black have been replaced with the far faster ruff

PRs

  • Camera changes by @ekiefl in https://github.com/ekiefl/pooltool/pull/108
  • Table specs improvement by @ekiefl in https://github.com/ekiefl/pooltool/pull/109
  • Get started with Sphinx and readthedocs by @ekiefl in https://github.com/ekiefl/pooltool/pull/111
  • Use Napolean for Google -> RST conversion by @ekiefl in https://github.com/ekiefl/pooltool/pull/112
  • Autodoc touchups by @ekiefl in https://github.com/ekiefl/pooltool/pull/113
  • Essential docstring coverage by @ekiefl in https://github.com/ekiefl/pooltool/pull/115
  • CI by @ekiefl in https://github.com/ekiefl/pooltool/pull/116
  • rm vscode by @ekiefl in https://github.com/ekiefl/pooltool/pull/117
  • Notebook for validating 30 degree rule by @zhaodong-wang in https://github.com/ekiefl/pooltool/pull/119
  • Api redesign by @ekiefl in https://github.com/ekiefl/pooltool/pull/120

New Contributors

  • @zhaodong-wang made their first contribution in https://github.com/ekiefl/pooltool/pull/119

Full Changelog

https://github.com/ekiefl/pooltool/compare/v0.2.2...v0.3.0

Scientific Software - Peer-reviewed - Python
Published by ekiefl almost 2 years ago

Pooltool - v0.2.2

What's Changed

Amongst other things, this minor release comes with properly coded game modes for nine ball, eight ball, and three cushion. Additionally, a prototype for snooker has been added thanks to the help of @kerby2000's great work.

Full Changelog: https://github.com/ekiefl/pooltool/compare/v0.2.1...v0.2.2

Scientific Software - Peer-reviewed - Python
Published by ekiefl almost 2 years ago

Pooltool - v0.2.1

v0.2.1

This significant update introduces a physics engine with customizable collision resolution strategies. Users can now fine-tune the engine by either switching which models are used, modifying the parameters of a given model, or integrating their own physics models. Additionally, the simulation procedure has been profiled, bottlenecks were identified and resolved, and the net result is that simulation times are 4x faster. Finally, a more robust (and faster) quartic polynomial solver that uses a hybrid approach of both numerical and analytic approaches has been added.

Key Changes

  • Expanding the physics logic into a package: We have divided physics.py into multiple modules, each focusing on different types of event classes (ball-ball, ball-cushion, ball-pocket, and so on). This compartmentalized approach gives us "room to grow" for various event resolving models.

  • Event Resolver: An integral addition to this release is the event resolver, located in pooltool/physics/resolve/resolver.py. The resolver applies different physics strategies for each event class, providing a comprehensive and cohesive datastructure for everything physics-related. For detailed info, read the resolver README.md

  • Strategy Templates: To ensure the compatibility between the resolver's expectations and any future physics models that are added, there exists strategy templates. These static templates act as contracts, providing standardized interfaces for each collision event type. For detailed info, read the resolver README.md

  • User Configuration: Users can now configure their physics resolver settings using the resolver.yaml file, stored in ~/.config/pooltool/. This file allows users to choose their preferred model for each type of collision event and specify any additional parameters. For detailed info, read the resolver README.md

  • Performance Improvements: This version comes with notable speed optimizations. For a review of the changes, check out this PR. As is the case with speeding things up, some of the changes with the most dramatic changes in speed seem the most innocuous (hence the importance of profiling your code). Here are the improvements in speed per commit:

image

  • Analytic Quartic Polynomial Solving: Solving quartic polynomials (essential process in the continuous event-based shot evolution algorithm) has been improved. Now using a hybrid approach to solve, leveraging both the numerical method of finding eigenvalues of the companion matrix (slow but precise) and closed-form analytical equations (fast but possibly imprecise), and thus improving the quartic solving speed by 1.42x. It also improves handling of events that occur within a nanosecond, and handles ball intersection with balls and cushions with better precision and avoidance

Thanks for using pooltool.

Full Changelog: https://github.com/ekiefl/pooltool/compare/v0.2.0...v0.2.1

Scientific Software - Peer-reviewed - Python
Published by ekiefl over 2 years ago

Pooltool - v0.2.0

670 commits, 169 changed files, 14,444 additions, and 5,929 subtractions define the difference between v0.1 and v0.2.0. It's truly an impossible thing to summarize. My goal is to produce more frequent releases so that the release notes are comprehensive.

Scientific Software - Peer-reviewed - Python
Published by ekiefl over 2 years ago