Fonction concaveCoroner() et isConcave() OK.

This commit is contained in:
Yoann 2012-01-12 21:14:26 +01:00
parent 4fb95b083b
commit 16841b35b1
2 changed files with 18 additions and 0 deletions

View File

@ -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);
}

View File

@ -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;