Skip to content

Commit

Permalink
Update the CMake files and the tests to use the renamed kmAABB3 struct
Browse files Browse the repository at this point in the history
  • Loading branch information
Kazade committed Jan 14, 2015
1 parent 84e8b03 commit 083431c
Show file tree
Hide file tree
Showing 4 changed files with 60 additions and 56 deletions.
6 changes: 4 additions & 2 deletions CMakeLists.txt
Expand Up @@ -22,7 +22,8 @@ SET(KAZMATH_HEADERS
${CMAKE_SOURCE_DIR}/kazmath/plane.h
${CMAKE_SOURCE_DIR}/kazmath/utility.h
${CMAKE_SOURCE_DIR}/kazmath/quaternion.h
${CMAKE_SOURCE_DIR}/kazmath/aabb.h
${CMAKE_SOURCE_DIR}/kazmath/aabb2.h
${CMAKE_SOURCE_DIR}/kazmath/aabb3.h
${CMAKE_SOURCE_DIR}/kazmath/kazmath.h
)

Expand All @@ -40,7 +41,8 @@ SET(KAZMATH_SOURCES
${CMAKE_SOURCE_DIR}/kazmath/vec2.c
${CMAKE_SOURCE_DIR}/kazmath/vec3.c
${CMAKE_SOURCE_DIR}/kazmath/utility.c
${CMAKE_SOURCE_DIR}/kazmath/aabb.c
${CMAKE_SOURCE_DIR}/kazmath/aabb2.c
${CMAKE_SOURCE_DIR}/kazmath/aabb3.c
${CMAKE_SOURCE_DIR}/kazmath/ray2.c
${CMAKE_SOURCE_DIR}/kazmath/ray3.c
${CMAKE_SOURCE_DIR}/kazmath/GL/mat4stack.c
Expand Down
77 changes: 39 additions & 38 deletions java/jni/kazmath.c
Expand Up @@ -7,7 +7,8 @@

#include "kazmath_jkazmath.h"

#include <aabb.h>
#include <aabb2.h>
#include <aabb3.h>
#include <vec3.h>
#include <vec4.h>
#include <mat3.h>
Expand Down Expand Up @@ -747,72 +748,72 @@ JNIEXPORT jobject JNICALL Java_kazmath_jkazmath_kmMat3RotationQuaternion



JNIEXPORT jint JNICALL Java_kazmath_jkazmath_kmAABBContainsPoint
JNIEXPORT jint JNICALL Java_kazmath_jkazmath_kmAABB3ContainsPoint
(JNIEnv *e, jclass c, jobject jb, jobject jp)
{
kmAABB* b = (kmAABB*)(*e)->GetDirectBufferAddress(e, jb);
kmAABB3* b = (kmAABB3*)(*e)->GetDirectBufferAddress(e, jb);
kmVec3* p = (kmVec3*)(*e)->GetDirectBufferAddress(e, jp);
return kmAABBContainsPoint(b,p);
return kmAABB3ContainsPoint(b,p);
}

JNIEXPORT jobject JNICALL Java_kazmath_jkazmath_kmAABBAssign
JNIEXPORT jobject JNICALL Java_kazmath_jkazmath_kmAABB3Assign
(JNIEnv *e, jclass c, jobject jo, jobject ji)
{
kmAABB* o = (kmAABB*)(*e)->GetDirectBufferAddress(e, jo);
kmAABB* i = (kmAABB*)(*e)->GetDirectBufferAddress(e, ji);
kmAABBAssign(o,i);
kmAABB3* o = (kmAABB3*)(*e)->GetDirectBufferAddress(e, jo);
kmAABB3* i = (kmAABB3*)(*e)->GetDirectBufferAddress(e, ji);
kmAABB3Assign(o,i);
return jo;
}

JNIEXPORT jobject JNICALL Java_kazmath_jkazmath_kmAABBScale
JNIEXPORT jobject JNICALL Java_kazmath_jkazmath_kmAABB3Scale
(JNIEnv *e, jclass c, jobject jo, jobject ji, jfloat s)
{
kmAABB* o = (kmAABB*)(*e)->GetDirectBufferAddress(e, jo);
kmAABB* i = (kmAABB*)(*e)->GetDirectBufferAddress(e, ji);
kmAABBScale(o,i,s);
kmAABB3* o = (kmAABB3*)(*e)->GetDirectBufferAddress(e, jo);
kmAABB3* i = (kmAABB3*)(*e)->GetDirectBufferAddress(e, ji);
kmAABB3Scale(o,i,s);
return jo;
}

// kmBool kmAABBIntersectsTriangle(kmAABB* box, const kmVec3* p1, const kmVec3* p2, const kmVec3* p3);
JNIEXPORT jboolean JNICALL Java_kazmath_jkazmath_kmAABBIntersectsTriangle
// kmBool kmAABB3IntersectsTriangle(kmAABB3* box, const kmVec3* p1, const kmVec3* p2, const kmVec3* p3);
JNIEXPORT jboolean JNICALL Java_kazmath_jkazmath_kmAABB3IntersectsTriangle
(JNIEnv *e, jclass c, jobject jb, jobject jp1, jobject jp2, jobject jp3)
{
kmAABB* b = (kmAABB*)(*e)->GetDirectBufferAddress(e, jb);
kmAABB3* b = (kmAABB3*)(*e)->GetDirectBufferAddress(e, jb);
kmVec3* p1 = (kmVec3*)(*e)->GetDirectBufferAddress(e, jp1);
kmVec3* p2 = (kmVec3*)(*e)->GetDirectBufferAddress(e, jp2);
kmVec3* p3 = (kmVec3*)(*e)->GetDirectBufferAddress(e, jp3);
return kmAABBIntersectsTriangle(b,p1,p2,p3);
return kmAABB3IntersectsTriangle(b,p1,p2,p3);
}

//kmEnum kmAABBContainsAABB(const kmAABB* container, const kmAABB* to_check);
JNIEXPORT jint JNICALL Java_kazmath_jkazmath_kmAABBContainsAABB
//kmEnum kmAABB3ContainsAABB(const kmAABB3* container, const kmAABB3* to_check);
JNIEXPORT jint JNICALL Java_kazmath_jkazmath_kmAABB3ContainsAABB
(JNIEnv *e, jclass c, jobject ja, jobject jb)
{
kmAABB* a = (kmAABB*)(*e)->GetDirectBufferAddress(e, ja);
kmAABB* b = (kmAABB*)(*e)->GetDirectBufferAddress(e, jb);
return kmAABBContainsAABB(a,b);
kmAABB3* a = (kmAABB3*)(*e)->GetDirectBufferAddress(e, ja);
kmAABB3* b = (kmAABB3*)(*e)->GetDirectBufferAddress(e, jb);
return kmAABB3ContainsAABB(a,b);
}

// kmScalar kmAABBDiameterX(const kmAABB* aabb);
JNIEXPORT jfloat JNICALL Java_kazmath_jkazmath_kmAABBDiameterX
// kmScalar kmAABB3DiameterX(const kmAABB3* aabb);
JNIEXPORT jfloat JNICALL Java_kazmath_jkazmath_kmAABB3DiameterX
(JNIEnv *e, jclass c, jobject jb)
{
kmAABB* b = (kmAABB*)(*e)->GetDirectBufferAddress(e, jb);
return kmAABBDiameterX(b);
kmAABB3* b = (kmAABB3*)(*e)->GetDirectBufferAddress(e, jb);
return kmAABB3DiameterX(b);
}

JNIEXPORT jfloat JNICALL Java_kazmath_jkazmath_kmAABBDiameterY
JNIEXPORT jfloat JNICALL Java_kazmath_jkazmath_kmAABB3DiameterY
(JNIEnv *e, jclass c, jobject jb)
{
kmAABB* b = (kmAABB*)(*e)->GetDirectBufferAddress(e, jb);
return kmAABBDiameterY(b);
kmAABB3* b = (kmAABB3*)(*e)->GetDirectBufferAddress(e, jb);
return kmAABB3DiameterY(b);
}

JNIEXPORT jfloat JNICALL Java_kazmath_jkazmath_kmAABBDiameterZ
JNIEXPORT jfloat JNICALL Java_kazmath_jkazmath_kmAABB3DiameterZ
(JNIEnv *e, jclass c, jobject jb)
{
kmAABB* b = (kmAABB*)(*e)->GetDirectBufferAddress(e, jb);
return kmAABBDiameterZ(b);
kmAABB3* b = (kmAABB3*)(*e)->GetDirectBufferAddress(e, jb);
return kmAABB3DiameterZ(b);
}


Expand Down Expand Up @@ -1231,22 +1232,22 @@ JNIEXPORT jobject JNICALL Java_kazmath_jkazmath_kmVec3Lerp
return jo;
}

