www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

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:
Mgeometry/quad.cpp | 17+++++++++++++++++
Mgeometry/quad.hh | 1+
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;