``pooltool.physics`` ==================== .. py:module:: pooltool.physics Physics subpackage for pooltool Classes ------- .. autoclass:: PhysicsEngine .. autoclass:: BallBallModel Bases: :py:obj:`pooltool.utils.strenum.StrEnum` .. autoclass:: BallBallFrictionModel Bases: :py:obj:`pooltool.utils.strenum.StrEnum` .. autoclass:: BallCCushionModel Bases: :py:obj:`pooltool.utils.strenum.StrEnum` .. autoclass:: BallLCushionModel Bases: :py:obj:`pooltool.utils.strenum.StrEnum` .. autoclass:: BallPocketModel Bases: :py:obj:`pooltool.utils.strenum.StrEnum` .. autoclass:: Resolver .. rubric:: Methods: .. py:method:: resolve(shot: pooltool.system.datatypes.System, event: pooltool.events.datatypes.Event) -> None Resolve an event for a system .. py:method:: save(path: pooltool.serialize.Pathish) -> pathlib.Path .. py:method:: load(path: pooltool.serialize.Pathish) -> Resolver :classmethod: .. py:method:: default() -> Resolver :classmethod: Load ~/.config/pooltool/physics/resolver.yaml if exists, create otherwise .. autoclass:: StickBallModel Bases: :py:obj:`pooltool.utils.strenum.StrEnum` .. autoclass:: BallTransitionModel Bases: :py:obj:`pooltool.utils.strenum.StrEnum` Functions --------- .. py:function:: evolve_ball_motion(state: int, rvw: numpy.typing.NDArray[numpy.float64], R: float, m: float, u_s: float, u_sp: float, u_r: float, g: float, t: float) -> tuple[numpy.typing.NDArray[numpy.float64], int] Evolve a ball's kinematic state forward in time. Contract: This function always returns a new array. The input rvw is never modified, and the returned array has no aliasing with the input. The caller owns the returned array. .. py:function:: display_models() Attributes ---------- .. py:data:: ball_ball_models :type: dict[pooltool.physics.resolve.models.BallBallModel, type[core.BallBallCollisionStrategy]] .. py:data:: ball_ball_friction_models :type: dict[BallBallFrictionModel, type[BallBallFrictionStrategy]] .. py:data:: ball_ccushion_models :type: dict[pooltool.physics.resolve.models.BallCCushionModel, type[core.BallCCushionCollisionStrategy]] .. py:data:: ball_lcushion_models :type: dict[pooltool.physics.resolve.models.BallLCushionModel, type[core.BallLCushionCollisionStrategy]] .. py:data:: ball_pocket_models :type: dict[pooltool.physics.resolve.models.BallPocketModel, type[BallPocketStrategy]] .. py:data:: RESOLVER_PATH The location of the resolver path YAML. .. py:data:: stick_ball_models :type: dict[pooltool.physics.resolve.models.StickBallModel, type[core.StickBallCollisionStrategy]] .. py:data:: ball_transition_models :type: dict[pooltool.physics.resolve.models.BallTransitionModel, type[BallTransitionStrategy]]