diff --git a/src/point_tris_dist.cc b/src/point_tris_dist.cc index 53bb241..74a826e 100644 --- a/src/point_tris_dist.cc +++ b/src/point_tris_dist.cc @@ -52,6 +52,8 @@ double pointTriangleDistance(double *p, vtkCell *triangle, double *direction) { double db = vtkMath::Dot(vecTB, bp); double dc = vtkMath::Dot(vecTC, cp); + double distance = 0; + if(da <= 0 && db <= 0 && dc <= 0) { double na[3] = { n[0] * a[0], @@ -78,7 +80,7 @@ double pointTriangleDistance(double *p, vtkCell *triangle, double *direction) { direction[1] = nt[1]; direction[2] = nt[2]; vtkMath::Normalize(direction); - return vtkMath::Norm(nt); + distance = vtkMath::Norm(nt); } else { double normalA[3]; @@ -105,6 +107,16 @@ double pointTriangleDistance(double *p, vtkCell *triangle, double *direction) { direction[2] = normalC[2]; } - return min; + distance = min; } + + if(vtkMath::Dot(direction, n) < 0) { + direction[0] = -direction[0]; + direction[1] = -direction[1]; + direction[2] = -direction[2]; + + return -distance; + } else { + return distance; + } }