3
// Copyright (C) 2004 Navel Ltd.
5
// This library is free software; you can redistribute it and/or
6
// modify it under the terms of the GNU Lesser General Public
7
// License as published by the Free Software Foundation; either
8
// version 2.1 of the License, or (at your option) any later version.
10
// This library is distributed in the hope that it will be useful,
11
// but WITHOUT ANY WARRANTY; without even the implied warranty of
12
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
// Lesser General Public License for more details.
15
// You should have received a copy of the GNU Lesser General Public
16
// License along with this library; if not, write to the Free Software
17
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22
#ifndef __tools_geometry_point_h
23
#define __tools_geometry_point_h
29
class Point : public IObject, public virtual IShape
33
Point( const double* pCoords, unsigned long dimension );
34
Point( const Point& p );
37
virtual Point& operator=( const Point& p );
38
virtual bool operator==( const Point& p ) const;
43
virtual Point* clone();
46
// ISerializable interface
48
virtual unsigned long getByteArraySize();
49
virtual void loadFromByteArray( const byte* data );
50
virtual void storeToByteArray( byte** data, unsigned long& length );
55
virtual bool intersectsShape( const IShape& in ) const;
56
virtual bool containsShape( const IShape& in ) const;
57
virtual bool touchesShape( const IShape& in ) const;
58
virtual void getCenter( Point& out ) const;
59
virtual unsigned long getDimension() const;
60
virtual void getMBR( Region& out ) const;
61
virtual double getArea() const;
62
virtual double getMinimumDistance( const IShape& in ) const;
64
virtual double getMinimumDistance( const Point& p ) const;
66
virtual double getCoordinate( unsigned long index ) const;
68
virtual void makeInfinite( unsigned long dimension );
69
virtual void makeDimension( unsigned long dimension );
72
unsigned long m_dimension;
76
friend std::ostream& operator<<( std::ostream& os, const Point& pt );
79
std::ostream& operator<<( std::ostream& os, const Point& pt );
83
#endif /*__tools_geometry_point_h*/