home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Professional / OS2PRO194.ISO / os2 / graphic / qrt / planebox.c < prev    next >
Text File  |  1989-01-09  |  1KB  |  59 lines

  1.  
  2. /************************************************************
  3.  
  4.                     Plane Bbox Module
  5.  
  6.  ************************************************************/
  7.  
  8. #include "qrt.h"
  9.  
  10.  
  11. /************************************************************
  12.  
  13.          Compute plane bbox linked list for object tree
  14.  
  15.  ************************************************************/
  16.  
  17. PLANE_BBOX_PTR Init_Plane_Bbox(obj)
  18.   OBJ_PTR obj;
  19. {
  20.   OBJ_PTR line, bbox;
  21.   VECTOR p_000, p_100, p_010, p_110,
  22.          p_001, p_101, p_011, p_111, delta;
  23.  
  24.   PLANE_BBOX_PTR pbox;
  25.  
  26.   static PLANE_BBOX_PTR list;
  27.  
  28.   if (obj == NULL) return(NULL);
  29.  
  30.   if (obj->type == BBOX) {            /* if BBOX, move on */
  31.     Init_Plane_Bbox(obj->child);
  32.     Init_Plane_Bbox(obj->nextobj);
  33.     return(NULL);
  34.   }
  35.                                       /* if not, compute stuff */
  36.  
  37. /*  (*(ObjData[node->type].FindBbox))(&p_000,&p_111,node);
  38. */
  39.     (*(ObjData[obj->type].FindBbox))(&p_000,&p_111,obj);
  40.  
  41.  
  42.   /* create all 8 corners of 3d box */
  43.  
  44.   VecSubtract(&delta, &p_111, &p_000);
  45.  
  46.   VectEQ(&p_100, &p_000); p_100.x += delta.x;  /* front face */
  47.   VectEQ(&p_010, &p_000); p_010.y += delta.y;
  48.   VectEQ(&p_110, &p_100); p_110.z += delta.y;
  49.  
  50.   VectEQ(&p_101, &p_111); p_101.y -= delta.y;  /* back face */
  51.   VectEQ(&p_011, &p_111); p_011.x -= delta.x;
  52.   VectEQ(&p_001, &p_011); p_001.y -= delta.y;
  53.  
  54.  
  55.  
  56. }
  57.  
  58.  
  59.