/* Edge.h
 *
 * Interface definition for the Edge class, which stores edge data and can
 * detect path intersection (collision).
 */

#ifndef EDGE_H_INCLUDED
#define EDGE_H_INCLUDED 1

#include "Obstruction.h"
#include "Vertex.h"

class Edge : public Obstruction
{
private:
	// Member Variables (akin to Triangle members, refer to Triangle.h)
	Vertex* v1_;
	Vertex* v2_;
	Tuple sv1_;
	Tuple sv2_;
	Tuple direction_;
	Tuplex rotation_;

public:
	// Constructors/Destructor
	Edge(Vertex* v1, Vertex* v2);
	virtual ~Edge();

	// Member Functions
	virtual void			draw(bool light) const;	// Does nothing
	virtual const double	pathIntersect(	// Check if path hits edge
		const Path& path,
		double radius) const;
	virtual const Tuple		calcNormal(		// Find normal relative to some pos
		const Tuple& point) const;
};

#endif // EDGE_H_INCLUDED
