diff --git a/vcg/space/triangle3.h b/vcg/space/triangle3.h index 738d7d60..6cb8da83 100644 --- a/vcg/space/triangle3.h +++ b/vcg/space/triangle3.h @@ -24,6 +24,9 @@ History $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 moved InterpolationParamaters out the class Triangle @@ -314,6 +317,19 @@ typename TriangleType::ScalarType Perimeter(const TriangleType &t) Distance(t.P(2),t.P(0)); } +template +Point3 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(); + Point3c = 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 void TrianglePointDistance(const TriangleType &t, const typename TriangleType::CoordType & q,