private bool IsBadPolygonAngle(double x1, double y1,
double x2, double y2, double x3, double y3)
{
// variables keeping the distance values for the edges
double dx12, dy12, dx23, dy23, dx31, dy31;
double dist12, dist23, dist31;
double cosAngle; // in order to check minimum angle condition
// calculate the side lengths
dx12 = x1 - x2;
dy12 = y1 - y2;
dx23 = x2 - x3;
dy23 = y2 - y3;
dx31 = x3 - x1;
dy31 = y3 - y1;
// calculate the squares of the side lentghs
dist12 = dx12 * dx12 + dy12 * dy12;
dist23 = dx23 * dx23 + dy23 * dy23;
dist31 = dx31 * dx31 + dy31 * dy31;
/// calculate cosine of largest angle ///
cosAngle = (dist12 + dist23 - dist31) / (2 * Math.Sqrt(dist12) * Math.Sqrt(dist23));
// Check whether the angle is smaller than permitted which is 2*minangle!!!
//printf("angle: %f 2*minangle = %f\n",acos(cosAngle)*180/PI, 2*acos(Math.Sqrt(b.goodangle))*180/PI);
if (Math.Acos(cosAngle) < 2 * Math.Acos(Math.Sqrt(behavior.goodAngle)))
{
return true;// it is a BAD triangle
}
return false;// it is a GOOD triangle
}