From 4fb95b083b51c2cf334da5d207bd12085cbdc6e3 Mon Sep 17 00:00:00 2001 From: Yoann Date: Thu, 12 Jan 2012 20:57:27 +0100 Subject: [PATCH] Suite et fin de la fonction concaveCorner(). --- geometry/quad.cpp | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/geometry/quad.cpp b/geometry/quad.cpp index bacf7ed..8d55f10 100644 --- 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(); + 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(); - nne = nne; - nnw = nnw; - nse = nse; - nsw = nsw; + 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(); - return NW; + 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) {