home *** CD-ROM | disk | FTP | other *** search
/ Altsys Virtuoso 2.0K / virtuoso_20k.iso / DemoApps / Graphics / Viewers / raytracers / ohta / Source / intersect.c < prev    next >
Encoding:
C/C++ Source or Header  |  1991-10-08  |  603 b   |  31 lines

  1. #include "ray.h"
  2.  
  3. struct intersect intersect(r)
  4. struct ray r;
  5. {struct intersect i,imin;
  6. register struct objlist *ol;
  7. register int o;
  8.     imin.obj=0;
  9.     if(fflag)
  10.     {    if(objects[r.obj].flags&SELF)
  11.         {    i=(*objects[r.obj].shape)(r,r.obj);
  12.             if(i.obj)
  13.                 imin=i;
  14.         }
  15.         for(ol=candidates[r.obj][dindex(r.l)];ol;ol=ol->next)
  16.         {    if(oflag&&imin.obj&&imin.t<ol->t)
  17.                 break;
  18.             i=(*objects[ol->obj].shape)(r,ol->obj);
  19.             if(i.obj&&(!imin.obj||i.t<imin.t))
  20.                 imin=i;
  21.         }
  22.     }
  23.     else
  24.         for(o=lights+1;o<maxobj;o++)
  25.         {    i=(*objects[o].shape)(r,o);
  26.             if(i.obj&&(!imin.obj||i.t<imin.t))
  27.                 imin=i;
  28.         }
  29.     return imin;
  30. }
  31.