Added Circumcenter function.
This commit is contained in:
parent
1e6b800880
commit
6c762759ab
|
@ -24,6 +24,9 @@
|
||||||
History
|
History
|
||||||
|
|
||||||
$Log: not supported by cvs2svn $
|
$Log: not supported by cvs2svn $
|
||||||
|
Revision 1.15 2007/05/10 09:31:15 cignoni
|
||||||
|
Corrected InterpolationParameters invocation
|
||||||
|
|
||||||
Revision 1.14 2007/05/04 16:33:27 ganovelli
|
Revision 1.14 2007/05/04 16:33:27 ganovelli
|
||||||
moved InterpolationParamaters out the class Triangle
|
moved InterpolationParamaters out the class Triangle
|
||||||
|
|
||||||
|
@ -314,6 +317,19 @@ typename TriangleType::ScalarType Perimeter(const TriangleType &t)
|
||||||
Distance(t.P(2),t.P(0));
|
Distance(t.P(2),t.P(0));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<class TriangleType>
|
||||||
|
Point3<typename TriangleType::ScalarType> Circumcenter(const TriangleType &t)
|
||||||
|
{
|
||||||
|
typename TriangleType::ScalarType a2 = (t.P(1) - t.P(2)).SquaredNorm();
|
||||||
|
typename TriangleType::ScalarType b2 = (t.P(2) - t.P(0)).SquaredNorm();
|
||||||
|
typename TriangleType::ScalarType c2 = (t.P(0) - t.P(1)).SquaredNorm();
|
||||||
|
Point3<typename TriangleType::ScalarType>c = t.P(0)*a2*(-a2 + b2 + c2) +
|
||||||
|
t.P(1)*b2*( a2 - b2 + c2) +
|
||||||
|
t.P(2)*c2*( a2 + b2 - c2);
|
||||||
|
c /= 2*(a2*b2 + a2*c2 + b2*c2) - a2*a2 - b2*b2 - c2*c2;
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
template<class TriangleType>
|
template<class TriangleType>
|
||||||
void TrianglePointDistance(const TriangleType &t,
|
void TrianglePointDistance(const TriangleType &t,
|
||||||
const typename TriangleType::CoordType & q,
|
const typename TriangleType::CoordType & q,
|
||||||
|
|
Loading…
Reference in New Issue