double Face::S() { HalfEdge* tmpHalfEdge = OuterEdge; double a = tmpHalfEdge->Lenght(); tmpHalfEdge = tmpHalfEdge->Next; double b = tmpHalfEdge->Lenght(); tmpHalfEdge = tmpHalfEdge->Next; double c = tmpHalfEdge->Lenght(); tmpHalfEdge = tmpHalfEdge->Next; return sqrt( (a + b + c)*(b + c - a)*(a + c - b)*(a + b - c) ); }
HalfEdge* Face::MinEdge() { HalfEdge* MinEdge = OuterEdge; MinEdge = OuterEdge->Next->Lenght() < MinEdge->Lenght() ? OuterEdge->Next : MinEdge; MinEdge = OuterEdge->Prev->Lenght() < MinEdge->Lenght() ? OuterEdge->Prev : MinEdge; return MinEdge; }
HalfEdge* Face::MaxEdge() { HalfEdge* MaxEdge = OuterEdge; MaxEdge = OuterEdge->Next->Lenght() > MaxEdge->Lenght() ? OuterEdge->Next : MaxEdge; MaxEdge = OuterEdge->Prev->Lenght() > MaxEdge->Lenght() ? OuterEdge->Prev : MaxEdge; return MaxEdge; }
double Face::R() { HalfEdge* tmpHalfEdge = OuterEdge; double a = tmpHalfEdge->Lenght(); tmpHalfEdge = tmpHalfEdge->Next; double b = tmpHalfEdge->Lenght(); tmpHalfEdge = tmpHalfEdge->Next; double c = tmpHalfEdge->Lenght(); tmpHalfEdge = tmpHalfEdge->Next; if ((a + b + c)*(b + c - a)*(a + c - b)*(a + b - c) == 0) { cout << "Oops..Radius is zero" << endl; cout << Ghost << endl; cout << a << " " << b << " " << c << endl; } double R = a*b*c/sqrt( (a + b + c)*(b + c - a)*(a + c - b)*(a + b - c) ); return R; }