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