diff --git a/physics/collisions.py b/physics/collisions.py new file mode 100644 index 000000000000..a8e118e35376 --- /dev/null +++ b/physics/collisions.py @@ -0,0 +1,23 @@ +from typing import Tuple +import numpy as np + + +# Basic implementation of the collision of two circles. +def circle_collision( + fpos: Tuple[float, float, float], spos: Tuple[float, float, float] +) -> bool: + # difference by XY axes + dx = fpos[0] - spos[0] + dy = fpos[1] - spos[1] + + # Euclidean distance between the centers of circles + distance = np.sqrt(pow(dx, 2) + pow(dy, 2)) + + # minimum possible distance between circles, without collision + min_distance = fpos[2] + fpos[2] + + # If actual distance smaller than minimal possible, cirlces collides + if distance < min_distance: + return True + + return False