www.pudn.com > Poly.rar > LineToPoly.h
// LineToPoly.h: interface for the CLineToPoly class. // ////////////////////////////////////////////////////////////////////// #if !defined(AFX_LINETOPOLY_H__38CC3904_D518_4C7B_B7C3_58DC57CFC6FF__INCLUDED_) #define AFX_LINETOPOLY_H__38CC3904_D518_4C7B_B7C3_58DC57CFC6FF__INCLUDED_ #if _MSC_VER > 1000 #pragma once #pragma warning( disable : 4786 ) #endif // _MSC_VER > 1000 #include#include #include "datasdef.h" using namespace std; //点结构 struct POINT_D { POINT_D():num(-1),code(-1),x(-1),y(-1),isVert(0) {} POINT_D(const POINT_D& p) :num(p.num), code(p.code),x(p.x),y(p.y),isVert(0){} //判断是否在被比较点的左上方 bool operator<(const POINT_D& p) const { return code vIntList; typedef vector vPointList; //计算边(判断最小角) struct CalEdge { int p0n; int p1n; }; //线 class CLinePy { public: CLinePy():m_num(-1) {} CLinePy(const vIntList& ptlist,const int& num):m_ptlist(ptlist),m_num(num) {} //判断是否在被比较点的左上方 bool operator<(const CLinePy& line) const { return m_num =2); m_calEdge.p0n = m_ptlist[m_ptlist.size()-2]; m_calEdge.p1n = m_ptlist[m_ptlist.size()-1]; return m_calEdge; } protected: int m_num; //线号 CalEdge m_calEdge; //角度计算边 vIntList m_ptlist; //向量存储线上的点序号 }; typedef vector vLinePyList; typedef set sLinePyList; class CPolyPy { public: CPolyPy(const CPolyPy& p):m_ptlist(p.m_ptlist) {} protected: vIntList m_ptlist; //向量存储多边形上的点序号 }; typedef vector vPolyPyList; class CLineToPoly { public: bool LoadPtData(CString fileName); CLineToPoly(); virtual ~CLineToPoly(); protected: CString GetPointStyle(POINTSTYLE pStyle); POINTSTYLE GetPointStyle(const char *style); private: int m_pointNum; vPointList m_vpointList; vLinePyList m_vlineList; CSize m_size; }; #endif // !defined(AFX_LINETOPOLY_H__38CC3904_D518_4C7B_B7C3_58DC57CFC6FF__INCLUDED_)