Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGermano <germano.costa@ig.com.br>2018-05-15 20:10:41 +0300
committerGermano <germano.costa@ig.com.br>2018-05-15 20:10:41 +0300
commit439ccd27e6a454c716404efa55b4c750c13f2549 (patch)
treec76804ab1c8dfe217115a28d7d377ee8ea1faef3 /source/blender/blenlib
parentca028f1387218a9d80c2fe406a05191e7e4b90d8 (diff)
BLI_math: Added isect_point_planes_v3_negated function.
Diffstat (limited to 'source/blender/blenlib')
-rw-r--r--source/blender/blenlib/BLI_math_geom.h3
-rw-r--r--source/blender/blenlib/intern/math_geom.c17
2 files changed, 20 insertions, 0 deletions
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
@@ -2003,6 +2003,23 @@ bool isect_point_planes_v3(float (*planes)[4], int totplane, const float p[3])
}
/**
+ * 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.
*
* \param r_isect_co The intersection point.