From e908a1e8e9e01fe78a66e5e704fdb2d38fe28727 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Sun, 1 Jan 2023 14:49:54 +0800 Subject: [PATCH] 1 --- a8/collision.cc | 12 ++++++++++++ a8/collision.h | 3 +++ 2 files changed, 15 insertions(+) diff --git a/a8/collision.cc b/a8/collision.cc index cab0a23..07ed6f0 100644 --- a/a8/collision.cc +++ b/a8/collision.cc @@ -362,4 +362,16 @@ namespace a8 } return true; } + + bool IntersectCylinderCylinder(const glm::vec3& a_pos, float a_rad, float a_height, + const glm::vec3& b_pos, float b_rad, float b_height) + { + glm::vec2 v = glm::vec2(b_pos.x, b_pos.z) - glm::vec2(a_pos.x, a_pos.z); + float n = glm::length(v); + if (n > a_rad + b_rad) { + return false; + } + return (a_pos.y - b_pos.y) < (a_height + b_height) / 2.0f; + } + } diff --git a/a8/collision.h b/a8/collision.h index 6585900..133b19e 100644 --- a/a8/collision.h +++ b/a8/collision.h @@ -16,6 +16,9 @@ namespace a8 float b_width, float b_height); bool IntersectCircleCircle(a8::Vec2 a_pos, float a_rad, a8::Vec2 b_pos, float b_rad); + bool IntersectCylinderCylinder(const glm::vec3& a_pos, float a_rad, float a_height, + const glm::vec3& b_pos, float b_rad, float b_height); + bool IntersectCircleArc(a8::Vec2 a_pos, float a_rad, a8::Vec2 b_pos,