Skip to content

Commit d56039a

Browse files
[pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
1 parent be3aacb commit d56039a

1 file changed

Lines changed: 37 additions & 36 deletions

File tree

physics/collisions.py

Lines changed: 37 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,21 @@
11
"""
2-
Finding the type of collision and calculating final velocities after collisions are fundamental concepts in physics.
3-
This module provides functions to compute the final velocities of two masses after both inelastic and elastic collisions,
2+
Finding the type of collision and calculating final velocities after collisions are fundamental concepts in physics.
3+
This module provides functions to compute the final velocities of two masses after both inelastic and elastic collisions,
44
as well as a function to determine the type of collision based on initial and final velocities.
55
66
Description: Collisions in physics refers to the interaction between two masses when they collide head-on. There are 2 types of
7-
collisions: inelastic and elastic. In an inelastic collision, the two masses stick together and move with a common velocity
7+
collisions: inelastic and elastic. In an inelastic collision, the two masses stick together and move with a common velocity
88
after the collision. In an elastic collision, both momentum and kinetic energy are conserved, and the masses bounce off each other without sticking together.
9-
Momentum is the product of mass and velocity, while kinetic energy is given by the formula (1/2) * mass * velocity^2.
9+
Momentum is the product of mass and velocity, while kinetic energy is given by the formula (1/2) * mass * velocity^2.
1010
The type of collision can be determined by comparing the initial and final momentum and kinetic energy of the system.
1111
1212
Reference: https://en.wikipedia.org/wiki/Collision
1313
"""
1414

15-
def inelastic_collisions(mass1 :float,
16-
mass2 :float,
17-
velocity1 :float,
18-
velocity2 :float
19-
) -> float :
15+
16+
def inelastic_collisions(
17+
mass1: float, mass2: float, velocity1: float, velocity2: float
18+
) -> float:
2019
"""Calculate final velocity after a perfectly inelastic collision.
2120
2221
The two objects stick together and share a common final velocity.
@@ -36,18 +35,16 @@ def inelastic_collisions(mass1 :float,
3635
>>> inelastic_collisions(9.0, 8.1, -3.2, 3.1)
3736
-0.22
3837
"""
39-
initial_momentum = ((mass1 * velocity1) + (mass2 * velocity2))
40-
total_mass = (mass2 + mass1)
41-
final_velocity = round((initial_momentum/total_mass), 2)
42-
38+
initial_momentum = (mass1 * velocity1) + (mass2 * velocity2)
39+
total_mass = mass2 + mass1
40+
final_velocity = round((initial_momentum / total_mass), 2)
41+
4342
return final_velocity
4443

4544

46-
def elastic_collisions(mass1 :float,
47-
mass2 :float,
48-
velocity1 :float,
49-
velocity2 :float
50-
) -> str :
45+
def elastic_collisions(
46+
mass1: float, mass2: float, velocity1: float, velocity2: float
47+
) -> str:
5148
"""Calculate final velocities after a perfectly elastic collision.
5249
5350
This assumes the collision is head-on and conserves both momentum and kinetic energy.
@@ -68,24 +65,25 @@ def elastic_collisions(mass1 :float,
6865
'2.76 ; -3.54'
6966
"""
7067
com_velocity = inelastic_collisions(mass1, mass2, velocity1, velocity2)
71-
initial_velocities = [velocity1, velocity2]
68+
initial_velocities = [velocity1, velocity2]
7269
final_velocities = []
7370

7471
for vel in initial_velocities:
7572
new_vel = -1 * (vel - com_velocity)
7673
final_vel = com_velocity + new_vel
7774
final_velocities.append(round(final_vel, 2))
78-
79-
return f'{final_velocities[0]} ; {final_velocities[1]}'
8075

76+
return f"{final_velocities[0]} ; {final_velocities[1]}"
8177

82-
def type_collision(mass1 :float,
83-
mass2 :float,
84-
velocity_initial1 :float,
85-
velocity_initial2 :float,
86-
velocity_final1 :float,
87-
velocity_final2 :float
88-
) -> str :
78+
79+
def type_collision(
80+
mass1: float,
81+
mass2: float,
82+
velocity_initial1: float,
83+
velocity_initial2: float,
84+
velocity_final1: float,
85+
velocity_final2: float,
86+
) -> str:
8987
"""Determine the collision type from initial and final velocities.
9088
9189
Compares initial and final momentum and kinetic energy to classify the collision.
@@ -109,19 +107,22 @@ def type_collision(mass1 :float,
109107
>>> type_collision(1.0, 1.0, 2.0, 3.0, 0.0, 0.0)
110108
'Inelastic Collision'
111109
"""
112-
momentum_initial = ((mass1 * velocity_initial1) + (mass2 * velocity_initial2))
113-
momentum_final = ((mass1 * velocity_final1) + (mass2 * velocity_final2))
114-
kinetic_initial = 0.5 * ((mass1 * velocity_initial1**2) + (mass2 * velocity_initial2**2))
110+
momentum_initial = (mass1 * velocity_initial1) + (mass2 * velocity_initial2)
111+
momentum_final = (mass1 * velocity_final1) + (mass2 * velocity_final2)
112+
kinetic_initial = 0.5 * (
113+
(mass1 * velocity_initial1**2) + (mass2 * velocity_initial2**2)
114+
)
115115
kinetic_final = 0.5 * ((mass1 * velocity_final1**2) + (mass2 * velocity_final2**2))
116116

117117
if kinetic_final == kinetic_initial and momentum_initial == momentum_final:
118-
return f'Perfectly Elastic Collision'
119-
elif not(kinetic_final == kinetic_initial) and momentum_initial == momentum_final:
120-
return f'Perfectly Inelastic Collision'
118+
return f"Perfectly Elastic Collision"
119+
elif not (kinetic_final == kinetic_initial) and momentum_initial == momentum_final:
120+
return f"Perfectly Inelastic Collision"
121121
else:
122-
return f'Inelastic Collision'
122+
return f"Inelastic Collision"
123123

124124

125125
if __name__ == "__main__":
126126
import doctest
127-
doctest.testmod()
127+
128+
doctest.testmod()

0 commit comments

Comments
 (0)