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_linesegment_h
23
#define __tools_geometry_linesegment_h
29
class LineSegment : public IObject, public virtual IShape
33
LineSegment( const double* startPoint, const double* endPoint, unsigned long dimension );
34
LineSegment( const Point& startPoint, const Point& endPoint );
35
LineSegment( const LineSegment& l );
36
virtual ~LineSegment();
38
virtual LineSegment& operator=( const LineSegment& p );
39
virtual bool operator==( const LineSegment& p ) const;
44
virtual LineSegment* clone();
47
// ISerializable interface
49
virtual unsigned long getByteArraySize();
50
virtual void loadFromByteArray( const byte* data );
51
virtual void storeToByteArray( byte** data, unsigned long& length );
56
virtual bool intersectsShape( const IShape& in ) const;
57
virtual bool containsShape( const IShape& in ) const;
58
virtual bool touchesShape( const IShape& in ) const;
59
virtual void getCenter( Point& out ) const;
60
virtual unsigned long getDimension() const;
61
virtual void getMBR( Region& out ) const;
62
virtual double getArea() const;
63
virtual double getMinimumDistance( const IShape& in ) const;
65
virtual double getMinimumDistance( const Point& p ) const;
66
//virtual double getMinimumDistance(const Region& r) const;
67
virtual double getRelativeMinimumDistance( const Point& p ) const;
68
virtual double getRelativeMaximumDistance( const Region& r ) const;
69
virtual double getAngleOfPerpendicularRay();
71
virtual void makeInfinite( unsigned long dimension );
72
virtual void makeDimension( unsigned long dimension );
75
unsigned long m_dimension;
76
double* m_pStartPoint;
81
friend std::ostream& operator<<( std::ostream& os, const LineSegment& pt );
84
std::ostream& operator<<( std::ostream& os, const LineSegment& pt );
88
#endif /*__tools_geometry_linesegment_h*/