#include<math.h>

class xyz
{

public:

	double x,y,z;
	xyz()
	{
		x=0.0;
		y=0.0;
		z=0.0;
	}

	xyz (double a,double b,double c)
	{
		x=a;
		y=b;
		z=c;
	}

xyz operator +(xyz b);
xyz operator -(xyz b);
void operator =(xyz b);
xyz operator /(double b);
xyz operator -();
	double normalize();
	

};
class xy
{

public:

	double x,y;
	xy()
	{
		x=0.0;
		y=0.0;
		
	}

	xy(double a,double b)
	{
		x=a;
		y=b;
		
	}
};

extern xyz nor;


class color
{
public:
	double r,g,b;

	void operator =(color x);

	color(double a,double x,double c)
	{
		r=a;
		g=x;
		b=c;

	}
	color()
	{
		r=0;
		g=0;
		b=0;
	}

//color operator *(double d);
color operator +(color d);
int gamma_correct_r();
int gamma_correct_g();
int gamma_correct_b();
};


class surface
{
public:
	double ar,ag,ab;
	double dr,dg,db;
	double sr,sg,sb;
	double spec_coef;
	double reflectivity;
	double transparency,refractive_index,texture,diffuse,glassy;
	surface()
	{
		ar=0;
		ag=0;
		ab=0;
		dr=0;
		dg=0;
		db=0;
		sr=0;
		sg=0;
		sb=0;
		spec_coef=0;
		reflectivity=0;
		transparency=0;
		refractive_index=1;
		texture=0;
		diffuse=0;
		glassy=0;
	}

};
