pooltool.physics.resolve.ball_cushion¶
Models for ball-cushion collisions.¶
Subpackages¶
Overview¶
Operations used by every ball-linear cushion collision resolver |
|
Operations used by every ball-linear cushion collision resolver |
|
Ball-cushion collision resolver for the Mathavan et al. (2010) collision model. |
|
Ball-cushion collision resolver for the Mathavan et al. (2010) collision model. |
|
Operations used by every ball-linear cushion collision resolver |
|
Operations used by every ball-linear cushion collision resolver |
|
An Enum for different ball-circular cushion collision models |
|
An Enum for different ball-linear cushion collision models |
Classes¶
- 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.Mathavan2010Circular(max_steps: int = 1000, delta_p: float = 0.001)[source]¶
Ball-cushion collision resolver for the Mathavan et al. (2010) collision model.
This work predicts ball bounce angles and bounce speeds for the ball’s collisions with a cushion, under the assumption of insignificant cushion deformation. Differential equations are derived for the ball dynamics during the impact and these these equations are solved numerically.
References
Mathavan S, Jackson MR, Parkin RM. A theoretical analysis of billiard ball-cushion dynamics under cushion impacts. Proceedings of the Institution of Mechanical Engineers, Part C. 2010;224(9):1863-1873. doi:10.1243/09544062JMES1964
Available at https://drdavepoolinfo.com//physics_articles/Mathavan_IMechE_2010.pdf
Bases:
pooltool.physics.resolve.ball_cushion.core.CoreBallCCushionCollisionMethods:
- 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]¶
Resolve ball-cushion collision via Mathavan et al. (2010).
This method computes the post-collision linear and angular velocities of a ball colliding with a cushion, taking into account both ball spin and frictional effects. The collision model is based on the theoretical analysis described by Mathavan et al., which considers 3D impact dynamics and the effects of topspin and sidespin on the rebound trajectory.
The function analyzes the ball’s incident velocity and spin components relative to the cushion’s normal and tangential planes. It then applies the derived differential equations to calculate the collision dynamics through numerical integration, accounting for both the compression and restitution phases of impact. The model incorporates the sliding coefficient of friction between ball and cushion as well as between ball and table, along with the coefficient of restitution. Once the complete impulse exchange is calculated, the updated linear and angular velocities are determined and returned.
The model assumes insignificant cushion deformation, which is reported to be valid for normal velocities up to 2.5 m/s, and accounts for transitions between sliding and rolling states during collision.
- class pooltool.physics.resolve.ball_cushion.Mathavan2010Linear(max_steps: int = 1000, delta_p: float = 0.001)[source]¶
Ball-cushion collision resolver for the Mathavan et al. (2010) collision model.
This work predicts ball bounce angles and bounce speeds for the ball’s collisions with a cushion, under the assumption of insignificant cushion deformation. Differential equations are derived for the ball dynamics during the impact and these these equations are solved numerically.
References
Mathavan S, Jackson MR, Parkin RM. A theoretical analysis of billiard ball-cushion dynamics under cushion impacts. Proceedings of the Institution of Mechanical Engineers, Part C. 2010;224(9):1863-1873. doi:10.1243/09544062JMES1964
Available at https://drdavepoolinfo.com//physics_articles/Mathavan_IMechE_2010.pdf
Bases:
pooltool.physics.resolve.ball_cushion.core.CoreBallLCushionCollisionMethods:
- 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]¶
Resolve ball-cushion collision via Mathavan et al. (2010).
This method computes the post-collision linear and angular velocities of a ball colliding with a cushion, taking into account both ball spin and frictional effects. The collision model is based on the theoretical analysis described by Mathavan et al., which considers 3D impact dynamics and the effects of topspin and sidespin on the rebound trajectory.
The function analyzes the ball’s incident velocity and spin components relative to the cushion’s normal and tangential planes. It then applies the derived differential equations to calculate the collision dynamics through numerical integration, accounting for both the compression and restitution phases of impact. The model incorporates the sliding coefficient of friction between ball and cushion as well as between ball and table, along with the coefficient of restitution. Once the complete impulse exchange is calculated, the updated linear and angular velocities are determined and returned.
The model assumes insignificant cushion deformation, which is reported to be valid for normal velocities up to 2.5 m/s, and accounts for transitions between sliding and rolling states during collision.
- class pooltool.physics.resolve.ball_cushion.UnrealisticCircular(restitution: bool = False)[source]¶
Bases:
pooltool.physics.resolve.ball_cushion.core.CoreBallCCushionCollision
- class pooltool.physics.resolve.ball_cushion.UnrealisticLinear(restitution: bool = False)[source]¶
Bases:
pooltool.physics.resolve.ball_cushion.core.CoreBallLCushionCollision
- class pooltool.physics.resolve.ball_cushion.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.ball_cushion.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