示例#1
0
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) );
}
示例#2
0
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;
}
示例#3
0
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;
}
示例#4
0
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;
}