⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vertex.cpp

📁 此代码主要用于汽车车身的优化
💻 CPP
字号:
// Vertex.cpp: implementation of the Vertex class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "Subdiv.h"
#include "Vertex.h"

#include <iostream>
#include <vector>
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
/*
Vertex::Vertex()
{
}
*/

Vertex::Vertex(double x, double y, double z, int idx)
{
	m_v.x = x;
	m_v.y = y;
	m_v.z = z;
	m_index = idx;

}

Vertex::Vertex(Vector3d &v, int idx)
{
	m_v = v;
	m_index = idx;
}

Vertex::~Vertex()
{
	reset();
}

// check if repeat, if not then add
/*
*/
void Vertex::addAdjEdge(Mesh::EDGEPOS ep)
{
	// safe code for none manifold
	bool blexist = false;
	for(ADJEDGESET::iterator itr = m_adjEdgePosSet.begin(); itr != m_adjEdgePosSet.end(); itr ++)
		if(*(*itr) == *ep)
		{
			blexist = true;
			break;
		}
	if( !blexist )	
		m_adjEdgePosSet.push_back(ep);
}
	/*	for(ADJEDGESET::iterator itr = m_adjEdgePosSet.begin(); itr != m_adjEdgePosSet.end(); itr ++)
		if((*itr) == ep)
		{
			blexist = true;
			break;
		}
	if( !blexist )	
		m_adjEdgePosSet.push_back(ep);
*/


//	cout << "V " << m_index << ":addAdjEdge: edge<" << ep->m_bgVertexIdx + 1 << "," 
//		<< ep->m_edVertexIdx + 1 << "> insertion " << (blexist? "failed" : "succeed") << endl;
/*
	for(int i = 0; i < m_adjEdgePosSet.size(); i ++)
	{
		Edge e1 = *ep;
		Edge e2 = *(m_adjEdgePosSet[i]);

		ASSERT( (ep == m_adjEdgePosSet[i]) == (*ep == *(m_adjEdgePosSet[i])) );

		if(*ep == *(m_adjEdgePosSet[i]))
		{
			blexist = true;
			break;
		}
	}
*/

/* inline
void Vertex::addAdjFace(int fi)
{
	m_adjFaceIdxSet.push_back(fi);
}*/

const Vector3d& Vertex::getVertex3d() const
{
	return m_v;
}

void Vertex::dump() const
{
	cout << "DUMP: Vertex " << m_index + 1 << " (" << m_v.x << "," << m_v.y << "," << m_v.z << ")" 
		 << "  newVertexIdx:" << m_newVertexPointIdx << endl;
	cout << "            AdjEdges: " ;
	for(Vertex::ADJEDGESET::const_iterator itr = m_adjEdgePosSet.begin(); itr != m_adjEdgePosSet.end(); itr ++)
		cout << "<" << (*itr)->m_bgVertexIdx + 1 << "," << (*itr)->m_edVertexIdx + 1<< "> " ;
	cout << "  AdjFaces: " ;
	for(vector<int>::const_iterator itr2 = m_adjFaceIdxSet.begin(); itr2 != m_adjFaceIdxSet.end(); itr2 ++)
		cout << (*itr2) + 1<< " ";
	cout << endl;
}

void Vertex::reset()
{
	m_adjFaceIdxSet.clear();
	m_adjEdgePosSet.clear();
}

bool Vertex::isOnBoundary()
{
	return( m_adjFaceIdxSet.size() != m_adjEdgePosSet.size());
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -