#ifndef FACE_H #define FACE_H #include "vertex.h" #include "tilevertexinfo.h" #include class Face; class Vertex; class TileVertexInfo; class Face { private: Vertex *m_v1; Vertex *m_v2; Vertex *m_v3; TileVertexInfo *m_vi1; TileVertexInfo *m_vi2; TileVertexInfo *m_vi3; Face * m_parent; QVector3D m_normal; Face * m_subface = NULL; float sign (QVector2D p1, QVector2D p2, QVector2D p3); bool PointInFace (QVector2D pt); public: Face () { m_subface= NULL;} Face(Vertex *v1 , TileVertexInfo *vi1 , Vertex *v2 , TileVertexInfo *vi2 , Vertex *v3 , TileVertexInfo *vi3); void setSettings(Vertex *v1 , TileVertexInfo *vi1 , Vertex *v2 , TileVertexInfo *vi2 , Vertex *v3 , TileVertexInfo *vi3); void recalcNormal(); QVector3D normal(); inline TileVertexInfo * getVi1() { return m_vi1; } inline TileVertexInfo * getVi2() { return m_vi2; } inline TileVertexInfo * getVi3() { return m_vi3; } void createSub() { m_subface = new Face[4]; for (int i=0; i<4;i++) { m_subface[i].setParent(this); } } inline Face &getSub(int nr) { return m_subface[nr]; } inline void setParent(Face *parent) {m_parent = parent;} void findFaces(std::vector &vec, QVector2D s); }; #endif // FACE_H