pooltool.physics.resolve¶
Resolve events¶
Subpackages¶
Submodules¶
Overview¶
Ball-ball collision models must satisfy this protocol |
|
An Enum for different ball-ball collision models |
|
Ball-circular cushion collision models must satisfy this protocol |
|
An Enum for different ball-circular cushion collision models |
|
Ball-linear cushion collision models must satisfy this protocol |
|
An Enum for different ball-linear cushion collision models |
|
An Enum for different ball-pocket collision models |
|
Ball-pocket collision models must satisfy this protocol |
|
A physics engine component that characterizes event resolution |
|
Stick-ball collision models must satisfy this protocol |
|
An Enum for different stick-ball collision models |
|
An Enum for different transition models |
|
Ball transition models must satisfy this protocol |
The location of the resolver path YAML. |
Classes¶
- class pooltool.physics.resolve.BallBallCollisionStrategy(*args, **kwargs)[source]¶
Ball-ball collision models must satisfy this protocol
Bases:
_BaseStrategy,ProtocolMethods:
- solve(ball1: pooltool.objects.ball.datatypes.Ball, ball2: pooltool.objects.ball.datatypes.Ball) Tuple[pooltool.objects.ball.datatypes.Ball, pooltool.objects.ball.datatypes.Ball][source]¶
This method resolves a ball-ball collision
- Return type:
Tuple[pooltool.objects.ball.datatypes.Ball, pooltool.objects.ball.datatypes.Ball]
- class pooltool.physics.resolve.BallBallModel(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)[source]¶
An Enum for different ball-ball collision models
- FRICTIONLESS_ELASTIC¶
Frictionless, instantaneous, elastic, equal mass collision.
- FRICTIONAL_INELASTIC¶
Frictional, inelastic, equal mass collision. (https://billiards.colostate.edu/technical_proofs/new/TP_A-14.pdf).
- FRICTIONAL_MATHAVAN¶
Mathavan, S., Jackson, M.R. & Parkin, R.M. Numerical simulations of the frictional collisions of solid balls on a rough surface. Sports Eng 17, 227–237 (2014). https://doi.org/10.1007/s12283-014-0158-y
Bases:
pooltool.utils.strenum.StrEnum
- class pooltool.physics.resolve.BallCCushionCollisionStrategy(*args, **kwargs)[source]¶
Ball-circular cushion collision models must satisfy this protocol
Bases:
_BaseCircularStrategy,ProtocolMethods:
- solve(ball: pooltool.objects.ball.datatypes.Ball, cushion: pooltool.objects.table.components.CircularCushionSegment) Tuple[pooltool.objects.ball.datatypes.Ball, pooltool.objects.table.components.CircularCushionSegment][source]¶
This method resolves a ball-circular cushion collision
- class pooltool.physics.resolve.BallCCushionModel(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)[source]¶
An Enum for different ball-circular cushion collision models
- UNREALISTIC¶
An unrealistic model in which balls are perfectly reflected. Spin is left untouched by the interaction.
Bases:
pooltool.utils.strenum.StrEnum
- class pooltool.physics.resolve.BallLCushionCollisionStrategy(*args, **kwargs)[source]¶
Ball-linear cushion collision models must satisfy this protocol
Bases:
_BaseLinearStrategy,ProtocolMethods:
- solve(ball: pooltool.objects.ball.datatypes.Ball, cushion: pooltool.objects.table.components.LinearCushionSegment) Tuple[pooltool.objects.ball.datatypes.Ball, pooltool.objects.table.components.LinearCushionSegment][source]¶
This method resolves a ball-circular cushion collision
- class pooltool.physics.resolve.BallLCushionModel(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)[source]¶
An Enum for different ball-linear cushion collision models
- UNREALISTIC¶
An unrealistic model in which balls are perfectly reflected. Spin is left untouched by the interaction.
Bases:
pooltool.utils.strenum.StrEnum
- class pooltool.physics.resolve.BallPocketModel(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)[source]¶
An Enum for different ball-pocket collision models
- CANONICAL¶
Sets the ball into the bottom of pocket and sets the state to pocketed.
Bases:
pooltool.utils.strenum.StrEnum
- class pooltool.physics.resolve.BallPocketStrategy(*args, **kwargs)[source]¶
Ball-pocket collision models must satisfy this protocol
Bases:
ProtocolMethods:
- resolve(ball: pooltool.objects.ball.datatypes.Ball, pocket: pooltool.objects.table.components.Pocket, inplace: bool = False) Tuple[pooltool.objects.ball.datatypes.Ball, pooltool.objects.table.components.Pocket][source]¶
This method resolves a ball-circular cushion collision
- Return type:
Tuple[pooltool.objects.ball.datatypes.Ball, pooltool.objects.table.components.Pocket]
- class pooltool.physics.resolve.Resolver(ball_ball: BallBallCollisionStrategy, ball_linear_cushion: BallLCushionCollisionStrategy, ball_circular_cushion: BallCCushionCollisionStrategy, ball_pocket: BallPocketStrategy, stick_ball: StickBallCollisionStrategy, transition: BallTransitionStrategy, version: int | None = None)[source]¶
A physics engine component that characterizes event resolution
Important
For everything you need to know about this class, see :doc:`Modular Physics </resources/custom_physics>`_.
Methods:
- resolve(shot: pooltool.system.datatypes.System, event: pooltool.events.datatypes.Event) None[source]¶
Resolve an event for a system
- class pooltool.physics.resolve.StickBallCollisionStrategy(*args, **kwargs)[source]¶
Stick-ball collision models must satisfy this protocol
Bases:
_BaseStrategy,ProtocolMethods:
- solve(cue: pooltool.objects.cue.datatypes.Cue, ball: pooltool.objects.ball.datatypes.Ball) Tuple[pooltool.objects.cue.datatypes.Cue, pooltool.objects.ball.datatypes.Ball][source]¶
This method resolves a ball-circular cushion collision
- Return type:
Tuple[pooltool.objects.cue.datatypes.Cue, pooltool.objects.ball.datatypes.Ball]
- class pooltool.physics.resolve.StickBallModel(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)[source]¶
An Enum for different stick-ball collision models
- INSTANTANEOUS_POINT¶
Instantaneous and point-like stick-ball interaction.
Bases:
pooltool.utils.strenum.StrEnum
- class pooltool.physics.resolve.BallTransitionModel(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)[source]¶
An Enum for different transition models
- CANONICAL¶
Sets the ball to appropriate state. Sets any residual quantities to 0 when appropriate.
Bases:
pooltool.utils.strenum.StrEnum
- class pooltool.physics.resolve.BallTransitionStrategy(*args, **kwargs)[source]¶
Ball transition models must satisfy this protocol
Bases:
ProtocolMethods:
- resolve(ball: pooltool.objects.ball.datatypes.Ball, transition: pooltool.events.datatypes.EventType, inplace: bool = False) pooltool.objects.ball.datatypes.Ball[source]¶
This method resolves a ball transition
- Return type:
Attributes¶
- pooltool.physics.resolve.RESOLVER_PATH¶
The location of the resolver path YAML.