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

📄 point.cpp

📁 一个很好的vc底层代码
💻 CPP
字号:
/********************************************************************** * $Id: Point.cpp,v 1.31.2.1 2005/05/23 16:02:33 strk Exp $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net * * Copyright (C) 2001-2002 Vivid Solutions Inc. * Copyright (C) 2005 Refractions Research 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. * **********************************************************************/#include <geos/geom.h>#include <geos/util.h>namespace geos {/*** Creates a Point using the given CoordinateSequence (must have 1 element)** @param  newCoords*	contains the single coordinate on which to base this*	<code>Point</code> or <code>null</code> to create*	the empty geometry.**	If not null the created Point will take ownership of newCoords.*/  Point::Point(CoordinateSequence *newCoords, const GeometryFactory *factory): Geometry(factory) {	if (newCoords==NULL) {		coordinates=factory->getCoordinateSequenceFactory()->create(NULL);		return;	}        	if (newCoords->getSize() != 1)	{		throw new IllegalArgumentException("Point coordinate list must contain a single element");	}	coordinates=newCoords;}Point::Point(const Point &p): Geometry(p.getFactory()) {	coordinates=p.coordinates->clone();}Geometry* Point::clone() const {	return new Point(*this);}CoordinateSequence* Point::getCoordinates() const {	return coordinates->clone();}int Point::getNumPoints() const {	return isEmpty() ? 0 : 1;}bool Point::isEmpty() const {	//return (*getCoordinate())==Coordinate::getNull();	return coordinates->isEmpty();}bool Point::isSimple() const {return true;}//bool Point::isValid() const {return true;}int Point::getDimension() const {return 0;}int Point::getBoundaryDimension() const {return Dimension::False;}double Point::getX() const {	if (isEmpty()) {		throw new UnsupportedOperationException("getX called on empty Point\n");	}	return getCoordinate()->x;}double Point::getY() const {	if (isEmpty()) {		throw new UnsupportedOperationException("getY called on empty Point\n");	}	return getCoordinate()->y;}const Coordinate* Point::getCoordinate() const {	return coordinates->getSize()!=0 ? &(coordinates->getAt(0)) : NULL;}string Point::getGeometryType() const {	return "Point";}Geometry* Point::getBoundary() const {	return getFactory()->createGeometryCollection(NULL);}Envelope* Point::computeEnvelopeInternal() const {	if (isEmpty())
	{		return new Envelope();	}	return new Envelope(getCoordinate()->x, getCoordinate()->x, getCoordinate()->y, getCoordinate()->y);}void Point::apply_ro(CoordinateFilter *filter) const{	if (isEmpty()) {
		return;
	}	filter->filter_ro(getCoordinate());}void Point::apply_rw(CoordinateFilter *filter){	if (isEmpty()) {
		return;
	}	Coordinate newcoord = coordinates->getAt(0);	filter->filter_rw(&newcoord);	coordinates->setAt(newcoord, 0);}void Point::apply_rw(GeometryFilter *filter) {	filter->filter_rw(this);}void Point::apply_ro(GeometryFilter *filter) const {	filter->filter_ro(this);}void Point::apply_rw(GeometryComponentFilter *filter) {	filter->filter_rw(this);}void Point::apply_ro(GeometryComponentFilter *filter) const {	filter->filter_ro(this);}bool Point::equalsExact(const Geometry *other, double tolerance) const{	if (!isEquivalentClass(other)) {		return false;	}	if (isEmpty() && other->isEmpty()) {		return true;	}    return equal(*((Point*) other)->getCoordinate(), *getCoordinate(), tolerance);}int Point::compareToSameClass(const Geometry *point) const {	return getCoordinate()->compareTo(*(((Point*)point)->getCoordinate()));}Point::~Point(){	delete coordinates;}GeometryTypeIdPoint::getGeometryTypeId() const {	return GEOS_POINT;}} // namespace geos/********************************************************************** * $Log: Point.cpp,v $ * Revision 1.31.2.1  2005/05/23 16:02:33  strk * Backported segfault fix in isEmpty * * Revision 1.31  2004/11/23 16:22:49  strk * Added ElevationMatrix class and components to do post-processing draping of overlayed geometries. * * Revision 1.30  2004/09/13 12:39:14  strk * Made Point and MultiPoint subject to Validity tests. * * Revision 1.29  2004/07/08 19:34:49  strk * Mirrored JTS interface of CoordinateSequence, factory and * default implementations. * Added DefaultCoordinateSequenceFactory::instance() function. * **********************************************************************/

⌨️ 快捷键说明

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