diff -up ./code/PolyTools.h.gcc47 ./code/PolyTools.h --- ./code/PolyTools.h.gcc47 2012-04-12 00:03:17.653420693 -0400 +++ ./code/PolyTools.h 2012-04-12 00:13:22.410132366 -0400 @@ -44,6 +44,16 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE #define AI_POLYTOOLS_H_INCLUDED namespace Assimp { +// ------------------------------------------------------------------------------- +/** Compute the signed area of a triangle. + * The function accepts an unconstrained template parameter for use with + * both aiVector3D and aiVector2D, but generally ignores the third coordinate.*/ +template +inline double GetArea2D(const T& v1, const T& v2, const T& v3) +{ + return 0.5 * (v1.x * ((double)v3.y - v2.y) + v2.x * ((double)v1.y - v3.y) + v3.x * ((double)v2.y - v1.y)); +} + // ------------------------------------------------------------------------------- /** Test if a given point p2 is on the left side of the line formed by p0-p1. @@ -55,6 +65,7 @@ inline bool OnLeftSideOfLine2D(const T& return GetArea2D(p0,p2,p1) > 0; } + // ------------------------------------------------------------------------------- /** Test if a given point is inside a given triangle in R2. * The function accepts an unconstrained template parameter for use with @@ -81,17 +92,6 @@ inline bool PointInTriangle2D(const T& p } -// ------------------------------------------------------------------------------- -/** Compute the signed area of a triangle. - * The function accepts an unconstrained template parameter for use with - * both aiVector3D and aiVector2D, but generally ignores the third coordinate.*/ -template -inline double GetArea2D(const T& v1, const T& v2, const T& v3) -{ - return 0.5 * (v1.x * ((double)v3.y - v2.y) + v2.x * ((double)v1.y - v3.y) + v3.x * ((double)v2.y - v1.y)); -} - - // ------------------------------------------------------------------------------- /** Check whether the winding order of a given polygon is counter-clockwise. * The function accepts an unconstrained template parameter, but is intended