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

📄 edgeendstar.h

📁 在Linux下做的QuadTree的程序
💻 H
字号:
/********************************************************************** * $Id: EdgeEndStar.h 1820 2006-09-06 16:54:23Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net * * Copyright (C) 2005-2006 Refractions Research Inc. * Copyright (C) 2001-2002 Vivid Solutions Inc. * * This is free software; you can redistribute and/or modify it under * the terms of the GNU Lesser General Public Licence as published * by the Free Software Foundation.  * See the COPYING file for more information. * ********************************************************************** * * Last port: geomgraph/EdgeEndStar.java rev. 1.4 (JTS-1.7) * **********************************************************************/#ifndef GEOS_GEOMGRAPH_EDGEENDSTAR_H#define GEOS_GEOMGRAPH_EDGEENDSTAR_H#include <geos/geomgraph/EdgeEnd.h>  // for EdgeEndLT#include <geos/geom/Coordinate.h>  // for p0,p1#include <geos/inline.h>#include <set>#include <string>#include <vector>#include <algorithm> // for inlines (find)// Forward declarationsnamespace geos {	namespace geomgraph {		class GeometryGraph;	}}namespace geos {namespace geomgraph { // geos.geomgraph/** \brief * A EdgeEndStar is an ordered list of EdgeEnds around a node. * * They are maintained in CCW order (starting with the positive x-axis) * around the node for efficient lookup and topology building. * * @version 1.4 */class EdgeEndStar {public:	typedef std::set<EdgeEnd *, EdgeEndLT> container;	typedef container::iterator iterator;	typedef container::reverse_iterator reverse_iterator;	EdgeEndStar();	virtual ~EdgeEndStar() {};	/** \brief	 * Insert a EdgeEnd into this EdgeEndStar	 */	virtual void insert(EdgeEnd *e)=0;	/** \brief	 * @return the coordinate for the node this star is based at	 *         or NULL if this is still an unbound star.	 * Be aware that the returned pointer will point to	 * a Coordinate owned by the specific EdgeEnd happening	 * to be the first in the star (ordered CCW)	 */	virtual geom::Coordinate& getCoordinate();	virtual size_t getDegree();	virtual iterator begin();	virtual iterator end();	virtual reverse_iterator rbegin();	virtual reverse_iterator rend();	virtual container &getEdges();	virtual EdgeEnd* getNextCW(EdgeEnd *ee);	virtual void computeLabelling(std::vector<GeometryGraph*> *geom);		// throw(TopologyException *);	virtual int getLocation(int geomIndex,		const geom::Coordinate& p,		std::vector<GeometryGraph*> *geom); 	virtual bool isAreaLabelsConsistent();	virtual void propagateSideLabels(int geomIndex);		// throw(TopologyException *);	//virtual int findIndex(EdgeEnd *eSearch);	virtual iterator find(EdgeEnd *eSearch);	virtual std::string print();protected:	/** \brief	 * A map which maintains the edges in sorted order	 * around the node	 */	EdgeEndStar::container edgeMap;	/** \brief	 * Insert an EdgeEnd into the map.	 */	virtual void insertEdgeEnd(EdgeEnd *e) { edgeMap.insert(e); }private:	/** \brief	 * The location of the point for this star in	 * Geometry i Areas	 */	int ptInAreaLocation[2];	virtual void computeEdgeEndLabels();	virtual bool checkAreaLabelsConsistent(int geomIndex);};inline size_tEdgeEndStar::getDegree(){	return edgeMap.size();}inline EdgeEndStar::iteratorEdgeEndStar::begin(){	return edgeMap.begin();}inline EdgeEndStar::container&EdgeEndStar::getEdges(){	return edgeMap;}inline EdgeEndStar::reverse_iteratorEdgeEndStar::rend(){	return edgeMap.rend();}inline EdgeEndStar::iteratorEdgeEndStar::end(){	return edgeMap.end();}inline EdgeEndStar::reverse_iteratorEdgeEndStar::rbegin(){	return edgeMap.rbegin();}inline EdgeEndStar::iteratorEdgeEndStar::find(EdgeEnd *eSearch){	return edgeMap.find(eSearch);}} // namespace geos.geomgraph} // namespace geos//#ifdef GEOS_INLINE//# include "geos/geomgraph/EdgeEndStar.inl"//#endif#endif // ifndef GEOS_GEOMGRAPH_EDGEENDSTAR_H/********************************************************************** * $Log$ * Revision 1.4  2006/06/12 10:49:43  strk * unsigned int => size_t * * Revision 1.3  2006/04/04 13:35:55  strk * Port info, assertion checking, indentation * * Revision 1.2  2006/03/24 09:52:41  strk * USE_INLINE => GEOS_INLINE * * Revision 1.1  2006/03/09 16:46:49  strk * geos::geom namespace definition, first pass at headers split * **********************************************************************/

⌨️ 快捷键说明

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