/* intersect: check if ray intersects with object, return hit_test */ hit_test intersect(ray r, object obj) { switch (obj.tag) { case SPHERE : return intersect_sphere(r,obj); case POSTER : return intersect_poster(r,obj); default : fprintf(stderr,"error(intersect):rogue tag\n"); exit(1); } }
hit_test intersect (ray r, object o) { switch (o.tag) { case SPHERE : return intersect_sphere(r, o.o.s); case POSTER : return intersect_poster(r, o.o.p); case CYLINDER : return intersect_cylinder(r, o.o.cyl); } fprintf(stderr, "invalid object tag\n"); exit(1); }