// system includes
#include <math.h>
#include <iostream.h>
#include <stdlib.h>

// openGL includes
#include <GL/gl.h>
#include <GL/glu.h>

// gprims utility library: need definition of max_flt, etc.
#include "gprims/vector.H"

// local includes
#include "drawutils.H"
#include "bb.H"
#include "object.H"

BB::BB (float x1,float x2,float y1,float y2,float z1,float z2) {
  _x1 = x1;
  _x2 = x2;
  _y1 = y1;
  _y2 = y2;
  _z1 = z1;
  _z2 = z2;
}

int
BB::draw(float r, float g, float b) {
  glBegin(GL_LINES);
  glColor3f(r,g,b);

  // z1 box
  glVertex3f(_x1,_y1,z1);
  glVertex3f(_x2,_y1,z1);
  
  glVertex3f(_x2,_y1,z1);
  glVertex3f(_x2,_y2,z1);
  
  glVertex3f(_x2,_y2,z1);
  glVertex3f(_x1,_y2,z1);
  
  glVertex3f(_x1,_y2,z1);
  glVertex3f(_x1,_y1,z1);
  
  // z2 box
  glVertex3f(_x1,_y1,z2);
  glVertex3f(_x2,_y1,z2);
  
  glVertex3f(_x2,_y1,z2);
  glVertex3f(_x2,_y2,z2);
  
  glVertex3f(_x2,_y2,z2);
  glVertex3f(_x1,_y2,z2);
  
  glVertex3f(_x1,_y2,z2);
  glVertex3f(_x1,_y1,z2);
  
  // connecting lines
  glVertex3f(_x1,_y1,_z1);
  glVertex3f(_x1,_y1,_z2);
  
  glVertex3f(_x1,_y2,_z1);
  glVertex3f(_x1,_y2,_z2);
  
  glVertex3f(_x2,_y1,_z1);
  glVertex3f(_x2,_y1,_z2);
  
  glVertex3f(_x2,_y2,_z1);
  glVertex3f(_x2,_y2,_z2);
  
  glEnd();
  return 1;
}

int
BB::intersectPlane(Point4 *plane, Point3 *verts) {
}

int
BB::insidePoint(Point3 *pt){
  if ((pt.x<_x1)||(pt.x>_x2)) return 0;
  if ((pt.y<_y1)||(pt.y>_y2)) return 0;
  if ((pt.z<_z1)||(pt.z>_z2)) return 0;
  return 1;
}

int
BB::intersectLine(Point4 *line, Point3 *verts){
}
