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 |
|
A structured form of the user resolver config |
|
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 |
|
Returns a ball-ball collision model |
|
Returns a ball-circular cushion collision model |
|
Returns a ball-linear cushion collision model |
|
Returns a ball-pocket collision model |
|
Returns a stick-ball collision model |
|
Returns a transition model |
The location of the resolver config 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)[source]#
An Enum for different ball-ball collision models
- FRICTIONLESS_ELASTIC#
Frictionless, instantaneous, elastic, equal mass collision (
FrictionlessElastic).
- 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)[source]#
An Enum for different ball-circular cushion collision models
- HAN_2005#
https://ekiefl.github.io/2020/04/24/pooltool-theory/#3-han-2005 (
Han2005Linear).
- UNREALISTIC#
An unrealistic model in which balls are perfectly reflected. Spin is left untouched by the interaction (
UnrealisticCircular).
- 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)[source]#
An Enum for different ball-linear cushion collision models
- HAN_2005#
https://ekiefl.github.io/2020/04/24/pooltool-theory/#3-han-2005 (
Han2005Linear).
- UNREALISTIC#
An unrealistic model in which balls are perfectly reflected. Spin is left untouched by the interaction (
UnrealisticLinear).
- class pooltool.physics.resolve.BallPocketModel(value)[source]#
An Enum for different ball-pocket collision models
- CANONICAL#
Sets the ball into the bottom of pocket and sets the state to pocketed (
CanonicalBallPocket).
- 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)[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.ResolverConfig(ball_ball: BallBallModel, ball_ball_params: Mapping[str, float | int | str | bool], ball_linear_cushion: BallLCushionModel, ball_linear_cushion_params: Mapping[str, float | int | str | bool], ball_circular_cushion: BallCCushionModel, ball_circular_cushion_params: Mapping[str, float | int | str | bool], ball_pocket: BallPocketModel, ball_pocket_params: Mapping[str, float | int | str | bool], stick_ball: StickBallModel, stick_ball_params: Mapping[str, float | int | str | bool], transition: BallTransitionModel, transition_params: Mapping[str, float | int | str | bool])[source]#
A structured form of the user resolver config
Important
For everything you need to know about this class, see :doc:`Modular Physics </resources/custom_physics>`_.
Methods:
- classmethod default() ResolverConfig[source]#
Load ~/.config/pooltool/physics/resolver.yaml if exists, create otherwise
- Return type:
- 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)[source]#
An Enum for different stick-ball collision models
- INSTANTANEOUS_POINT#
Instantaneous and point-like stick-ball interaction (
InstantaneousPoint).
- class pooltool.physics.resolve.BallTransitionModel(value)[source]#
An Enum for different transition models
- CANONICAL#
Sets the ball to appropriate state. Sets any residual quantities to 0 when appropriate (
CanonicalTransition).
- 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:
Functions#
- pooltool.physics.resolve.get_ball_ball_model(model: BallBallModel | None = None, params: pooltool.physics.resolve.types.ModelArgs = {}) core.BallBallCollisionStrategy[source]#
Returns a ball-ball collision model
- Parameters:
model (Optional[BallBallModel]) -- An Enum specifying the desired model. If not passed,
FrictionlessElasticis passed with empty params.params (pooltool.physics.resolve.types.ModelArgs) -- A mapping of parameters accepted by the model.
- Returns:
An instantiated model that satisfies the
BallBallCollisionStrategyprotocol.- Return type:
- pooltool.physics.resolve.get_ball_circ_cushion_model(model: BallCCushionModel | None = None, params: pooltool.physics.resolve.types.ModelArgs = {}) core.BallCCushionCollisionStrategy[source]#
Returns a ball-circular cushion collision model
- Parameters:
model (Optional[BallCCushionModel]) -- An Enum specifying the desired model. If not passed,
Han2005Circularis passed with empty params.params (pooltool.physics.resolve.types.ModelArgs) -- A mapping of parameters accepted by the model.
- Returns:
An instantiated model that satisfies the
BallCCushionCollisionStrategyprotocol.- Return type:
- pooltool.physics.resolve.get_ball_lin_cushion_model(model: BallLCushionModel | None = None, params: pooltool.physics.resolve.types.ModelArgs = {}) core.BallLCushionCollisionStrategy[source]#
Returns a ball-linear cushion collision model
- Parameters:
model (Optional[BallLCushionModel]) -- An Enum specifying the desired model. If not passed,
Han2005Linearis passed with empty params.params (pooltool.physics.resolve.types.ModelArgs) -- A mapping of parameters accepted by the model.
- Returns:
An instantiated model that satisfies the
BallLCushionCollisionStrategyprotocol.- Return type:
- pooltool.physics.resolve.get_ball_pocket_model(model: BallPocketModel | None = None, params: pooltool.physics.resolve.types.ModelArgs = {}) BallPocketStrategy[source]#
Returns a ball-pocket collision model
- Parameters:
model (Optional[BallPocketModel]) -- An Enum specifying the desired model. If not passed,
CanonicalBallPocketis passed with empty params.params (pooltool.physics.resolve.types.ModelArgs) -- A mapping of parameters accepted by the model.
- Returns:
An instantiated model that satisfies the
BallPocketStrategyprotocol.- Return type:
- pooltool.physics.resolve.get_stick_ball_model(model: StickBallModel | None = None, params: pooltool.physics.resolve.types.ModelArgs = {}) core.StickBallCollisionStrategy[source]#
Returns a stick-ball collision model
- Parameters:
model (Optional[StickBallModel]) -- An Enum specifying the desired model. If not passed,
InstantaneousPointis passed with empty params.params (pooltool.physics.resolve.types.ModelArgs) -- A mapping of parameters accepted by the model.
- Returns:
An instantiated model that satisfies the
StickBallCollisionStrategyprotocol.- Return type:
- pooltool.physics.resolve.get_transition_model(model: BallTransitionModel | None = None, params: pooltool.physics.resolve.types.ModelArgs = {}) BallTransitionStrategy[source]#
Returns a transition model
- Parameters:
model (Optional[BallTransitionModel]) -- An Enum specifying the desired model. If not passed,
CanonicalTransitionis passed with empty params.params (pooltool.physics.resolve.types.ModelArgs) -- A mapping of parameters accepted by the model.
- Returns:
An instantiated model that satisfies the
BallTransitionStrategyprotocol.- Return type:
Attributes#
- pooltool.physics.resolve.RESOLVER_CONFIG_PATH#
The location of the resolver config path YAML