File indexing completed on 2026-04-09 07:48:54
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
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