亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? opoverlay.h

?? 一個很好的vc代碼
?? H
?? 第 1 頁 / 共 2 頁
字號:
/********************************************************************** * $Id: opOverlay.h,v 1.8.2.1 2005/06/28 01:07:11 strk Exp $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net * * 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_OPOVERLAY_H#define GEOS_OPOVERLAY_H#include <memory>#include <string>#include <vector>#include <set>#include <map>#include <geos/platform.h>#include <geos/operation.h>#include <geos/geomgraph.h>#include <geos/geosAlgorithm.h>using namespace std;namespace geos {class ElevationMatrixCell {public:	ElevationMatrixCell();	~ElevationMatrixCell();	void add(const Coordinate &c);	void add(double z);	double getAvg(void) const;	double getTotal(void) const;	string print() const;private:	set<double>zvals;	double ztot;};/* */class ElevationMatrix {public:	ElevationMatrix(const Envelope &extent, unsigned int rows,		unsigned int cols);	~ElevationMatrix();	void add(const Geometry *geom);	void elevate(Geometry *geom) const;	// set Z value for each cell w/out one	double getAvgElevation() const;	ElevationMatrixCell &getCell(const Coordinate &c);	const ElevationMatrixCell &getCell(const Coordinate &c) const;	string print() const;private:	void add(const CoordinateSequence *cs);	void add(const Coordinate &c);	Envelope env;	unsigned int cols;	unsigned int rows;	double cellwidth;	double cellheight;	mutable bool avgElevationComputed;	mutable double avgElevation;	vector<ElevationMatrixCell>cells;};class ElevationMatrixFilter: public CoordinateFilter{public:	ElevationMatrixFilter(const ElevationMatrix *em);	~ElevationMatrixFilter();	void filter_rw(Coordinate *c);	void filter_ro(const Coordinate *c) {};private:	const ElevationMatrix *em;	double avgElevation;};/* * Computes the overlay of two {@link Geometry}s.  The overlay * can be used to determine any boolean combination of the geometries. */class OverlayOp: public GeometryGraphOperation {public:	/*	 * The spatial functions supported by this class.	 * These operations implement various boolean combinations of	 * the resultants of the overlay.	 */	enum {		INTERSECTION=1,		UNION,		DIFFERENCE,		SYMDIFFERENCE	};	static Geometry* overlayOp(const Geometry *geom0, const Geometry *geom1,int opCode); //throw(TopologyException *);	static bool isResultOfOp(Label *label,int opCode);	/*	 * This method will handle arguments of Location.NULL correctly	 *	 * @return true if the locations correspond to the opCode	 */	static bool isResultOfOp(int loc0,int loc1,int opCode);	OverlayOp(const Geometry *g0, const Geometry *g1);	virtual ~OverlayOp();	Geometry* getResultGeometry(int funcCode);		// throw(TopologyException *);	PlanarGraph* getGraph();	/*	 * This method is used to decide if a point node should be included	 * in the result or not.	 *	 * @return true if the coord point is covered by a result Line	 * or Area geometry	 */	bool isCoveredByLA(const Coordinate& coord);	/*	 * This method is used to decide if an L edge should be included	 * in the result or not.	 *	 * @return true if the coord point is covered by a result Area geometry	 */	bool isCoveredByA(const Coordinate& coord);	/*	 * @return true if the coord is located in the interior or boundary of	 * a geometry in the list.	 */protected:	/*	 * Insert an edge from one of the noded input graphs.	 * Checks edges that are inserted to see if an	 * identical edge already exists.	 * If so, the edge is not inserted, but its label is merged	 * with the existing edge.	 */	void insertUniqueEdge(Edge *e);private:	PointLocator *ptLocator;	const GeometryFactory *geomFact;	Geometry *resultGeom;	PlanarGraph *graph;	EdgeList *edgeList;	vector<Polygon*> *resultPolyList;	vector<LineString*> *resultLineList;	vector<Point*> *resultPointList;	void computeOverlay(int opCode); // throw(TopologyException *);	void insertUniqueEdges(vector<Edge*> *edges);	/*	 * If either of the GeometryLocations for the existing label is	 * exactly opposite to the one in the labelToMerge,	 * this indicates a dimensional collapse has happened.	 * In this case, convert the label for that Geometry to a Line label	 */	//Not needed	//void checkDimensionalCollapse(Label labelToMerge, Label existingLabel);	/*	 * Update the labels for edges according to their depths.	 * For each edge, the depths are first normalized.	 * Then, if the depths for the edge are equal,	 * this edge must have collapsed into a line edge.	 * If the depths are not equal, update the label	 * with the locations corresponding to the depths	 * (i.e. a depth of 0 corresponds to a Location of EXTERIOR,	 * a depth of 1 corresponds to INTERIOR)	 */	void computeLabelsFromDepths();	/*	 * If edges which have undergone dimensional collapse are found,	 * replace them with a new edge which is a L edge	 */	void replaceCollapsedEdges();	/*	 * Copy all nodes from an arg geometry into this graph.	 * The node label in the arg geometry overrides any previously	 * computed label for that argIndex.	 * (E.g. a node may be an intersection node with	 * a previously computed label of BOUNDARY,	 * but in the original arg Geometry it is actually	 * in the interior due to the Boundary Determination Rule)	 */	void copyPoints(int argIndex);	/*	 * Compute initial labelling for all DirectedEdges at each node.	 * In this step, DirectedEdges will acquire a complete labelling	 * (i.e. one with labels for both Geometries)	 * only if they	 * are incident on a node which has edges for both Geometries	 */	void computeLabelling(); // throw(TopologyException *);	/*	 * For nodes which have edges from only one Geometry incident on them,	 * the previous step will have left their dirEdges with no	 * labelling for the other Geometry. 	 * However, the sym dirEdge may have a labelling for the other	 * Geometry, so merge the two labels.	 */	void mergeSymLabels();	void updateNodeLabelling();	/*	 * Incomplete nodes are nodes whose labels are incomplete.	 * (e.g. the location for one Geometry is NULL).	 * These are either isolated nodes,	 * or nodes which have edges from only a single Geometry incident	 * on them.	 *	 * Isolated nodes are found because nodes in one graph which	 * don't intersect nodes in the other are not completely	 * labelled by the initial process of adding nodes to the nodeList.	 * To complete the labelling we need to check for nodes that	 * lie in the interior of edges, and in the interior of areas.	 * 	 * When each node labelling is completed, the labelling of the	 * incident edges is updated, to complete their labelling as well.	 */	void labelIncompleteNodes();	/*	 * Label an isolated node with its relationship to the target geometry.	 */	void labelIncompleteNode(Node *n,int targetIndex);	/*	 * Find all edges whose label indicates that they are in the result	 * area(s), according to the operation being performed. 	 * Since we want polygon shells to be	 * oriented CW, choose dirEdges with the interior of the result	 * on the RHS.	 * Mark them as being in the result.	 * Interior Area edges are the result of dimensional collapses.	 * They do not form part of the result area boundary.	 */	void findResultAreaEdges(int opCode);	/*	 * If both a dirEdge and its sym are marked as being in the result,	 * cancel them out.	 */	void cancelDuplicateResultEdges();	bool isCovered(const Coordinate& coord,vector<Geometry*> *geomList);	bool isCovered(const Coordinate& coord,vector<Polygon*> *geomList);	bool isCovered(const Coordinate& coord,vector<LineString*> *geomList);	/*	 * Build a Geometry containing all Geometries in the given vectors.	 * Takes element's ownership, vector control is left to caller. 	 */	Geometry* computeGeometry(vector<Point*> *nResultPointList,                              vector<LineString*> *nResultLineList,                              vector<Polygon*> *nResultPolyList);	/* Caches for memory management */	vector<Edge *>dupEdges;	/*	 * Merge Z values of node with those of the segment or vertex in	 * the given Polygon it is on.	 */	int OverlayOp::mergeZ(Node *n, const Polygon *poly) const;	/*	 * Merge Z values of node with those of the segment or vertex in	 * the given LineString it is on.	 * @returns 1 if an intersection is found, 0 otherwise.	 */	int OverlayOp::mergeZ(Node *n, const LineString *line) const;	/*	 * Average Z of input geometries	 */	double avgz[2];	bool avgzcomputed[2];	double getAverageZ(int targetIndex);	static double getAverageZ(const Polygon *poly);	ElevationMatrix *elevationMatrix;};/* * A ring of {@link Edge}s with the property that no node * has degree greater than 2.  These are the form of rings required * to represent polygons under the OGC SFS spatial data model. * * @see com.vividsolutions.jts.operation.overlay.MaximalEdgeRing */class MinimalEdgeRing: public EdgeRing {public:	MinimalEdgeRing(DirectedEdge *start, const GeometryFactory *geometryFactory,CGAlgorithms *cga);	virtual ~MinimalEdgeRing();	DirectedEdge* getNext(DirectedEdge *de);	void setEdgeRing(DirectedEdge *de,EdgeRing *er);};/* * A ring of {@link edges} which may contain nodes of degree > 2.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美亚洲国产精品字幕久久久 | 日本一区二区成人| 美女诱惑一区二区| 欧美日韩一级黄| 国产不卡一区视频| 日韩午夜激情电影| 日本久久电影网| 成人激情av网| 欧美色图一区二区三区| 久久综合给合久久狠狠狠97色69| 国产精品国产三级国产普通话三级| 91蜜桃婷婷狠狠久久综合9色| 午夜精品123| 午夜精品免费在线| 日av在线不卡| 极品少妇xxxx偷拍精品少妇| 婷婷亚洲久悠悠色悠在线播放| 亚洲高清久久久| 久久精品一二三| 91丨九色丨蝌蚪丨老版| 东方aⅴ免费观看久久av| 国产精品夫妻自拍| 中文天堂在线一区| 日韩一区二区三区视频| 91亚洲精品乱码久久久久久蜜桃 | 亚洲与欧洲av电影| 欧洲精品一区二区三区在线观看| 国产真实乱对白精彩久久| 欧美aaaaaa午夜精品| 中文字幕一区二区三区不卡在线| 岛国精品在线观看| 国产欧美精品国产国产专区| 97精品超碰一区二区三区| 欧美日韩在线观看一区二区| 亚洲成人一区二区在线观看| 亚洲国产欧美一区二区三区丁香婷| 综合欧美亚洲日本| 麻豆精品国产传媒mv男同| 精品国产制服丝袜高跟| 亚洲欧洲精品天堂一级| 国产一区二区三区不卡在线观看 | 国产在线日韩欧美| 亚洲高清一区二区三区| 亚洲精品成a人| 一区二区三区在线观看动漫 | 青青草视频一区| 日韩电影在线观看电影| 成人免费视频播放| 综合久久久久久久| 日本二三区不卡| 丁香网亚洲国际| 成人黄色a**站在线观看| 在线观看三级视频欧美| 69成人精品免费视频| 亚洲人被黑人高潮完整版| 久久国产生活片100| 亚洲激情av在线| 日韩免费观看2025年上映的电影| 三级久久三级久久久| 国内精品不卡在线| 色综合一区二区| 国产精品伦理在线| 日本少妇一区二区| 2023国产精品自拍| 99久久伊人精品| 亚洲人吸女人奶水| 在线电影一区二区三区| 亚洲视频在线一区| 色综合久久88色综合天天免费| 欧美日韩成人一区二区| 国产精品久99| 91猫先生在线| **欧美大码日韩| 91丨porny丨蝌蚪视频| 久久这里只有精品视频网| 一区二区三区在线观看动漫| 免费在线看一区| 在线成人av网站| 色婷婷av一区| 欧美一区二区三区四区久久| 日本一区二区免费在线观看视频| 麻豆成人av在线| 国产欧美日韩在线视频| 日韩片之四级片| 99精品热视频| 国产成人综合视频| 精品一区二区精品| 另类成人小视频在线| 日韩中文字幕麻豆| 亚洲一区二区在线免费看| 欧美日韩不卡在线| 蜜臀a∨国产成人精品| 精品乱码亚洲一区二区不卡| 国产乱码精品一区二区三区av| 一色桃子久久精品亚洲| 91丝袜美女网| 欧美丰满一区二区免费视频 | 91免费看`日韩一区二区| 麻豆91精品91久久久的内涵| 亚洲一区免费在线观看| 成人免费在线播放视频| 国产清纯在线一区二区www| 日韩网站在线看片你懂的| 国产综合久久久久久鬼色| 免费观看一级特黄欧美大片| 美女一区二区久久| 国产精品成人免费在线| 国产成a人亚洲| 偷拍一区二区三区| 亚洲精品ww久久久久久p站| 国产三级欧美三级| 综合分类小说区另类春色亚洲小说欧美| 精品国产制服丝袜高跟| 亚洲三级视频在线观看| 视频在线观看一区二区三区| 另类小说一区二区三区| bt欧美亚洲午夜电影天堂| 91亚洲资源网| 国产一区二区福利| 国内精品国产成人| 国产精品羞羞答答xxdd| 美日韩一级片在线观看| 国产一区二区免费看| 日韩黄色小视频| 一区二区激情小说| 日本一区二区三区视频视频| 欧美国产一区视频在线观看| 欧美激情一区三区| 日韩一区在线看| 一区二区三区在线观看动漫| 午夜日韩在线电影| 日本伊人午夜精品| 精品一区二区三区免费视频| 国产一区二区免费看| 成人永久免费视频| av电影天堂一区二区在线观看| 91免费国产视频网站| 欧美在线观看一二区| 欧美一区二区三区在线电影| 久久综合色一综合色88| 国产精品国模大尺度视频| 亚洲精品福利视频网站| 免费久久精品视频| 成人小视频免费观看| 欧美日韩在线一区二区| 精品sm捆绑视频| 国产精品天天看| 午夜精品一区在线观看| 国产乱一区二区| 91激情五月电影| 久久网站热最新地址| 一区二区三区四区精品在线视频| 男女性色大片免费观看一区二区 | www.色精品| 成人黄色小视频| 日日摸夜夜添夜夜添精品视频| 欧美在线视频不卡| 制服丝袜亚洲色图| 日韩欧美综合一区| 日韩激情av在线| 欧美一区二区三区视频在线观看 | 精品国产乱码久久久久久闺蜜| 日韩电影免费一区| 国产亚洲短视频| 91在线精品一区二区| 久久精品国内一区二区三区| 一区二区三区在线免费| 91超碰这里只有精品国产| 自拍偷自拍亚洲精品播放| 国产综合久久久久久鬼色| 久久久久久**毛片大全| 日韩国产一二三区| 欧美一级免费观看| 国产精品18久久久久| 日韩免费在线观看| 波多野结衣中文字幕一区二区三区 | 国产一区二区三区免费在线观看| 色噜噜狠狠成人中文综合| 国产色产综合产在线视频| 日本aⅴ精品一区二区三区| 色婷婷综合久久久中文一区二区| 精品va天堂亚洲国产| 日韩福利视频导航| 日本韩国精品一区二区在线观看| 久久久久久久久久久久久久久99| 日韩1区2区3区| 欧美三级一区二区| 亚洲欧美视频一区| av一区二区三区| 国产欧美一区二区精品仙草咪 | 亚洲欧美国产77777| 国产a久久麻豆| 亚洲精品在线免费播放| 麻豆精品一二三| 日韩欧美国产综合一区 | 亚洲欧洲制服丝袜| 成人黄色大片在线观看| 亚洲国产精品黑人久久久 | 日韩精品高清不卡| 欧美日韩一级片在线观看|