Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-04-09 07:48:54

0001 /**
0002 intersect_leaf_cone_test.cc
0003 ===================================
0004 
0005 ::
0006 
0007    ./intersect_leaf_cone_test.sh
0008 
0009 
0010 
0011 ::
0012  
0013    Z 
0014    |
0015    +--X 
0016 
0017    .               +                     0
0018                    |
0019                    |
0020    .         +---*-+-----+             -50
0021                    |
0022                    |
0023    .   +------*----+-----------+       -100
0024 
0025    .  -100   -50    0     +50   +100
0026 
0027    .   
0028 
0029    .   *
0030 
0031 
0032 **/
0033 
0034 #include <cmath>
0035 #include "scuda.h"
0036 #include "squad.h"
0037 #include "sqat4.h"
0038 
0039 #define DEBUG_CONE 1 
0040 
0041 #include "csg_intersect_leaf.h"
0042 
0043 int main(int argc, char** argv)
0044 {
0045     float tmn = scuda::efloat(  "TMIN", 0.f) ; 
0046     float3 o  = scuda::efloat3( "RAYORI", "-100,0,-200" ); 
0047     float3 d_ = scuda::efloat3( "RAYDIR", "1,0,2" ); 
0048     float3 d  = normalize(d_); 
0049 
0050     float r1 =  100.f ; 
0051     float z1 = -100.f ; 
0052     float r2 =   50.f ; 
0053     float z2 =  -50.f ; 
0054 
0055     quad q0 ; 
0056     q0.f.x = r1 ;  
0057     q0.f.y = z1 ; 
0058     q0.f.z = r2 ; 
0059     q0.f.w = z2 ;  
0060 
0061     float z0 = z_apex_cone( q0 ); 
0062     printf("// r1 %10.4f z1 %10.4f  r2 %10.4f z2 %10.4f apex z0 %10.4f \n", r1,z1,r2,z2,z0 ); 
0063 
0064     float3 zero3 = make_float3( 0.f , 0.f, 0.f ); 
0065     float4 i0 = make_float4(0.f, 0.f, 0.f, 0.f ); 
0066     float4 i1 = make_float4(0.f, 0.f, 0.f, 0.f ); 
0067     float3 p0 = make_float3( 0.f , 0.f, 0.f ); 
0068     float3 p1 = make_float3( 0.f , 0.f, 0.f ); 
0069 
0070     const float& t0 = i0.w ; 
0071     const float& t1 = i1.w ; 
0072 
0073     bool vi0 = intersect_leaf_oldcone( i0, q0, tmn, o, d ); 
0074     bool vi1 = intersect_leaf_newcone( i1, q0, tmn, o, d ); 
0075 
0076     p0 = vi0 ? o + t0*d : zero3  ; 
0077     p1 = vi1 ? o + t1*d : zero3  ; 
0078 
0079 
0080     printf("// ray (%10.4f %10.4f %10.4f ; %10.4f %10.4f %10.4f ; %10.4f)\n",
0081          o.x, o.y, o.z, d.x, d.y, d.z, tmn ); 
0082     printf("// vi0 %d i0 (%10.4f %10.4f %10.4f %10.4f)  p0 (%10.4f %10.4f %10.4f)\n", 
0083          vi0, i0.x, i0.y, i0.z, i0.w, p0.x, p0.y, p0.z ); 
0084     printf("// vi1 %d i1 (%10.4f %10.4f %10.4f %10.4f)  p1 (%10.4f %10.4f %10.4f)\n", 
0085          vi1, i1.x, i1.y, i1.z, i1.w, p1.x, p1.y, p1.z ); 
0086     return 0 ; 
0087 }
0088 
0089