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

📄 directededge.h

📁 在Linux下做的QuadTree的程序
💻 H
字号:
/********************************************************************** * $Id: DirectedEdge.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. * **********************************************************************/#ifndef GEOS_GEOMGRAPH_DIRECTEDEDGE_H#define GEOS_GEOMGRAPH_DIRECTEDEDGE_H#include <string>#include <geos/geomgraph/EdgeEnd.h> // for inheritance#include <geos/inline.h>// Forward declarationsnamespace geos {	namespace geomgraph {		class Edge;		class EdgeRing;	}}namespace geos {namespace geomgraph { // geos.geomgraph/// A directed EdgeEndclass DirectedEdge: public EdgeEnd {public:	/** \brief	 * Computes the factor for the change in depth when moving from	 * one location to another.	 * E.g. if crossing from the INTERIOR to the EXTERIOR the depth	 * decreases, so the factor is -1	 */	static int depthFactor(int currLocation, int nextLocation);	//DirectedEdge();		//virtual ~DirectedEdge();		DirectedEdge(Edge *newEdge, bool newIsForward);	// this is no different from Base class, no need to override	//Edge* getEdge();	void setInResult(bool newIsInResult);	bool isInResult();	bool isVisited();	void setVisited(bool newIsVisited);	void setEdgeRing(EdgeRing *newEdgeRing);	EdgeRing* getEdgeRing();	void setMinEdgeRing(EdgeRing *newMinEdgeRing);	EdgeRing* getMinEdgeRing();	int getDepth(int position);	void setDepth(int position, int newDepth);	int getDepthDelta();	/// Marks both DirectedEdges attached to a given Edge.	//	/// This is used for edges corresponding to lines, which will only	/// appear oriented in a single direction in the result.	///	void setVisitedEdge(bool newIsVisited);	/** \brief	 * Each Edge gives rise to a pair of symmetric DirectedEdges,	 * in opposite directions.	 *	 * @return the DirectedEdge for the same Edge but in the	 *         opposite direction	 */	DirectedEdge* getSym();	bool isForward();	void setSym(DirectedEdge *de);	DirectedEdge* getNext();	void setNext(DirectedEdge *newNext);	DirectedEdge* getNextMin();	void setNextMin(DirectedEdge *newNextMin);	/** \brief	 * Tells wheter this edge is a Line	 *	 * This edge is a line edge if	 * - at least one of the labels is a line label	 * - any labels which are not line labels have all Locations = EXTERIOR	 * 	 */	bool isLineEdge();	/** \brief	 * Tells wheter this edge is an Area	 *	 * This is an interior Area edge if	 * - its label is an Area label for both Geometries	 * - and for each Geometry both sides are in the interior.	 *	 * @return true if this is an interior Area edge	 */	bool isInteriorAreaEdge();	/** \brief	 * Set both edge depths. 	 *	 * One depth for a given side is provided. 	 * The other is computed depending on the Location transition and the	 * depthDelta of the edge.	 */	void setEdgeDepths(int position, int newDepth);	std::string print();	std::string printEdge();protected:	bool isForwardVar;private:	bool isInResultVar;	bool isVisitedVar;	/// the symmetric edge	DirectedEdge *sym;	/// the next edge in the edge ring for the polygon containing this edge	DirectedEdge *next; 	/// the next edge in the MinimalEdgeRing that contains this edge	DirectedEdge *nextMin; 	/// the EdgeRing that this edge is part of	EdgeRing *edgeRing; 	/// the MinimalEdgeRing that this edge is part of	EdgeRing *minEdgeRing; 	/** \brief	 * The depth of each side (position) of this edge.	 * The 0 element of the array is never used.	 */	int depth[3];	/// Compute the label in the appropriate orientation for this DirEdge	void computeDirectedLabel();};} // namespace geos.geomgraph} // namespace geos#ifdef GEOS_INLINE# include "geos/geomgraph/DirectedEdge.inl"#endif#endif // ifndef GEOS_GEOMGRAPH_DIRECTEDEDGE_H/********************************************************************** * $Log$ * Revision 1.5  2006/06/14 14:32:20  strk * EdgeEnd::getEdge() made non-virtual and inlined. * * Revision 1.4  2006/05/04 13:38:13  strk * doxygen comments cleanup * * Revision 1.3  2006/03/24 09:52:41  strk * USE_INLINE => GEOS_INLINE * * Revision 1.2  2006/03/15 15:27:23  strk * cleanups * * 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 + -