GEOS 3.14.0dev
TriEdge.h
1/**********************************************************************
2 *
3 * GEOS - Geometry Engine Open Source
4 * http://geos.osgeo.org
5 *
6 * Copyright (C) 2020 Paul Ramsey <pramsey@cleverelephant.ca>
7 *
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.
12 *
13 **********************************************************************/
14
15#pragma once
16
17#include <geos/export.h>
18#include <geos/geom/Coordinate.h>
19#include <iostream>
20
21namespace geos { // geos.
22namespace triangulate { // geos.triangulate
23namespace tri { // geos.triangulate.tri
24
25
35class GEOS_DLL TriEdge {
37
38private:
39
40 void normalize();
41
42
43public:
44
45 // Members
46 Coordinate p0;
47 Coordinate p1;
48
49 TriEdge(const Coordinate& a, const Coordinate& b)
50 : p0(a)
51 , p1(b)
52 {
53 normalize();
54 }
55
56 struct GEOS_DLL HashCode {
57 std::size_t operator()(const TriEdge& te) const;
58 };
59
60 friend bool operator == (const TriEdge& te0, const TriEdge& te1);
61
62 friend std::ostream& operator << (std::ostream& os, const TriEdge& te);
63
64};
65
66
67
68
69} // namespace geos.triangulate.tri
70} // namespace geos.triangulate
71} // namespace geos
72
Coordinate is the lightweight class used to store coordinates.
Definition Coordinate.h:217
Definition TriEdge.h:35
Basic namespace for all GEOS functionalities.
Definition geos.h:39