aboutsummaryrefslogtreecommitdiff
path: root/geom.hpp
diff options
context:
space:
mode:
authorAlex Auvolat <alex.auvolat@ens.fr>2015-02-01 20:08:57 +0100
committerAlex Auvolat <alex.auvolat@ens.fr>2015-02-01 20:08:57 +0100
commitd708798dbcccd0a7ffe5e9b4255bb458874077c4 (patch)
tree169c0ed325c2bc41f8d581b32d7da49bfa54038c /geom.hpp
parent1931b7e0e2389a9d04b07e36676f9060ebf4b9c3 (diff)
parent57a3b0a8ca868e428d00e9549d15f73872e4f832 (diff)
downloadRobotique-Projet-d708798dbcccd0a7ffe5e9b4255bb458874077c4.tar.gz
Robotique-Projet-d708798dbcccd0a7ffe5e9b4255bb458874077c4.zip
Merge branch 'master' of https://github.com/Alexis211/Robotique
Diffstat (limited to 'geom.hpp')
-rw-r--r--geom.hpp11
1 files changed, 7 insertions, 4 deletions
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 :*/