Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifdef _MSC_VER
00020 # pragma warning(disable: 4244 4267 4311 4305)
00021 #endif
00022
00023
00024 #include "BoundingBox.h"
00025
00026
00027 namespace rtc {
00028
00029
00030 bool BoundingBox::apply(const TriMesh& mesh, Point& bbMin, Point& bbMax)
00031 {
00032 TriMesh::ConstVertexIter vIt(mesh.vertices_begin());
00033 TriMesh::ConstVertexIter vEnd(mesh.vertices_end());
00034
00035 bbMin = bbMax = mesh.point(vIt);
00036
00037 for (;vIt!=vEnd; ++vIt)
00038 {
00039 bbMin.minimize(mesh.point(vIt));
00040 bbMax.maximize(mesh.point(vIt));
00041 }
00042 return true;
00043 }
00044
00045 bool BoundingBox::apply(const std::vector<TriMesh*> meshes, Point& bbMin, Point& bbMax)
00046 {
00047 std::vector<TriMesh*>::const_iterator it, it_end;
00048 for(it=meshes.begin(), it_end=meshes.end(); it!=it_end; ++it)
00049 {
00050 Point bbMin_tmp, bbMax_tmp;
00051 const TriMesh* mesh = *it;
00052 apply(*mesh,bbMin_tmp,bbMax_tmp);
00053 if(it!=meshes.begin())
00054 {
00055 bbMin.minimize(bbMin_tmp);
00056 bbMax.maximize(bbMax_tmp);
00057 }
00058 else
00059 {
00060 bbMin=bbMin_tmp;
00061 bbMax=bbMax_tmp;
00062 }
00063 }
00064 return true;
00065 }
00066
00067
00068 }
00069