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 }