pooltool.physics.resolve.ball_cushion#

Subpackages#

Overview#

Classes#

BallCCushionCollisionStrategy

Ball-circular cushion collision models must satisfy this protocol

BallLCushionCollisionStrategy

Ball-linear cushion collision models must satisfy this protocol

Han2005Circular

Operations used by every ball-linear cushion collision resolver

Han2005Linear

Operations used by every ball-linear cushion collision resolver

UnrealisticCircular

Operations used by every ball-linear cushion collision resolver

UnrealisticLinear

Operations used by every ball-linear cushion collision resolver

StrEnum

Enum where members are also (and must be) strings

BallLCushionModel

An Enum for different ball-linear cushion collision models

BallCCushionModel

An Enum for different ball-circular cushion collision models

Function#

get_ball_lin_cushion_model(model, params)

Returns a ball-linear cushion collision model

get_ball_circ_cushion_model(model, params)

Returns a ball-circular cushion collision model

Attributes#

ModelArgs

A mapping of argument names to argument values

Classes#

class pooltool.physics.resolve.ball_cushion.BallCCushionCollisionStrategy(*args, **kwargs)[source]#

Ball-circular cushion collision models must satisfy this protocol

Bases: _BaseCircularStrategy, Protocol

Methods:

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

Return type:

Tuple[pooltool.objects.ball.datatypes.Ball, pooltool.objects.table.components.CircularCushionSegment]

class pooltool.physics.resolve.ball_cushion.BallLCushionCollisionStrategy(*args, **kwargs)[source]#

Ball-linear cushion collision models must satisfy this protocol

Bases: _BaseLinearStrategy, Protocol

Methods:

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

Return type:

Tuple[pooltool.objects.ball.datatypes.Ball, pooltool.objects.table.components.LinearCushionSegment]

class pooltool.physics.resolve.ball_cushion.Han2005Circular[source]#

Bases: pooltool.physics.resolve.ball_cushion.core.CoreBallCCushionCollision

class pooltool.physics.resolve.ball_cushion.Han2005Linear[source]#

Bases: pooltool.physics.resolve.ball_cushion.core.CoreBallLCushionCollision

class pooltool.physics.resolve.ball_cushion.UnrealisticCircular(restitution: bool = True)[source]#

Bases: pooltool.physics.resolve.ball_cushion.core.CoreBallCCushionCollision

class pooltool.physics.resolve.ball_cushion.UnrealisticLinear(restitution: bool = True)[source]#

Bases: pooltool.physics.resolve.ball_cushion.core.CoreBallLCushionCollision

class pooltool.physics.resolve.ball_cushion.StrEnum(value)[source]#

Enum where members are also (and must be) strings

Bases: str, enum.Enum

class pooltool.physics.resolve.ball_cushion.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).

Bases: pooltool.utils.strenum.StrEnum

class pooltool.physics.resolve.ball_cushion.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).

Bases: pooltool.utils.strenum.StrEnum

Functions#

pooltool.physics.resolve.ball_cushion.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, Han2005Linear is 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 BallLCushionCollisionStrategy protocol.

Return type:

core.BallLCushionCollisionStrategy

pooltool.physics.resolve.ball_cushion.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, Han2005Circular is 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 BallCCushionCollisionStrategy protocol.

Return type:

core.BallCCushionCollisionStrategy

Attributes#

pooltool.physics.resolve.ball_cushion.ModelArgs#

A mapping of argument names to argument values