From 57a3b0a8ca868e428d00e9549d15f73872e4f832 Mon Sep 17 00:00:00 2001 From: Jean Fabre-Monplaisir Date: Sun, 1 Feb 2015 21:08:03 +0100 Subject: add collision detection (maybe finished) --- geom.hpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'geom.hpp') diff --git a/geom.hpp b/geom.hpp index 40d6813..27b3de5 100644 --- a/geom.hpp +++ b/geom.hpp @@ -188,7 +188,7 @@ struct circarc { }; struct angular_sector { - // attention, les circarc doivent avoir le même centre + // attention, les circarc doivent avoir le même centre et les mêmes angles circarc inner, outer; angular_sector(circarc i, circarc o) : inner(i), outer(o) { @@ -198,14 +198,17 @@ struct angular_sector { } bool is_in_sector(vec p) const{ - + if(inner.is_in_pie(p) && (p-inner.c.c).norm() <=outer.c.r && inner.c.r <=(p-inner.c.c).norm())return true; return false; } double dist(vec p) const{ if (is_in_sector(p)) return 0; - //TODO - return 42 ; + return std::min(std::min(std::min(inner.dist(p),outer.dist(p)), + segment(vec::from_polar(inner.c.r,inner.theta1)+inner.c.c, + vec::from_polar(outer.c.r,inner.theta2)+inner.c.c).dist(p)), + segment(vec::from_polar(inner.c.r,inner.theta2)+inner.c.c, + vec::from_polar(outer.c.r,inner.theta2)+inner.c.c).dist(p)) ; } }; /* vim: set ts=4 sw=4 tw=0 noet :*/ -- cgit v1.2.3