Releases: ekiefl/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.
New Contributors
Full Changelog: v0.4.1...v0.4.2
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: #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): #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: v0.4.0...v0.4.1
v0.4.0
v0.3.3
v0.3.2
v0.3.1
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
andblack
have been replaced with the far fasterruff
PRs
- Camera changes by @ekiefl in #108
- Table specs improvement by @ekiefl in #109
- Get started with Sphinx and readthedocs by @ekiefl in #111
- Use Napolean for Google -> RST conversion by @ekiefl in #112
- Autodoc touchups by @ekiefl in #113
- Essential docstring coverage by @ekiefl in #115
- CI by @ekiefl in #116
- rm vscode by @ekiefl in #117
- Notebook for validating 30 degree rule by @zhaodong-wang in #119
- Api redesign by @ekiefl in #120
New Contributors
- @zhaodong-wang made their first contribution in #119
Full Changelog
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: v0.2.1...v0.2.2
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:
- 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: v0.2.0...v0.2.1