You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

62 lines
1.7 KiB
C

1 month ago
/************************************************************************/
/* <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><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>
};