Skip to content

Commit 83f1c46

Browse files
committed
Merge branch 'add-collisions' of https://github.com/autobotx343/Python into add-collisions
2 parents 27e8701 + 809da52 commit 83f1c46

1 file changed

Lines changed: 31 additions & 30 deletions

File tree

physics/collisions.py

Lines changed: 31 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,10 @@
1414
Reference: https://en.wikipedia.org/wiki/Collision
1515
"""
1616

17-
def inelastic_collisions(mass1 :float,
18-
mass2 :float,
19-
velocity1 :float,
20-
velocity2 :float
21-
) -> float :
17+
18+
def inelastic_collisions(
19+
mass1: float, mass2: float, velocity1: float, velocity2: float
20+
) -> float:
2221
"""Calculate final velocity after a perfectly inelastic collision.
2322
2423
The two objects stick together and share a common final velocity.
@@ -38,18 +37,16 @@ def inelastic_collisions(mass1 :float,
3837
>>> inelastic_collisions(9.0, 8.1, -3.2, 3.1)
3938
-0.22
4039
"""
41-
initial_momentum = ((mass1 * velocity1) + (mass2 * velocity2))
42-
total_mass = (mass2 + mass1)
43-
final_velocity = round((initial_momentum/total_mass), 2)
44-
40+
initial_momentum = (mass1 * velocity1) + (mass2 * velocity2)
41+
total_mass = mass2 + mass1
42+
final_velocity = round((initial_momentum / total_mass), 2)
43+
4544
return final_velocity
4645

4746

48-
def elastic_collisions(mass1 :float,
49-
mass2 :float,
50-
velocity1 :float,
51-
velocity2 :float
52-
) -> str :
47+
def elastic_collisions(
48+
mass1: float, mass2: float, velocity1: float, velocity2: float
49+
) -> str:
5350
"""Calculate final velocities after a perfectly elastic collision.
5451
5552
The collision is head-on and conserves both momentum and kinetic energy.
@@ -70,24 +67,25 @@ def elastic_collisions(mass1 :float,
7067
'2.76 ; -3.54'
7168
"""
7269
com_velocity = inelastic_collisions(mass1, mass2, velocity1, velocity2)
73-
initial_velocities = [velocity1, velocity2]
70+
initial_velocities = [velocity1, velocity2]
7471
final_velocities = []
7572

7673
for vel in initial_velocities:
7774
new_vel = -1 * (vel - com_velocity)
7875
final_vel = com_velocity + new_vel
7976
final_velocities.append(round(final_vel, 2))
80-
81-
return f'{final_velocities[0]} ; {final_velocities[1]}'
8277

78+
return f"{final_velocities[0]} ; {final_velocities[1]}"
8379

84-
def type_collision(mass1 :float,
85-
mass2 :float,
86-
velocity_initial1 :float,
87-
velocity_initial2 :float,
88-
velocity_final1 :float,
89-
velocity_final2 :float
90-
) -> str :
80+
81+
def type_collision(
82+
mass1: float,
83+
mass2: float,
84+
velocity_initial1: float,
85+
velocity_initial2: float,
86+
velocity_final1: float,
87+
velocity_final2: float,
88+
) -> str:
9189
"""Determine the collision type from initial and final velocities.
9290
9391
Compares initial and final momentum and kinetic energy to classify the collision.
@@ -111,19 +109,22 @@ def type_collision(mass1 :float,
111109
>>> type_collision(1.0, 1.0, 2.0, 3.0, 0.0, 0.0)
112110
'Inelastic Collision'
113111
"""
114-
momentum_initial = ((mass1 * velocity_initial1) + (mass2 * velocity_initial2))
115-
momentum_final = ((mass1 * velocity_final1) + (mass2 * velocity_final2))
116-
kinetic_initial = 0.5 * ((mass1 * velocity_initial1**2) + (mass2 * velocity_initial2**2))
112+
momentum_initial = (mass1 * velocity_initial1) + (mass2 * velocity_initial2)
113+
momentum_final = (mass1 * velocity_final1) + (mass2 * velocity_final2)
114+
kinetic_initial = 0.5 * (
115+
(mass1 * velocity_initial1**2) + (mass2 * velocity_initial2**2)
116+
)
117117
kinetic_final = 0.5 * ((mass1 * velocity_final1**2) + (mass2 * velocity_final2**2))
118118

119119
if kinetic_final == kinetic_initial and momentum_initial == momentum_final:
120120
return 'Perfectly Elastic Collision'
121-
elif kinetic_final != kinetic_initial and momentum_initial == momentum_final:
121+
elif not(kinetic_final == kinetic_initial) and momentum_initial == momentum_final:
122122
return 'Perfectly Inelastic Collision'
123123
else:
124-
return 'Inelastic Collision'
124+
return "Inelastic Collision"
125125

126126

127127
if __name__ == "__main__":
128128
import doctest
129-
doctest.testmod()
129+
130+
doctest.testmod()

0 commit comments

Comments
 (0)