1 #ifndef SMOOTHTRIANGLE_HXX
 2 #define SMOOTHTRIANGLE_HXX
 3 
 4 #include "Primitive.hxx"
 5 #include "Shader.hxx"
 6 
 7 class SmoothTriangle : public Triangle
 8 {
 9 	// Vec3f a, b, c; // vtx positions inherited from Triangle
10 	Vec3f na, nb, nc; // vertex normals
11 public:
12 	SmoothTriangle(Vec3f a, Vec3f b, Vec3f c,
13 		Vec3f na,Vec3f nb,Vec3f nc,
14 		Shader *shader, PhotonDistributor *photon_distributor)
15 		: Triangle(a,b,c,shader,photon_distributor),na(na),nb(nb),nc(nc)
16 	{};
17 
18 	virtual Vec3f GetNormal(Ray &ray)
19 	{
20 		Vec3f hitNormal = ray.u * nb + ray.v * nc + (1 - ray.u - ray.v) * na;
21 		Normalize(hitNormal);
22 
23 		return hitNormal;
24 	};
25 };
26 
27 #endif


syntax highlighted by Code2HTML, v. 0.9.1