BoundingBox.h dnacalib/types/Aliases.h dnacalib/TypeDefs.h iterator limits UVBarycentricMapping.h dnac::BoundingBox dnac //CopyrightEpicGames,Inc.AllRightsReserved. #pragmaonce #include"dnacalib/types/Aliases.h" #include"dnacalib/TypeDefs.h" #include<iterator> #include<limits> namespacednac{ classBoundingBox{ public: staticconstexprfloatdefaultAlpha=0.0003f; private: template<typenameTIter> usingunqualified_iter_value_type=typenamestd::remove_cv<typenamestd::iterator_traits<TIter>::value_type>::type; public: template<typenameTIter, typenamestd::enable_if< std::is_same<unqualified_iter_value_type<TIter>,fvec2>::value,void>::type*=nullptr> BoundingBox(TIterbegin,TIterend,floatalpha): min{std::numeric_limits<float>::max(),std::numeric_limits<float>::max()}, max{std::numeric_limits<float>::min(),std::numeric_limits<float>::min()}{ for(autoit=begin;it<end;it++){ constauto&vertex=*it; min[0]=std::min(vertex[0],min[0]); min[1]=std::min(vertex[1],min[1]); max[0]=std::max(vertex[0],max[0]); max[1]=std::max(vertex[1],max[1]); } min-=alpha; max+=alpha; } template<typenameTContainer> explicitBoundingBox(TContainercontainer,floatalpha=defaultAlpha): BoundingBox(std::begin(container),std::end(container),alpha){ } boolcontains(constfvec2&point)const{ returnpoint[0]>=min[0]&&point[0]<=max[0]&& point[1]>=min[1]&&point[1]<=max[1]; } fvec2getMin()const{ returnmin; } fvec2getMax()const{ returnmax; } private: fvec2min; fvec2max; }; }//namespacednac