From b499d88a888df09d96476cd063c891cf59ae86be Mon Sep 17 00:00:00 2001 From: Alcorhytm <61729668+Andy666Fox@users.noreply.github.com> Date: Sun, 9 Feb 2025 10:35:27 +0300 Subject: [PATCH 1/2] Create collisions.py Added basic implementation of circle collision detection --- physics/collisions.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 physics/collisions.py diff --git a/physics/collisions.py b/physics/collisions.py new file mode 100644 index 000000000..ce6b0980f --- /dev/null +++ b/physics/collisions.py @@ -0,0 +1,21 @@ +# 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 = pow((pow(dx, 2) + pow(dy, 2)), 0.5) + + # minimum possible distance between circles, without collision + min_distance = fpos[2] + fpos[2] + collide = distance < min_distance + + # If actual distance smaller than minimal possible, cirlces collides + return collide + +if __name__ == "__main__": + from doctest import testmod + + testmod() From b0de73b1f15b2270c7b9a1b328e9d3f5f3996ea0 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sun, 9 Feb 2025 07:36:33 +0000 Subject: [PATCH 2/2] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- physics/collisions.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/physics/collisions.py b/physics/collisions.py index ce6b0980f..448f23d70 100644 --- a/physics/collisions.py +++ b/physics/collisions.py @@ -1,20 +1,22 @@ # Basic implementation of the collision of two circles. -def circle_collision(fpos: tuple[float, float, float], spos: tuple[float, float, float]) -> bool: +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 = pow((pow(dx, 2) + pow(dy, 2)), 0.5) - + # minimum possible distance between circles, without collision min_distance = fpos[2] + fpos[2] collide = distance < min_distance - + # If actual distance smaller than minimal possible, cirlces collides return collide + if __name__ == "__main__": from doctest import testmod