// Triangle.hpp: Declaration of the Triangle class.
//
// Author: Dominik Slusarczyk <dslusarc@cs.hmc.edu>
// 2/27/04
//

#ifndef __TRIANGLE_HPP_INCLUDED
#define __TRIANGLE_HPP_INCLUDED

#include "geometry.h"
#include "Room.hpp"

class Triangle
{
   public:
      Triangle(Tuple& v1, Tuple& v2, Tuple& v3);
      ~Triangle();

      // Ask the triangle to draw itself.
      void draw();

      // Get a list of edges or faces..
      struct Edge* getEdges();
      struct Face* getFaces();

      struct Edge
      {
	    Tuple v1;
	    Tuple v2;
      };

      struct Face
      {
	    Tuple v1;
	    Tuple v2;
	    Tuple v3;
      };

   private:
      Tuple v1;
      Tuple v2;
      Tuple v3;

      // Some possibilities...
      int color;
      int texture;

      // Disable copy constructor and assignment operator.
      Triangle(Triangle&);
      Triangle operator=(Triangle&);
};

#endif
