Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-04-09 07:49:14

0001 #include <array>
0002 #include "ssys.h"
0003 #include "s_bb.h"
0004 
0005 struct s_bb_test
0006 {
0007     static int Main();
0008 
0009     static int AllZero();
0010     static int Degenerate();
0011     static int IncludeAABB();
0012     static int include_point_widen();
0013     static int include_aabb_widen();
0014     static int center_extent();
0015     static int write();
0016 };
0017 
0018 
0019 int s_bb_test::Main()
0020 {
0021     const char* TEST = ssys::getenvvar("TEST", "ALL");
0022     bool ALL = strcmp(TEST,"ALL") == 0 ;
0023 
0024     int rc = 0 ;
0025     if(ALL||0==strcmp(TEST,"AllZero")) rc += AllZero();
0026     if(ALL||0==strcmp(TEST,"Degenerate")) rc += Degenerate();
0027     if(ALL||0==strcmp(TEST,"IncludeAABB")) rc += IncludeAABB();
0028     if(ALL||0==strcmp(TEST,"include_point_widen")) rc += include_point_widen();
0029     if(ALL||0==strcmp(TEST,"include_aabb_widen")) rc += include_aabb_widen();
0030     if(ALL||0==strcmp(TEST,"center_extent")) rc += center_extent();
0031     if(ALL||0==strcmp(TEST,"write")) rc += write();
0032 
0033     return rc ;
0034 }
0035 
0036 
0037 int s_bb_test::AllZero()
0038 {
0039     std::array<double, 6> bb_0 = {} ;
0040     assert( s_bb::AllZero<double>( bb_0.data() ) ) ;
0041     std::cout << "bb_0 " << s_bb::Desc(bb_0.data()) << std::endl ;
0042 
0043     std::array<double, 6> bb_1 = {-0., -0., -0., 0., 0., 0. } ;
0044     assert( s_bb::AllZero<double>( bb_1.data() ) ) ;
0045     std::cout << "bb_1 " << s_bb::Desc(bb_1.data()) << std::endl ;
0046 
0047     return 0 ;
0048 }
0049 
0050 int s_bb_test::Degenerate()
0051 {
0052     std::array<double, 6> bb_0 = {} ;
0053     assert( s_bb::Degenerate<double>( bb_0.data() ) ) ;
0054     std::cout << "bb_0 " << s_bb::Desc(bb_0.data()) << std::endl ;
0055 
0056     std::array<double, 6> bb_1 = {-0., -0., -0., 0., 0., 0. } ;
0057     assert( s_bb::Degenerate<double>( bb_1.data() ) ) ;
0058     std::cout << "bb_1 " << s_bb::Desc(bb_1.data()) << std::endl ;
0059 
0060     std::array<double, 6> bb_2 = {-1000., -2000., -3000., -1000., -2000., -3000. } ;
0061     assert( s_bb::Degenerate<double>( bb_2.data() ) ) ;
0062     std::cout << "bb_2 " << s_bb::Desc(bb_2.data()) << std::endl ;
0063 
0064     std::array<double, 6> bb_3 = {-1000., -2000., -3000.,  1000., 2000., 3000. } ;
0065     assert( s_bb::Degenerate<double>( bb_3.data() ) == false ) ;
0066     std::cout << "bb_3 " << s_bb::Desc(bb_3.data()) << std::endl ;
0067 
0068 
0069     return 0 ;
0070 }
0071 
0072 
0073 
0074 int s_bb_test::IncludeAABB()
0075 {
0076     std::array<double, 6> bb_0 = {} ;
0077     std::array<double, 6> bb_1 = {-100., -100., -100., 100., 100., 100. } ;
0078     std::array<double, 6> bb_2 = {-10.,  -10.,  -10.,   10., 10.,   10. } ;
0079 
0080     std::cout << "bb_0 " << s_bb::Desc(bb_0.data()) << std::endl ;
0081     std::cout << "bb_1 " << s_bb::Desc(bb_1.data()) << std::endl ;
0082     std::cout << "bb_2 " << s_bb::Desc(bb_2.data()) << std::endl ;
0083 
0084 
0085     std::stringstream ss ;
0086 
0087     s_bb::IncludeAABB( bb_0.data(), bb_1.data(), &ss );
0088     std::cout << " IncludeAABB( bb_0, bb_1 )  " << s_bb::Desc(bb_0.data()) << std::endl ;
0089 
0090     s_bb::IncludeAABB( bb_0.data(), bb_2.data(), &ss  );
0091     std::cout << " IncludeAABB( bb_0, bb_2 )  " << s_bb::Desc(bb_0.data()) << std::endl ;
0092 
0093     std::string str = ss.str();
0094     std::cout << str ;
0095     return 0 ;
0096 }
0097 
0098 int s_bb_test::include_point_widen()
0099 {
0100     s_bb bb = {} ;
0101     std::cout << " bb0 " << bb.desc() << std::endl ;
0102 
0103     std::array<float,3> point = {{ 1.f, 2.f, 3.f }} ;
0104 
0105     bb.include_point_widen( point.data() );
0106 
0107     std::cout << " bb1 " << bb.desc() << std::endl ;
0108     return 0 ;
0109 }
0110 
0111 int s_bb_test::include_aabb_widen()
0112 {
0113     s_bb bb = {} ;
0114     std::cout << " bb0 " << bb.desc() << std::endl ;
0115 
0116     std::array<float,6> other_bb = {{ -100.f, -200.f, -300.f , 100.f, 200.f, 300.f }} ;
0117 
0118     bb.include_aabb_widen( other_bb.data() );
0119 
0120     std::cout << " bb1 " << bb.desc() << std::endl ;
0121     return 0 ;
0122 }
0123 
0124 
0125 int s_bb_test::center_extent()
0126 {
0127     s_bb bb = {} ;
0128     std::cout << " bb0 " << bb.desc() << std::endl ;
0129 
0130     std::array<float,6> other_bb = {{ -100.f, -200.f, -300.f , 100.f, 200.f, 300.f }} ;
0131 
0132     bb.include_aabb_widen( other_bb.data() );
0133 
0134     std::cout << " bb1 " << bb.desc() << std::endl ;
0135 
0136 
0137     std::array<float,  4> cef ;
0138     std::array<double, 4> ced ;
0139 
0140     bb.center_extent(cef.data());
0141     bb.center_extent(ced.data());
0142 
0143     std::cout << " cef " << s_bb::Desc_<float,4>(  cef.data() ) << std::endl ;
0144     std::cout << " ced " << s_bb::Desc_<double,4>( ced.data() ) << std::endl ;
0145     return 0 ;
0146 }
0147 
0148 int s_bb_test::write()
0149 {
0150     s_bb bb = {} ;
0151     std::cout << " bb0 " << bb.desc() << std::endl ;
0152     std::array<float,6> other_bb = {{ -100.f, -200.f, -300.f , 100.f, 200.f, 300.f }} ;
0153     bb.include_aabb_widen( other_bb.data() );
0154 
0155     std::array<float,6> dst_bb_f ;
0156     std::array<double,6> dst_bb_d ;
0157     bb.write(dst_bb_f.data());
0158     bb.write(dst_bb_d.data());
0159 
0160     std::cout << "dst_bb_f : " << s_bb::Desc(dst_bb_f.data()) << std::endl ;
0161     std::cout << "dst_bb_d : " << s_bb::Desc(dst_bb_d.data()) << std::endl ;
0162     return 0 ;
0163 }
0164 
0165 
0166 
0167 
0168 int main()
0169 {
0170     return s_bb_test::Main() ;
0171 }