|
|
|
|
|
|
|
|
|
|
|
/************************************************************************/
|
|
|
|
|
|
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>CTriContour */
|
|
|
|
|
|
/* <20><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><D7B7> */
|
|
|
|
|
|
/* <20><><EFBFBD><EFBFBD>ΰ 2011-12-14 */
|
|
|
|
|
|
/************************************************************************/
|
|
|
|
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
#include "triangulation.h"
|
|
|
|
|
|
#include <list>
|
|
|
|
|
|
/** @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>߽ṹ<DFBD><E1B9B9>*/
|
|
|
|
|
|
class AFX_EXT_CLASS CTLine
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
double z0; //<2F>߶<EFBFBD>ֵ
|
|
|
|
|
|
list<CPoint3D> m_pointList; //<2F><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
/** @brief <20>õ<EFBFBD><C3B5><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
|
int GetSize();
|
|
|
|
|
|
/** @brief <20>Ե<EFBFBD>ֵ<EFBFBD>߽<EFBFBD><DFBD><EFBFBD>ƽ<EFBFBD><C6BD> */
|
|
|
|
|
|
bool Smooth(int stimes = 100);
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class AFX_EXT_CLASS CTriContour
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
CTriContour(void);
|
|
|
|
|
|
virtual ~CTriContour(void);
|
|
|
|
|
|
|
|
|
|
|
|
/** @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
|
virtual void ClearAll();
|
|
|
|
|
|
|
|
|
|
|
|
/** @brief <>ٸ<EFBFBD><D9B8><EFBFBD>Zֵ<5A>ĵ<EFBFBD>ֵ<EFBFBD><D6B5> */
|
|
|
|
|
|
int TraceContour(double z,CTriangulation& tNet);
|
|
|
|
|
|
|
|
|
|
|
|
/** @brief <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|
|
|
|
|
void WriteContours(char* filename);
|
|
|
|
|
|
/** @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>,stimesΪƽ<CEAA><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|
|
|
|
|
bool Smooth(int stimes = 100);
|
|
|
|
|
|
/** @brief <20>õ<EFBFBD><C3B5><EFBFBD>ֵ<EFBFBD>ߵ<EFBFBD><DFB5><EFBFBD><EFBFBD><EFBFBD>*/
|
|
|
|
|
|
int GetSize();
|
|
|
|
|
|
/** @brief <20>õ<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|
|
|
|
|
int GetContour(int nIndex, CCurve& curve);
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
/** @brief <20><><EFBFBD>յ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|
|
|
|
|
void ClearContourVector();
|
|
|
|
|
|
/** @brief <20>Ը߶<D4B8>ֵǡ<D6B5><C7A1>Ϊzֵ<7A><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>Сֵ */
|
|
|
|
|
|
void DisposeSigularPoints(double z0);
|
|
|
|
|
|
/** @brief <20><>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѱ<EFBFBD><D1B0>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5> */
|
|
|
|
|
|
int SearchFromThisTriangle(double z0, int triNo, CTLine& line, set<int>& FDNOS);
|
|
|
|
|
|
/** @brief <>ٵ<EFBFBD>triNo<4E><6F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڱ<EFBFBD>Ϊnpt1<74><31>npt2<74><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>z0<7A>ıߣ<C4B1><DFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ptlist<73><74>addModeΪ<65><CEAA><EFBFBD>ӷ<EFBFBD>ʽ*/
|
|
|
|
|
|
int OneWayTrace(double& z0, int& triNo, int& npt1, int& npt2,list<CPoint3D>& ptlist, set<int>& FDNOS, int addMode = 0);
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>
|
|
|
|
|
|
public:
|
|
|
|
|
|
CTriangulation* m_pTNet; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
vector<CTLine*> m_ContourVector; //<2F><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|