inlib  1.2.0
/Users/barrand/private/dev/softinex/old/inexlib-1.2/inlib/inlib/box_3f
Go to the documentation of this file.
00001 // Copyright (C) 2010, Guy Barrand. All rights reserved.
00002 // See the file inlib.license for terms.
00003 
00004 #ifndef inlib_box_3f
00005 #define inlib_box_3f
00006 
00007 #include "mnmx"
00008 
00009 #include <cfloat> // FLT_MAX
00010 
00011 namespace inlib {
00012 
00013 // optimization (used in exlib/sg/text_hershey) :
00014 
00015 inline void box3f_make_empty(float& a_mn_x,float& a_mn_y,float& a_mn_z,
00016                              float& a_mx_x,float& a_mx_y,float& a_mx_z){
00017   a_mn_x = FLT_MAX;
00018   a_mn_y = FLT_MAX;
00019   a_mn_z = FLT_MAX;
00020   a_mx_x = -FLT_MAX;
00021   a_mx_y = -FLT_MAX;
00022   a_mx_z = -FLT_MAX;
00023 }
00024 inline void box3f_extend_by(float& a_mn_x,float& a_mn_y,float& a_mn_z,
00025                             float& a_mx_x,float& a_mx_y,float& a_mx_z,
00026                             float a_x,float a_y,float a_z){
00027   if(a_mx_x<a_mn_x){ //is empty.
00028     a_mn_x = a_x;
00029     a_mn_y = a_y;
00030     a_mn_z = a_z;
00031 
00032     a_mx_x = a_x;
00033     a_mx_y = a_y;
00034     a_mx_z = a_z;
00035   } else {
00036     a_mn_x = inlib::mn<float>(a_x,a_mn_x);
00037     a_mn_y = inlib::mn<float>(a_y,a_mn_y);
00038     a_mn_z = inlib::mn<float>(a_z,a_mn_z);
00039 
00040     a_mx_x = inlib::mx<float>(a_x,a_mx_x);
00041     a_mx_y = inlib::mx<float>(a_y,a_mx_y);
00042     a_mx_z = inlib::mx<float>(a_z,a_mx_z);
00043   }
00044 }
00045 inline bool box3f_is_empty(float a_mn_x,float a_mx_x) {
00046   return a_mx_x < a_mn_x;
00047 }
00048 
00049 }
00050 
00051 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines