commit 16841b35b15c2ffede21bf0285c4aa20f77d5006
parent 4fb95b083b51c2cf334da5d207bd12085cbdc6e3
Author: Yoann <yoann.b87@voila.fr>
Date: Thu, 12 Jan 2012 21:14:26 +0100
Fonction concaveCoroner() et isConcave() OK.
Diffstat:
2 files changed, 18 insertions(+), 0 deletions(-)
diff --git a/geometry/quad.cpp b/geometry/quad.cpp
@@ -182,6 +182,23 @@ Coin Quad::concaveCorner() {
return NW;
}
+bool Quad::isConcave() {
+ Vertex nne = Triangle(c[NW], c[NE], c[SE]).normalizedNormal();
+ Vertex nse = Triangle(c[NE], c[SE], c[SW]).normalizedNormal();
+ Vertex nsw = Triangle(c[SE], c[SW], c[NW]).normalizedNormal();
+ Vertex nnw = Triangle(c[SW], c[NW], c[NE]).normalizedNormal();
+
+ float dne1 = (nnw - nne).norm();
+ float dse1 = (nne - nse).norm();
+ float dsw1 = (nse - nsw).norm();
+ float dnw1 = (nsw - nnw).norm();
+
+ if(dne1 >= 1.5 || dse1 >= 1.5 || dsw1 >= 1.5 || dnw1 >= 1.5)
+ return true;
+
+ return false;
+}
+
Quad operator+(const Quad& q, const Vertex& v) {
return Quad(q[NE] + v, q[SE] + v, q[SW] + v, q[NW] + v);
}
diff --git a/geometry/quad.hh b/geometry/quad.hh
@@ -38,6 +38,7 @@ class Quad {
Cardinal minLengthSide() const;
Cardinal maxLengthSide() const;
Coin concaveCorner();
+ bool isConcave();
float angle(Coin corner) const;
float minAngle() const;
float maxAngle() const;