📄 edge.cpp
字号:
// Edge.cpp: implementation of the Edge class.边类的执行
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "Subdiv.h"
#include "Edge.h"
#include <iostream>
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
Edge::Edge()
{
}
Edge::Edge(int bgVertexIdx, int edVertexIdx)
{
m_bgVertexIdx = bgVertexIdx;
m_edVertexIdx = edVertexIdx;
}
Edge::~Edge()
{
reset();
}
bool Edge::operator < (const Edge &e) const
{ // 先比大index顶点再比小index顶点
int b, l, eb, el;
if (m_edVertexIdx > m_bgVertexIdx)
b = m_edVertexIdx, l = m_bgVertexIdx;
else
l = m_edVertexIdx, b = m_bgVertexIdx;
if (e.m_edVertexIdx > e.m_bgVertexIdx)
eb = e.m_edVertexIdx, el = e.m_bgVertexIdx;
else
el = e.m_edVertexIdx, eb = e.m_bgVertexIdx;
if( b < eb ) return true;
else if ( b == eb ) return ( l < el );
else return false;
/* if (m_edVertexIdx > m_bgVertexIdx) // m_edVertexIdx大
{
if(e.m_edVertexIdx > e.m_bgVertexIdx)
return (m_edVertexIdx < e.m_edVertexIdx) ||
(m_edVertexIdx == e.m_edVertexIdx && m_bgVertexIdx < e.m_bgVertexIdx);
else
return (m_edVertexIdx < e.m_bgVertexIdx) ||
(m_edVertexIdx == e.m_bgVertexIdx && m_bgVertexIdx > e.m_edVertexIdx);
}
else // m_bgVertexIdx大
{
if(e.m_edVertexIdx > e.m_bgVertexIdx)
return (m_bgVertexIdx < e.m_edVertexIdx) ||
(m_bgVertexIdx == e.m_edVertexIdx && m_edVertexIdx < e.m_bgVertexIdx);
else
return (m_bgVertexIdx < e.m_bgVertexIdx) ||
(m_bgVertexIdx == e.m_bgVertexIdx && m_edVertexIdx < e.m_edVertexIdx);
}
*/
}
bool Edge::operator == (const Edge &e) const
{
return ((m_edVertexIdx == e.m_edVertexIdx && m_bgVertexIdx == e.m_bgVertexIdx) ||
(m_edVertexIdx == e.m_bgVertexIdx && m_bgVertexIdx == e.m_edVertexIdx)
);
}
Edge& Edge::operator = (const Edge &e)
{
if(&e == this)
return *this;
m_edVertexIdx = e.m_edVertexIdx;
m_bgVertexIdx = e.m_bgVertexIdx;
return *this;
}
/*
void Edge::addAdjFace(int fi)
{
}
//inline
void Edge::setMidPoint(Vector3d& mid)
{
m_midPoint = mid;
}
*/
void Edge::dump() const
{
cout << "DUMP: Edge " << " (" << m_bgVertexIdx + 1<< " ==> " << m_edVertexIdx + 1<< ")";
cout << " Mid point:(" << m_midPoint.x << "," << m_midPoint.y << "," << m_midPoint.z << ")";
cout << " newEdgePointIdx:" << m_newEdgePointIdx << endl;
cout << " AdjFaces: (" ;
for(vector<int>::const_iterator itr = m_adjFaceIdxSet.begin(); itr != m_adjFaceIdxSet.end(); itr ++)
cout << (*itr) + 1 << " ";
cout << ")" ;
cout << endl;
}
void Edge::reset()
{
m_adjFaceIdxSet.clear();
}
int Edge::getCounterVertex(int vi)
{
return( vi == m_bgVertexIdx ? m_edVertexIdx : m_bgVertexIdx);
}
bool Edge::isOnBoundary()
{
return ( m_adjFaceIdxSet.size() < 2 );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -