/* lights.h */

class light
{
public:
	double type;
	virtual void hit_to_light(xyz *hit_point,xyz *light_ray)
	{}
	virtual double brightness()
	{
	return(0.0);
	}
	virtual xyz calc_brightness(int y,int x,xyz *hit_point,int samples)
	{
		xyz temp;
		return(temp);
	}

};

class point_light: public light
{
public:
	double x,y,z;
	double bright;
	void hit_to_light(xyz *hit_point,xyz *light_ray);
	double brightness(void);
	xyz calc_brightness(int y,int x,xyz *hit_point,int samples);
	point_light(double a,double b,double c,double d,double e)
	{
		x=a;
		y=b;
		z=c;
		bright=d;
		type=e;
	}
};

class area_light: public light
{
public:
	xyz pnta,pntb,pntc,pntd;
	double bright;
	void hit_to_light(xyz *hit_point,xyz *light_ray);
	double brightness(void);
	xyz calc_brightness(int y,int x,xyz *hit_point,int samples);
	area_light(double ax,double ay,double az,double bx,double by,double bz,double cx,double cy,double cz,double dx,double dy,double dz,double b,double t):pnta(),pntb(),pntc(),pntd()
	{
	pnta.x=ax;
	pnta.y=ay;
	pnta.z=az;
	pntb.x=bx;
	pntb.y=by;
	pntb.z=bz;
	pntc.x=cx;
	pntc.y=cy;
	pntc.z=cz;
	pntd.x=dx;
	pntd.y=dy;
	pntd.z=dz;
	bright=b;
	type=t;
	}
};