JNIEXPORT jobject JNICALL Java_kazmath_jkazmath_kmAABBCentre
JNIEXPORT jobject JNICALL Java_kazmath_jkazmath_kmAABB3Centre
(JNIEnv *e, jclass c, jobject jaabb, jobject jo)
{
kmVec3* o = (kmVec3*)(*e)->GetDirectBufferAddress(e, jo);
kmAABB* a = (kmAABB*)(*e)->GetDirectBufferAddress(e, jaabb);
kmAABBCentre(a,o);
kmAABB3* a = (kmAABB3*)(*e)->GetDirectBufferAddress(e, jaabb);
kmAABB3Centre(a,o);
return jo;
}

//kmAABB* kmAABBInitialize(kmAABB* pBox, const kmVec3* centre, const kmScalar width, const kmScalar height, const kmScalar depth);
JNIEXPORT jobject JNICALL Java_kazmath_jkazmath_kmAABBInitialize
//kmAABB3* kmAABB3Initialize(kmAABB3* pBox, const kmVec3* centre, const kmScalar width, const kmScalar height, const kmScalar depth);
JNIEXPORT jobject JNICALL Java_kazmath_jkazmath_kmAABB3Initialize
(JNIEnv *e, jclass c, jobject jo, jobject jct, jfloat w, jfloat h, jfloat d)
{
kmAABB* o = (kmAABB*)(*e)->GetDirectBufferAddress(e, jo);
kmAABB3* o = (kmAABB3*)(*e)->GetDirectBufferAddress(e, jo);
kmVec3* ct = (kmVec3*)(*e)->GetDirectBufferAddress(e, jct);
kmAABBInitialize(o, ct, w, h, d);
kmAABB3Initialize(o, ct, w, h, d);
return jo;
}

