pooltool.physics.resolve ======================== .. py:module:: pooltool.physics.resolve Resolve events -------------- Subpackages ----------- .. toctree:: :titlesonly: :maxdepth: 1 ball_ball/index.rst ball_pocket/index.rst transition/index.rst Submodules ---------- .. toctree:: :titlesonly: :maxdepth: 1 resolver/index.rst Overview -------- .. list-table:: Classes :header-rows: 0 :widths: auto :class: summarytable * - :py:obj:`BallBallCollisionStrategy ` - Ball-ball collision models must satisfy this protocol * - :py:obj:`BallBallModel ` - An Enum for different ball-ball collision models * - :py:obj:`BallCCushionCollisionStrategy ` - Ball-circular cushion collision models must satisfy this protocol * - :py:obj:`BallCCushionModel ` - An Enum for different ball-circular cushion collision models * - :py:obj:`BallLCushionCollisionStrategy ` - Ball-linear cushion collision models must satisfy this protocol * - :py:obj:`BallLCushionModel ` - An Enum for different ball-linear cushion collision models * - :py:obj:`BallPocketModel ` - An Enum for different ball-pocket collision models * - :py:obj:`BallPocketStrategy ` - Ball-pocket collision models must satisfy this protocol * - :py:obj:`Resolver ` - A physics engine component that characterizes event resolution * - :py:obj:`ResolverConfig ` - A structured form of the user resolver config * - :py:obj:`StickBallCollisionStrategy ` - Stick-ball collision models must satisfy this protocol * - :py:obj:`StickBallModel ` - An Enum for different stick-ball collision models * - :py:obj:`BallTransitionModel ` - An Enum for different transition models * - :py:obj:`BallTransitionStrategy ` - Ball transition models must satisfy this protocol .. list-table:: Function :header-rows: 0 :widths: auto :class: summarytable * - :py:obj:`get_ball_ball_model `\ (model, params) - Returns a ball-ball collision model * - :py:obj:`get_ball_circ_cushion_model `\ (model, params) - Returns a ball-circular cushion collision model * - :py:obj:`get_ball_lin_cushion_model `\ (model, params) - Returns a ball-linear cushion collision model * - :py:obj:`get_ball_pocket_model `\ (model, params) - Returns a ball-pocket collision model * - :py:obj:`get_stick_ball_model `\ (model, params) - Returns a stick-ball collision model * - :py:obj:`get_transition_model `\ (model, params) - Returns a transition model .. list-table:: Attributes :header-rows: 0 :widths: auto :class: summarytable * - :py:obj:`RESOLVER_CONFIG_PATH ` - The location of the resolver config path YAML. Classes ------- .. autoclass:: BallBallCollisionStrategy Bases: :py:obj:`_BaseStrategy`, :py:obj:`Protocol` .. rubric:: Methods: .. py:method:: solve(ball1: pooltool.objects.ball.datatypes.Ball, ball2: pooltool.objects.ball.datatypes.Ball) -> Tuple[pooltool.objects.ball.datatypes.Ball, pooltool.objects.ball.datatypes.Ball] This method resolves a ball-ball collision .. autoclass:: BallBallModel Bases: :py:obj:`pooltool.utils.strenum.StrEnum` .. autoclass:: BallCCushionCollisionStrategy Bases: :py:obj:`_BaseCircularStrategy`, :py:obj:`Protocol` .. rubric:: Methods: .. py:method:: solve(ball: pooltool.objects.ball.datatypes.Ball, cushion: pooltool.objects.table.components.CircularCushionSegment) -> Tuple[pooltool.objects.ball.datatypes.Ball, pooltool.objects.table.components.CircularCushionSegment] This method resolves a ball-circular cushion collision .. autoclass:: BallCCushionModel Bases: :py:obj:`pooltool.utils.strenum.StrEnum` .. autoclass:: BallLCushionCollisionStrategy Bases: :py:obj:`_BaseLinearStrategy`, :py:obj:`Protocol` .. rubric:: Methods: .. py:method:: solve(ball: pooltool.objects.ball.datatypes.Ball, cushion: pooltool.objects.table.components.LinearCushionSegment) -> Tuple[pooltool.objects.ball.datatypes.Ball, pooltool.objects.table.components.LinearCushionSegment] This method resolves a ball-circular cushion collision .. autoclass:: BallLCushionModel Bases: :py:obj:`pooltool.utils.strenum.StrEnum` .. autoclass:: BallPocketModel Bases: :py:obj:`pooltool.utils.strenum.StrEnum` .. autoclass:: BallPocketStrategy Bases: :py:obj:`Protocol` .. rubric:: Methods: .. py:method:: 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] This method resolves a ball-circular cushion collision .. autoclass:: Resolver .. rubric:: Methods: .. py:method:: resolve(shot: pooltool.system.datatypes.System, event: pooltool.events.datatypes.Event) -> None Resolve an event for a system .. autoclass:: ResolverConfig .. rubric:: Methods: .. py:method:: default() -> ResolverConfig :classmethod: Load ~/.config/pooltool/physics/resolver.yaml if exists, create otherwise .. autoclass:: StickBallCollisionStrategy Bases: :py:obj:`_BaseStrategy`, :py:obj:`Protocol` .. rubric:: Methods: .. py:method:: solve(cue: pooltool.objects.cue.datatypes.Cue, ball: pooltool.objects.ball.datatypes.Ball) -> Tuple[pooltool.objects.cue.datatypes.Cue, pooltool.objects.ball.datatypes.Ball] This method resolves a ball-circular cushion collision .. autoclass:: StickBallModel Bases: :py:obj:`pooltool.utils.strenum.StrEnum` .. autoclass:: BallTransitionModel Bases: :py:obj:`pooltool.utils.strenum.StrEnum` .. autoclass:: BallTransitionStrategy Bases: :py:obj:`Protocol` .. rubric:: Methods: .. py:method:: resolve(ball: pooltool.objects.ball.datatypes.Ball, transition: pooltool.events.datatypes.EventType, inplace: bool = False) -> pooltool.objects.ball.datatypes.Ball This method resolves a ball transition Functions --------- .. py:function:: get_ball_ball_model(model: Optional[BallBallModel] = None, params: pooltool.physics.resolve.types.ModelArgs = {}) -> core.BallBallCollisionStrategy Returns a ball-ball collision model :param model: An Enum specifying the desired model. If not passed, :class:`FrictionalMathavan` is passed with empty params. :param params: A mapping of parameters accepted by the model. :returns: An instantiated model that satisfies the :class:`BallBallCollisionStrategy` protocol. .. py:function:: get_ball_circ_cushion_model(model: Optional[BallCCushionModel] = None, params: pooltool.physics.resolve.types.ModelArgs = {}) -> core.BallCCushionCollisionStrategy Returns a ball-circular cushion collision model :param model: An Enum specifying the desired model. If not passed, :class:`Han2005Circular` is passed with empty params. :param params: A mapping of parameters accepted by the model. :returns: An instantiated model that satisfies the :class:`BallCCushionCollisionStrategy` protocol. .. py:function:: get_ball_lin_cushion_model(model: Optional[BallLCushionModel] = None, params: pooltool.physics.resolve.types.ModelArgs = {}) -> core.BallLCushionCollisionStrategy Returns a ball-linear cushion collision model :param model: An Enum specifying the desired model. If not passed, :class:`Han2005Linear` is passed with empty params. :param params: A mapping of parameters accepted by the model. :returns: An instantiated model that satisfies the :class:`BallLCushionCollisionStrategy` protocol. .. py:function:: get_ball_pocket_model(model: Optional[BallPocketModel] = None, params: pooltool.physics.resolve.types.ModelArgs = {}) -> BallPocketStrategy Returns a ball-pocket collision model :param model: An Enum specifying the desired model. If not passed, :class:`CanonicalBallPocket` is passed with empty params. :param params: A mapping of parameters accepted by the model. :returns: An instantiated model that satisfies the :class:`BallPocketStrategy` protocol. .. py:function:: get_stick_ball_model(model: Optional[StickBallModel] = None, params: pooltool.physics.resolve.types.ModelArgs = {}) -> core.StickBallCollisionStrategy Returns a stick-ball collision model :param model: An Enum specifying the desired model. If not passed, :class:`InstantaneousPoint` is passed with empty params. :param params: A mapping of parameters accepted by the model. :returns: An instantiated model that satisfies the :class:`StickBallCollisionStrategy` protocol. .. py:function:: get_transition_model(model: Optional[BallTransitionModel] = None, params: pooltool.physics.resolve.types.ModelArgs = {}) -> BallTransitionStrategy Returns a transition model :param model: An Enum specifying the desired model. If not passed, :class:`CanonicalTransition` is passed with empty params. :param params: A mapping of parameters accepted by the model. :returns: An instantiated model that satisfies the :class:`BallTransitionStrategy` protocol. Attributes ---------- .. py:data:: RESOLVER_CONFIG_PATH The location of the resolver config path YAML.