#pragma once #include "Intersectable.hpp" class Triangle : public Intersectable { // const Material* material; const Vector* a, *b, *c; // the 3 vertices Vector normal; // surface normal enum DominantAxis{X_DOMINANT, Y_DOMINANT, Z_DOMINANT} dominantAxis; // pre computed values for faster intersection testing: float hyperPlaneShiftOffset; float d1, d2, d3, d4, d5, d6; public: Triangle(const Vector* a, const Vector* b, const Vector* c, const Material* material); bool intersect(const Ray& ray, float& depth, float rayMin, float rayMax); bool intersectBackSide(const Ray& ray, float& depth, float rayMin, float rayMax); Vector getShadingNormal(const Vector& point) { return normal; } };