Expand Down
3 changes: 2 additions & 1 deletion kazmath/kazmath.h
Expand Up @@ -33,7 +33,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include "utility.h"
#include "quaternion.h"
#include "plane.h"
#include "aabb.h"
#include "aabb2.h"
#include "aabb3.h"
#include "ray2.h"
#include "ray3.h"

Expand Down
30 changes: 15 additions & 15 deletions tests/test_aabb.cpp
@@ -1,10 +1,10 @@
#include <UnitTest++.h>
#include <limits>

#include "../kazmath/aabb.h"
#include "../kazmath/aabb3.h"

TEST(test_aabb_expand_to_contain) {
kmAABB box;
kmAABB3 box;

box.min.x = -1;
box.min.y = -1;
Expand All @@ -14,15 +14,15 @@ TEST(test_aabb_expand_to_contain) {
box.max.y = 1;
box.max.z = 1;

kmAABB other;
kmAABB3 other;

other.max.y = other.min.z = other.max.z = 0;

other.max.x = 2;
other.min.x = -2;
other.min.y = -2;

kmAABBExpandToContain(&box, &box, &other);
kmAABB3ExpandToContain(&box, &box, &other);

CHECK_EQUAL(box.max.x, 2);
CHECK_EQUAL(box.min.x, -2);
Expand All @@ -31,28 +31,28 @@ TEST(test_aabb_expand_to_contain) {
}

TEST(test_aabb_contains) {
kmAABB box;
kmAABB3 box;

kmVec3Fill(&box.min, -1, -1, -1);
kmVec3Fill(&box.max, 1, 1, 1);

kmAABB inside;
kmAABB3 inside;
kmVec3Fill(&inside.min, -0.5, -0.5, -0.5);
kmVec3Fill(&inside.max, 0.5, 0.5, 0.5);

CHECK_EQUAL(KM_CONTAINS_ALL, kmAABBContainsAABB(&box, &inside));
CHECK_EQUAL(KM_CONTAINS_NONE, kmAABBContainsAABB(&inside, &box));
CHECK_EQUAL(KM_CONTAINS_ALL, kmAABB3ContainsAABB(&box, &inside));
CHECK_EQUAL(KM_CONTAINS_NONE, kmAABB3ContainsAABB(&inside, &box));

kmAABB partial;
kmAABB3 partial;
kmVec3Fill(&partial.min, -0.5, -0.5, -0.5);
kmVec3Fill(&partial.max, 1.5, 1.5, 1.5);
CHECK_EQUAL(KM_CONTAINS_PARTIAL, kmAABBContainsAABB(&box, &partial));
CHECK_EQUAL(KM_CONTAINS_PARTIAL, kmAABB3ContainsAABB(&box, &partial));
}

/*
TEST(test_aabb_triangle_intersection) {
kmAABB box;
kmAABB3 box;
box.min.x = -5.0f;
box.min.y = -5.0f;
box.min.z = std::numeric_limits<kmScalar>::min();
Expand All @@ -69,15 +69,15 @@ TEST(test_aabb_triangle_intersection) {
};
//Should intersect
CHECK(kmAABBIntersectsTriangle(&box, &tri1[0], &tri1[1], &tri1[2]));
CHECK(kmAABB3IntersectsTriangle(&box, &tri1[0], &tri1[1], &tri1[2]));
//Triangle that entirely surrounds the box (should still return true)
kmVec3 tri2 [] = {
{ -100.0f, 0.0f, 0.0f },
{ 100.0f, 0.0f, 0.0f },
{ 100.0f, 100.0f, 0.0f },
};
CHECK(kmAABBIntersectsTriangle(&box, &tri2[0], &tri2[1], &tri2[2]));
CHECK(kmAABB3IntersectsTriangle(&box, &tri2[0], &tri2[1], &tri2[2]));
//Triangle that is entirely outside of the box (should return false)
kmVec3 tri3 [] = {
Expand All @@ -86,7 +86,7 @@ TEST(test_aabb_triangle_intersection) {
{ 20.0f, 10.0f, 0.0f },
};
CHECK(!kmAABBIntersectsTriangle(&box, &tri3[0], &tri3[1], &tri3[2]));
CHECK(!kmAABB3IntersectsTriangle(&box, &tri3[0], &tri3[1], &tri3[2]));
//Triangle that intersects the box (should return true)
kmVec3 tri4 [] = {
Expand All @@ -95,7 +95,7 @@ TEST(test_aabb_triangle_intersection) {
{ 10.0f, 10.0f, 0.0f },
};
CHECK(kmAABBIntersectsTriangle(&box, &tri4[0], &tri4[1], &tri4[2]));
CHECK(kmAABB3IntersectsTriangle(&box, &tri4[0], &tri4[1], &tri4[2]));
}*/


0 comments on commit 083431c

Please sign in to comment.