1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
|
/**********************************************************************
* $Id: SegmentNode.cpp,v 1.5 2004/11/01 16:43:04 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 Licence as published
* by the Free Software Foundation.
* See the COPYING file for more information.
*
**********************************************************************/
#include <geos/noding.h>
#include <stdio.h>
namespace geos {
SegmentNode::SegmentNode(Coordinate *newCoord, int nSegmentIndex, double newDist)
{
//coord=newCoord;
coord=new Coordinate(*newCoord);
segmentIndex=nSegmentIndex;
dist=newDist;
}
SegmentNode::~SegmentNode()
{
delete coord;
}
/**
* @return -1 this EdgeIntersection is located before the argument location
* @return 0 this EdgeIntersection is at the argument location
* @return 1 this EdgeIntersection is located after the argument location
*/
int
SegmentNode::compare(int cSegmentIndex, double cDist)
{
if (segmentIndex < cSegmentIndex) return -1;
if (segmentIndex > cSegmentIndex) return 1;
if (dist<cDist) return -1;
if (dist>cDist) return 1;
return 0;
}
bool
SegmentNode::isEndPoint(int maxSegmentIndex)
{
if (segmentIndex == 0 && dist == 0.0) return true;
if (segmentIndex == maxSegmentIndex) return true;
return false;
}
int
SegmentNode::compareTo(void* obj)
{
SegmentNode *other=(SegmentNode*) obj;
return compare(other->segmentIndex, other->dist);
}
string
SegmentNode::print()
{
char buffer[255];
string out=coord->toString();
sprintf(buffer," seg#=%i dist=%i",segmentIndex,dist);
out.append(buffer);
return out;
}
} // namespace geos
/**********************************************************************
* $Log: SegmentNode.cpp,v $
* Revision 1.5 2004/11/01 16:43:04 strk
* Added Profiler code.
* Temporarly patched a bug in DoubleBits (must check drawbacks).
* Various cleanups and speedups.
*
* Revision 1.4 2004/07/02 13:28:27 strk
* Fixed all #include lines to reflect headers layout change.
* Added client application build tips in README.
*
* Revision 1.3 2004/06/15 07:40:30 strk
* Added missing <stdio.h> include
*
* Revision 1.2 2004/05/03 12:09:22 strk
* newline added at end of file
*
* Revision 1.1 2004/03/26 07:48:30 ybychkov
* "noding" package ported (JTS 1.4)
*
*
**********************************************************************/
|