aboutsummaryrefslogtreecommitdiffstats
path: root/code/qcommon/q_math.c
diff options
context:
space:
mode:
authortma <tma@edf5b092-35ff-0310-97b2-ce42778d08ea>2007-07-27 21:52:31 +0000
committertma <tma@edf5b092-35ff-0310-97b2-ce42778d08ea>2007-07-27 21:52:31 +0000
commit81367544d5b547642fdeaacb469ad4f59e82ab37 (patch)
treea2b310e88f67e2e02720ce570514dd4fce14e892 /code/qcommon/q_math.c
parentd6e4128e9f2ca4f71fa1612c45f84bc45b82a5a2 (diff)
downloadioquake3-aero-81367544d5b547642fdeaacb469ad4f59e82ab37.tar.gz
ioquake3-aero-81367544d5b547642fdeaacb469ad4f59e82ab37.zip
* Early out AABB collision optimisation from Robert Beckebans (Xreal)
git-svn-id: svn://svn.icculus.org/quake3/trunk@1121 edf5b092-35ff-0310-97b2-ce42778d08ea
Diffstat (limited to 'code/qcommon/q_math.c')
-rw-r--r--code/qcommon/q_math.c47
1 files changed, 47 insertions, 0 deletions
diff --git a/code/qcommon/q_math.c b/code/qcommon/q_math.c
index 5ddd81f..ae2de69 100644
--- a/code/qcommon/q_math.c
+++ b/code/qcommon/q_math.c
@@ -1037,6 +1037,53 @@ void AddPointToBounds( const vec3_t v, vec3_t mins, vec3_t maxs ) {
}
}
+qboolean BoundsIntersect(const vec3_t mins, const vec3_t maxs,
+ const vec3_t mins2, const vec3_t maxs2)
+{
+ if ( maxs[0] < mins2[0] ||
+ maxs[1] < mins2[1] ||
+ maxs[2] < mins2[2] ||
+ mins[0] > maxs2[0] ||
+ mins[1] > maxs2[1] ||
+ mins[2] > maxs2[2])
+ {
+ return qfalse;
+ }
+
+ return qtrue;
+}
+
+qboolean BoundsIntersectSphere(const vec3_t mins, const vec3_t maxs,
+ const vec3_t origin, vec_t radius)
+{
+ if ( origin[0] - radius > maxs[0] ||
+ origin[0] + radius < mins[0] ||
+ origin[1] - radius > maxs[1] ||
+ origin[1] + radius < mins[1] ||
+ origin[2] - radius > maxs[2] ||
+ origin[2] + radius < mins[2])
+ {
+ return qfalse;
+ }
+
+ return qtrue;
+}
+
+qboolean BoundsIntersectPoint(const vec3_t mins, const vec3_t maxs,
+ const vec3_t origin)
+{
+ if ( origin[0] > maxs[0] ||
+ origin[0] < mins[0] ||
+ origin[1] > maxs[1] ||
+ origin[1] < mins[1] ||
+ origin[2] > maxs[2] ||
+ origin[2] < mins[2])
+ {
+ return qfalse;
+ }
+
+ return qtrue;
+}
vec_t VectorNormalize( vec3_t v ) {
// NOTE: TTimo - Apple G4 altivec source uses double?