Edge3d.h
Upload User: hcfgz168
Upload Date: 2011-09-11
Package Size: 116k
Code Size: 2k
Category:

OpenGL program

Development Platform:

WINDOWS

  1. //********************************************
  2. // Edge3d.h
  3. // class CEdge3d
  4. //********************************************
  5. // An edge :
  6. // + Two vertex ref
  7. // + Two neighbors ref
  8. // + A flag
  9. //********************************************
  10. // pierre.alliez@cnet.francetelecom.fr
  11. // Created : 15/12/97
  12. // Modified : 18/02/98
  13. //********************************************
  14. #ifndef _EDGE_3D_
  15. #define _EDGE_3D_
  16. #include "Object3d.h"
  17. class CVertex3d;
  18. class CFace3d;
  19. class CEdge3d : public CObject3d
  20. {
  21. private :
  22. // Geometry
  23. CVertex3d *m_pVertex1;
  24. CVertex3d *m_pVertex2;
  25. CFace3d *m_pFace1;
  26. CFace3d *m_pFace2;
  27. // Flag
  28. char m_Flag;
  29. public :
  30. CEdge3d();
  31. virtual ~CEdge3d() {}
  32. // Constructors
  33. CEdge3d(CVertex3d *pVertex1,CVertex3d *pVertex2);
  34. CEdge3d(CVertex3d *pVertex1,CVertex3d *pVertex2,CFace3d *pFace1,CFace3d *pFace2);
  35. CEdge3d(CEdge3d *pEdge);
  36. // Data setting
  37. virtual int GetType();
  38. // Copy Edge
  39. void Set(CEdge3d *pEdge);
  40. // Vertices
  41. void Set(CVertex3d *pVertex1,CVertex3d *pVertex2);
  42. void v1(CVertex3d *pVertex) { m_pVertex1 = pVertex; }
  43. void v2(CVertex3d *pVertex) { m_pVertex2 = pVertex; }
  44. void v(int index,CVertex3d *pVertex)
  45. {
  46. if(index == 0)
  47. m_pVertex1 = pVertex;
  48. else
  49. m_pVertex2 = pVertex;
  50. }
  51. // Faces
  52. void Set(CFace3d *pFace1,CFace3d *pFace2);
  53. void f1(CFace3d *pFace) { m_pFace1 = pFace; }
  54. void f2(CFace3d *pFace) { m_pFace2 = pFace; }
  55. void f(int index,CFace3d *pFace)
  56. {
  57. if(index == 0)
  58. m_pFace1 = pFace;
  59. else
  60. m_pFace2 = pFace;
  61. }
  62. // Vertices
  63. CVertex3d *v1(void) { return m_pVertex1; }
  64. CVertex3d *v2(void) { return m_pVertex2; }
  65. CVertex3d *v(int index) { return ((index == 0) ? m_pVertex1 : m_pVertex2); }
  66. CVertex3d *GetVertexDiff(CVertex3d *pVertexDiff);
  67. // Faces
  68. CFace3d *f1(void) { return m_pFace1; }
  69. CFace3d *f2(void) { return m_pFace2; }
  70. CFace3d *f(int index) { return ((index == 0) ? m_pFace1 : m_pFace2); }
  71. // Flag
  72. void SetFlag(char flag) { m_Flag = flag; }
  73. char GetFlag() { return m_Flag; }
  74. // Processing
  75. int Equal(CEdge3d *pEdge);
  76. int sharp(float threshold); // threshold : sin(angle)
  77. // OpenGL
  78. void glDrawHighlight(unsigned char *color);
  79. void glDrawHighlight(unsigned char *color,unsigned char *ColorNeighbor);
  80. };
  81. #endif // _EDGE_3D_