inlib
1.2.0
|
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