From 439ccd27e6a454c716404efa55b4c750c13f2549 Mon Sep 17 00:00:00 2001 From: Germano Date: Tue, 15 May 2018 14:10:41 -0300 Subject: BLI_math: Added isect_point_planes_v3_negated function. --- source/blender/blenlib/BLI_math_geom.h | 3 +++ source/blender/blenlib/intern/math_geom.c | 17 +++++++++++++++++ 2 files changed, 20 insertions(+) (limited to 'source/blender/blenlib') diff --git a/source/blender/blenlib/BLI_math_geom.h b/source/blender/blenlib/BLI_math_geom.h index 940e22b144a..111450b6402 100644 --- a/source/blender/blenlib/BLI_math_geom.h +++ b/source/blender/blenlib/BLI_math_geom.h @@ -244,6 +244,9 @@ bool isect_ray_plane_v3( float *r_lambda, const bool clip); bool isect_point_planes_v3(float (*planes)[4], int totplane, const float p[3]); +bool isect_point_planes_v3_negated( + const float (*planes)[4], const int totplane, const float p[3]); + bool isect_line_plane_v3( float r_isect_co[3], const float l1[3], const float l2[3], const float plane_co[3], const float plane_no[3]) ATTR_WARN_UNUSED_RESULT; diff --git a/source/blender/blenlib/intern/math_geom.c b/source/blender/blenlib/intern/math_geom.c index 34c8b9fabe6..0e7358aa426 100644 --- a/source/blender/blenlib/intern/math_geom.c +++ b/source/blender/blenlib/intern/math_geom.c @@ -2002,6 +2002,23 @@ bool isect_point_planes_v3(float (*planes)[4], int totplane, const float p[3]) return true; } +/** + * Check if a point is in front all planes. + * Same as isect_point_planes_v3 but with planes facing the opposite direction. + */ +bool isect_point_planes_v3_negated( + const float(*planes)[4], const int totplane, const float p[3]) +{ + for (int i = 0; i < totplane; i++) { + if (plane_point_side_v3(planes[i], p) <= 0.0f) { + return false; + } + } + + return true; +} + + /** * Intersect line/plane. * -- cgit v1.2.3