#ifndef __TRIANGLE3_H #define __TRIANGLE3_H #include "Vector3.h" namespace GtpVisibilityPreprocessor { class AxisAlignedBox3; class Ray; struct Triangle3 { Triangle3() {}; Triangle3(const Vector3 &a, const Vector3 &b, const Vector3 &c); void Init(const Vector3 &a, const Vector3 &b, const Vector3 &c); Vector3 GetNormal() const; Vector3 GetCenter() const; float GetSpatialAngle(const Vector3 &point) const; float GetArea() const; /// returns bounding box around this triangle AxisAlignedBox3 GetBoundingBox() const; /// Casts ray into this triangle. Returns hit int CastRay(const Ray &ray, float &t, const float nearestT) const; ////////////////////////////// /// the triangle vertices Vector3 mVertices[3]; }; } #endif