From 3969d57ce0072226356df1489f6a647f34a1474f Mon Sep 17 00:00:00 2001 From: Markus Quaritsch <markus.quaritsch@tugraz.at> Date: Tue, 3 Nov 2015 11:15:40 +0100 Subject: [PATCH] optimize triangle operations --- VectoCore/Utils/VectoMath.cs | 42 ++++++++++++++++++++---------------- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/VectoCore/Utils/VectoMath.cs b/VectoCore/Utils/VectoMath.cs index e5d0de6e74..a9fd8922ec 100644 --- a/VectoCore/Utils/VectoMath.cs +++ b/VectoCore/Utils/VectoMath.cs @@ -232,15 +232,18 @@ namespace TUGraz.VectoCore.Utils //Barycentric Technique: http://www.blackpawn.com/texts/pointinpoly/default.html var p = new Point(x, y, 0); - var v0 = P3 - P1; - var v1 = P2 - P1; - var v2 = p - P1; - - var dot00 = v0.X * v0.X + v0.Y * v0.Y; - var dot01 = v0.X * v1.X + v0.Y * v1.Y; - var dot02 = v0.X * v2.X + v0.Y * v2.Y; - var dot11 = v1.X * v1.X + v1.Y * v1.Y; - var dot12 = v1.X * v2.X + v1.Y * v2.Y; + var v0X = P3.X - P1.X; + var v0Y = P3.Y - P1.Y; + var v1X = P2.X - P1.X; + var v1Y = P2.Y - P1.Y; + var v2X = p.X - P1.X; + var v2Y = p.Y - P1.Y; + + var dot00 = v0X * v0X + v0Y * v0Y; + var dot01 = v0X * v1X + v0Y * v1Y; + var dot02 = v0X * v2X + v0Y * v2Y; + var dot11 = v1X * v1X + v1Y * v1Y; + var dot12 = v1X * v2X + v1Y * v2Y; var invDenom = 1.0 / (dot00 * dot11 - dot01 * dot01); var u = (dot11 * dot02 - dot01 * dot12) * invDenom; @@ -260,17 +263,20 @@ namespace TUGraz.VectoCore.Utils //Contract.Requires(P2 != null); //Contract.Requires(P3 != null); - var p0 = P1 - p; - var p1 = P2 - p; - var p2 = P3 - p; + var p0X = P1.X - p.X; + var p0Y = P1.Y - p.Y; + var p1X = P2.X - p.X; + var p1Y = P2.Y - p.Y; + var p2X = P3.X - p.X; + var p2Y = P3.Y - p.Y; - var p0square = p0.X * p0.X + p0.Y * p0.Y; - var p1square = p1.X * p1.X + p1.Y * p1.Y; - var p2square = p2.X * p2.X + p2.Y * p2.Y; + var p0square = p0X * p0X + p0Y * p0Y; + var p1square = p1X * p1X + p1Y * p1Y; + var p2square = p2X * p2X + p2Y * p2Y; - var det01 = p0.X * p1.Y - p1.X * p0.Y; - var det12 = p1.X * p2.Y - p2.X * p1.Y; - var det20 = p2.X * p0.Y - p0.X * p2.Y; + var det01 = p0X * p1Y - p1X * p0Y; + var det12 = p1X * p2Y - p2X * p1Y; + var det20 = p2X * p0Y - p0X * p2Y; var result = p0square * det12 + p1square * det20 + p2square * det01; -- GitLab