00001 #ifndef __Plane_H__ 00002 #define __Plane_H__ 00003 00012 00013 00014 #include <ngl/Vector.h> 00015 #include "Ray.h" 00016 #include <ngl/ShaderManager.h> 00017 #include <ngl/TransformStack.h> 00018 class Plane 00019 { 00020 private : 00022 ngl::Vector m_v0; 00023 ngl::Vector m_v1; 00024 ngl::Vector m_v2; 00026 ngl::Vector m_edge1; 00027 ngl::Vector m_edge2; 00029 bool m_hit; 00031 ngl::Vector m_hitPoint; 00033 GLuint m_bufferID; 00034 00036 std::vector<GLfloat> m_normals; 00038 std::vector<GLfloat> m_points; 00039 00040 public : 00042 inline bool getIsHit() const { return m_hit; } 00044 Plane( 00045 ngl::Vector _p0, 00046 ngl::Vector _p1, 00047 ngl::Vector _p2 00048 ); 00049 00051 void reset( 00052 ngl::Vector _v0, 00053 ngl::Vector _v1, 00054 ngl::Vector _v2 00055 ); 00057 const ngl::Vector& getFirstV() const { return m_v0; } 00058 const ngl::Vector& getSecondV() const { return m_v1; } 00059 const ngl::Vector& getThirdV() const { return m_v2; } 00063 void draw( 00064 const std::string &_shaderName, 00065 ngl::TransformStack &_transformStack 00066 ); 00068 void drawSphere( 00069 const std::string &_shaderName, 00070 ngl::TransformStack &_transformStack 00071 ); 00072 00074 void rayPlaneIntersect( 00075 Ray& _ray 00076 ); 00077 00078 00079 }; 00080 00081 #endif