adjusted BVH improved 2D/3D BVH new bounding volumes new test cases renamed some test-cases for grouping reasons made GPC header-only using slight adjustments
37 lines
1.0 KiB
C++
37 lines
1.0 KiB
C++
#ifdef WITH_TESTS
|
|
|
|
#include "../Tests.h"
|
|
#include "../../geo/Triangle3.h"
|
|
|
|
// https://stackoverflow.com/questions/17458562/efficient-aabb-triangle-intersection-in-c-sharp
|
|
// http://fileadmin.cs.lth.se/cs/Personal/Tomas_Akenine-Moller/code/tribox3.txt
|
|
TEST(Geo_Triangle3, intersect) {
|
|
|
|
Point3 dst;
|
|
|
|
{
|
|
Triangle3 tria(Point3(-1,0,0), Point3(+1,0,0), Point3(0,1,0));
|
|
Ray3 ray(Point3(0,0.5,-1), Point3(0,0,1));
|
|
ASSERT_TRUE(tria.intersects(ray, dst));
|
|
ASSERT_EQ(Point3(0, 0.5, 0), dst);
|
|
}
|
|
|
|
|
|
{
|
|
Triangle3 tria(Point3(-1,0,0), Point3(+1,0,0), Point3(0,1,1));
|
|
Ray3 ray(Point3(0,0.5,-1), Point3(0,0,1));
|
|
ASSERT_TRUE(tria.intersects(ray, dst));
|
|
ASSERT_EQ(Point3(0, 0.5, 0.5), dst);
|
|
}
|
|
|
|
{
|
|
Triangle3 tria(Point3(10.4253730774, 49.0029830933, 0.00995028018951), Point3(10.4253730774, 49.0029830933, 3.99004983902), Point3(10.4253730774, 50.197013855, 3.99004983902));
|
|
Ray3 ray(Point3(67.2000045776, 36.0, 3.5), Point3(0.154123231769, -0.631025910378, -0.76029753685));
|
|
ASSERT_FALSE(tria.intersects(ray, dst));
|
|
}
|
|
|
|
|
|
}
|
|
|
|
#endif
|