www.pudn.com > 3d_terrain.rar > Edge3d.h, change:1999-02-02,size:2337b
//********************************************
// Edge3d.h
// class CEdge3d
//********************************************
// An edge :
// + Two vertex ref
// + Two neighbors ref
// + A flag
//********************************************
// pierre.alliez@cnet.francetelecom.fr
// Created : 15/12/97
// Modified : 18/02/98
//********************************************
#ifndef _EDGE_3D_
#define _EDGE_3D_
#include "Object3d.h"
class CVertex3d;
class CFace3d;
class CEdge3d : public CObject3d
{
private :
// Geometry
CVertex3d *m_pVertex1;
CVertex3d *m_pVertex2;
CFace3d *m_pFace1;
CFace3d *m_pFace2;
// Flag
char m_Flag;
public :
CEdge3d();
virtual ~CEdge3d() {}
// Constructors
CEdge3d(CVertex3d *pVertex1,CVertex3d *pVertex2);
CEdge3d(CVertex3d *pVertex1,CVertex3d *pVertex2,CFace3d *pFace1,CFace3d *pFace2);
CEdge3d(CEdge3d *pEdge);
// Data setting
virtual int GetType();
// Copy Edge
void Set(CEdge3d *pEdge);
// Vertices
void Set(CVertex3d *pVertex1,CVertex3d *pVertex2);
void v1(CVertex3d *pVertex) { m_pVertex1 = pVertex; }
void v2(CVertex3d *pVertex) { m_pVertex2 = pVertex; }
void v(int index,CVertex3d *pVertex)
{
if(index == 0)
m_pVertex1 = pVertex;
else
m_pVertex2 = pVertex;
}
// Faces
void Set(CFace3d *pFace1,CFace3d *pFace2);
void f1(CFace3d *pFace) { m_pFace1 = pFace; }
void f2(CFace3d *pFace) { m_pFace2 = pFace; }
void f(int index,CFace3d *pFace)
{
if(index == 0)
m_pFace1 = pFace;
else
m_pFace2 = pFace;
}
// Vertices
CVertex3d *v1(void) { return m_pVertex1; }
CVertex3d *v2(void) { return m_pVertex2; }
CVertex3d *v(int index) { return ((index == 0) ? m_pVertex1 : m_pVertex2); }
CVertex3d *GetVertexDiff(CVertex3d *pVertexDiff);
// Faces
CFace3d *f1(void) { return m_pFace1; }
CFace3d *f2(void) { return m_pFace2; }
CFace3d *f(int index) { return ((index == 0) ? m_pFace1 : m_pFace2); }
// Flag
void SetFlag(char flag) { m_Flag = flag; }
char GetFlag() { return m_Flag; }
// Processing
int Equal(CEdge3d *pEdge);
int sharp(float threshold); // threshold : sin(angle)
// OpenGL
void glDrawHighlight(unsigned char *color);
void glDrawHighlight(unsigned char *color,unsigned char *ColorNeighbor);
};
#endif // _EDGE_3D_