commit 4fb95b083b51c2cf334da5d207bd12085cbdc6e3
parent 50a348eff890a34978c8ad514b6ef089347e2399
Author: Yoann <yoann.b87@voila.fr>
Date: Thu, 12 Jan 2012 20:57:27 +0100
Suite et fin de la fonction concaveCorner().
Diffstat:
1 file changed, 22 insertions(+), 11 deletions(-)
diff --git a/geometry/quad.cpp b/geometry/quad.cpp
@@ -158,17 +158,28 @@ Coin Quad::maxAngleCorner() const {
}
Coin Quad::concaveCorner() {
- Vertex nne = Triangle(c[NW], c[NE], c[SE]).normal();
- Vertex nse = Triangle(c[NE], c[SE], c[SW]).normal();
- Vertex nsw = Triangle(c[SE], c[SW], c[NW]).normal();
- Vertex nnw = Triangle(c[SW], c[NW], c[NE]).normal();
-
- nne = nne;
- nnw = nnw;
- nse = nse;
- nsw = nsw;
-
- return NW;
+ 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 dne2 = (nse - nne).norm();
+ float dse1 = (nne - nse).norm();
+ float dse2 = (nsw - nse).norm();
+ float dsw1 = (nse - nsw).norm();
+ float dsw2 = (nnw - nsw).norm();
+ //float dnw1 = (nsw - nnw).norm();
+ //float dnw2 = (nne - nnw).norm();
+
+ if(dne1 >= 1.5 && dne2 >= 1.5)
+ return NE;
+ else if(dse1 >= 1.5 && dse2 >= 1.5)
+ return SE;
+ else if(dsw1 >= 1.5 && dsw2 >= 1.5)
+ return SW;
+ else
+ return NW;
}
Quad operator+(const Quad& q, const Vertex& v) {