Complete Note#1 in the http://wiki.osgeo.org/wiki/GEOS_Provenance_Review to get out...
[geos.git] / include / geos / noding / Octant.h
blob16e7a2407b10828d3cb08cb0a2b55c316dc71ce1
1 /**********************************************************************
3 * GEOS - Geometry Engine Open Source
4 * http://geos.osgeo.org
6 * Copyright (C) 2006 Refractions Research Inc.
8 * This is free software; you can redistribute and/or modify it under
9 * the terms of the GNU Lesser General Public Licence as published
10 * by the Free Software Foundation.
11 * See the COPYING file for more information.
13 **********************************************************************/
15 #ifndef GEOS_NODING_OCTANT_H
16 #define GEOS_NODING_OCTANT_H
18 #include <geos/export.h>
20 #include <geos/inline.h>
21 #include <geos/util.h>
23 // Forward declarations
24 namespace geos {
25 namespace geom {
26 class Coordinate;
30 namespace geos {
31 namespace noding { // geos.noding
33 /** \brief
34 * Methods for computing and working with octants of the Cartesian plane.
36 * Octants are numbered as follows:
38 * 2|1
39 * 3 | 0
40 * ---+--
41 * 4 | 7
42 * 5|6
44 * If line segments lie along a coordinate axis, the octant is the lower of the two
45 * possible values.
47 * Last port: noding/Octant.java rev. 1.2 (JTS-1.7)
49 class GEOS_DLL Octant {
50 private:
51 Octant() {} // Can't instanciate it
52 public:
54 /**
55 * Returns the octant of a directed line segment (specified
56 * as x and y displacements, which cannot both be 0).
58 static int octant(double dx, double dy);
60 /**
61 * Returns the octant of a directed line segment from p0 to p1.
63 static int octant(const geom::Coordinate& p0, const geom::Coordinate& p1);
65 static int octant(const geom::Coordinate* p0, const geom::Coordinate* p1)
67 ::geos::ignore_unused_variable_warning(p0);
68 return octant(*p0, *p1);
73 } // namespace geos.noding
74 } // namespace geos
76 //#ifdef GEOS_INLINE
77 //# include "geos/noding/Octant.inl"
78 //#endif
80 #endif
82 /**********************************************************************
83 * $Log$
84 * Revision 1.2 2006/03/24 09:52:41 strk
85 * USE_INLINE => GEOS_INLINE
87 * Revision 1.1 2006/03/09 16:46:49 strk
88 * geos::geom namespace definition, first pass at headers split
90 **********************************************************************/