X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=laserbrain_demo;a=blobdiff_plain;f=src%2Fgeom.cc;h=1813eea03af3f08dd7e173489e69dcda12bbe783;hp=3a287a6a9a65289372a84d4736ef20c201a92ebb;hb=2f5ee2007d258d947f2efab3bf3460479fe34813;hpb=5ce504b61cdb88166133d5977a2faad1664c850f diff --git a/src/geom.cc b/src/geom.cc index 3a287a6..1813eea 100644 --- a/src/geom.cc +++ b/src/geom.cc @@ -1,5 +1,6 @@ -#include +#include #include +#include #include "geom.h" #include "app.h" @@ -144,6 +145,28 @@ Vec3 AABox::get_corner(int idx) const 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};