-#include <algorithm>
+#include <stdlib.h>
#include <float.h>
+#include <algorithm>
#include "geom.h"
#include "app.h"
return Vec3(v[xidx[idx]].x, v[yidx[idx]].y, v[zidx[idx]].z);
}
+Plane AABox::get_plane(int pidx) const
+{
+ switch(pidx) {
+ case AABOX_PLANE_PX:
+ return Plane(Vec3(max.x, 0, 0), Vec3(1, 0, 0));
+ case AABOX_PLANE_NX:
+ return Plane(Vec3(min.x, 0, 0), Vec3(-1, 0, 0));
+ case AABOX_PLANE_PY:
+ return Plane(Vec3(0, max.x, 0), Vec3(0, 1, 0));
+ case AABOX_PLANE_NY:
+ return Plane(Vec3(0, min.x, 0), Vec3(0, -1, 0));
+ case AABOX_PLANE_PZ:
+ return Plane(Vec3(0, 0, max.z), Vec3(0, 0, 1));
+ case AABOX_PLANE_NZ:
+ return Plane(Vec3(0, 0, min.z), Vec3(0, 0, -1));
+ default:
+ break;
+ }
+ abort();
+ return Plane();
+}
+
bool AABox::intersect(const Ray &ray, HitPoint *hit) const
{
Vec3 param[2] = {min, max};