From f10894770b76a27ab596fdf8bb4c094ce2ca7159 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 30 Apr 2020 00:27:07 +0800 Subject: [PATCH] fix aabb <-> aabb bug --- a8/collision.cc | 5 +++-- a8/vec2.cc | 6 ++++++ a8/vec2.h | 1 + 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/a8/collision.cc b/a8/collision.cc index 117e1f4..2002f9c 100644 --- a/a8/collision.cc +++ b/a8/collision.cc @@ -80,8 +80,9 @@ namespace a8 a8::Vec2 b_v = (b_max - b_min) * 0.5f; a8::Vec2 b_center = b_min + b_v; a8::Vec2 z = b_center - a_center; - float u = a_v.x + b_v.x - std::abs(z.x); - return u > 0; + float u1 = a_v.x + b_v.x - std::abs(z.x); + float u2 = a_v.y + b_v.y - std::abs(z.y); + return u1 > 0 && u2 > 0; } bool IntersectCircleCircle(a8::Vec2 a_pos, float a_rad, a8::Vec2 b_pos, float b_rad) diff --git a/a8/vec2.cc b/a8/vec2.cc index 44edd97..00e1075 100644 --- a/a8/vec2.cc +++ b/a8/vec2.cc @@ -76,6 +76,12 @@ namespace a8 return a1 / 3.1415926f; } + float Vec2::CalcAngleEx(const Vec2& b) + { + float a1 = acos(Dot(b) / Norm() / b.Norm()); + return a1 / 3.1415926f; + } + Vec2 Vec2::FromAngle(float angle) { Vec2 vec2; diff --git a/a8/vec2.h b/a8/vec2.h index 3357e7e..d6141d4 100644 --- a/a8/vec2.h +++ b/a8/vec2.h @@ -13,6 +13,7 @@ namespace a8 void Normalize(); void Rotate(float angle); float CalcAngle(const Vec2& b); + float CalcAngleEx(const Vec2& b); static Vec2 FromAngle(float angle); float Distance(const Vec2& b);