//-------------------------------------------------------------------------------------------------------+ // Copyright (C), 1998-2007, Beijing Tangent Software Co. Ltd. // = FileName : TGMeshNode3D Àà // = Version : ver2.0 // = Author : wlw // = CreateDate : 2002-09-09 // = Description: TGMeshNode3D ¶¨Òå // = Maintainers: // //-------------------------------------------------------------------------------------------------------+ #include "StdAfx.h" #include "TGMeshNode3D.h" TGMeshNode3D::TGMeshNode3D(const TGPoint&pt):TGPoint(pt) { } TGMeshNode3D::~TGMeshNode3D() { Clear(); } void TGMeshNode3D::AppendEdge(TGMeshEdge3D* pEdge) { m_lstEdge.AddTail(pEdge); } void TGMeshNode3D::Clear() { TDualPtrList temp; temp.Conbine(m_lstEdge); } TGMeshEdge3D* TGMeshNode3D::GetOnlyEdge() { return m_lstEdge.IsEmpty()?NULL:m_lstEdge[0]; } void TGMeshNode3D::RemoveEdge(TGMeshEdge3D*pEdge) { if (m_lstEdge.FindTo(pEdge)) { m_lstEdge.FetchCur(); } } bool TGMeshNode3D::IsEndNode() const { return m_lstEdge.GetLength() == 1; } void TGMeshNode3D::Arrange() { } TGMeshEdge3D* TGMeshNode3D::FindNextEdge(TGMeshEdge3D* pEdgeFrom) { if (IsEndNode()) { return NULL; } m_lstEdge.FindTo(pEdgeFrom); m_lstEdge.MoveToNext(); if (m_lstEdge.IsOut()) { m_lstEdge.MoveToFirst(); } return m_lstEdge.GetCurData(); } TGMeshEdge3D* TGMeshNode3D::FindPreEdge(TGMeshEdge3D* pEdgeFrom) { if (IsEndNode()) { return NULL; } m_lstEdge.FindTo(pEdgeFrom); m_lstEdge.MoveToPre(); if (m_lstEdge.IsOut()) { m_lstEdge.MoveToLast(); } return m_lstEdge.GetCurData(); } TGMeshEdge3D* TGMeshNode3D::FindNextSDEdge(TGMeshEdge3D* pEdgeFrom) { if (IsEndNode()) { return NULL; } m_lstEdge.FindTo(pEdgeFrom); m_lstEdge.MoveToNext(); if (m_lstEdge.IsOut()) { m_lstEdge.MoveToFirst(); } TGMeshEdge3D *pEdge = m_lstEdge.GetCurData(); if (pEdge == pEdgeFrom || pEdge->GetNode(1) != this) { return NULL; } return pEdge; } TGMeshEdge3D* TGMeshNode3D::FindPreSDEdge(TGMeshEdge3D* pEdgeFrom) { if (IsEndNode()) { return NULL; } m_lstEdge.FindTo(pEdgeFrom); m_lstEdge.MoveToPre(); if (m_lstEdge.IsOut()) { m_lstEdge.MoveToLast(); } TGMeshEdge3D *pEdge=m_lstEdge.GetCurData(); if (pEdge == pEdgeFrom || pEdge->GetNode(2) != this) { return NULL; } return pEdge; }