00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #include "aabb3.h"
00024 #include "bs.h"
00025 #include "matrix4.h"
00026
00027 #include <cassert>
00028
00029 using namespace sheep;
00030
00031 void AABB3::Include(const BS &bs) {
00032
00033 assert(!"Not implemented yet.");
00034 }
00035
00036 AABB3 AABB3::Transform(const Matrix4 &m) const {
00037 const Point3 v0(m_min.m_x, m_min.m_y, m_min.m_z);
00038 const Point3 v1(m_min.m_x, m_min.m_y, m_max.m_z);
00039 const Point3 v2(m_min.m_x, m_max.m_y, m_min.m_z);
00040 const Point3 v3(m_min.m_x, m_max.m_y, m_max.m_z);
00041 const Point3 v4(m_max.m_x, m_min.m_y, m_min.m_z);
00042 const Point3 v5(m_max.m_x, m_min.m_y, m_max.m_z);
00043 const Point3 v6(m_max.m_x, m_max.m_y, m_min.m_z);
00044 const Point3 v7(m_max.m_x, m_max.m_y, m_max.m_z);
00045
00046 AABB3 aabb;
00047
00048 aabb.Include(m * v0);
00049 aabb.Include(m * v1);
00050 aabb.Include(m * v2);
00051 aabb.Include(m * v3);
00052 aabb.Include(m * v4);
00053 aabb.Include(m * v5);
00054 aabb.Include(m * v6);
00055 aabb.Include(m * v7);
00056
00057 return aabb;
00058 }