Rev 15347 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
15347 | fschmid | 1 | /* |
2 | * coord.h |
||
12065 | fschmid | 3 | * |
4 | * Copyright 2006 Nathan Hurst <njh@mail.csse.monash.edu.au> |
||
5 | * |
||
6 | * This library is free software; you can redistribute it and/or |
||
7 | * modify it either under the terms of the GNU Lesser General Public |
||
8 | * License version 2.1 as published by the Free Software Foundation |
||
9 | * (the "LGPL") or, at your option, under the terms of the Mozilla |
||
10 | * Public License Version 1.1 (the "MPL"). If you do not alter this |
||
11 | * notice, a recipient may use your version of this file under either |
||
12 | * the MPL or the LGPL. |
||
13 | * |
||
14 | * You should have received a copy of the LGPL along with this library |
||
15 | * in the file COPYING-LGPL-2.1; if not, write to the Free Software |
||
18122 | mrdocs | 16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
12065 | fschmid | 17 | * You should have received a copy of the MPL along with this library |
18 | * in the file COPYING-MPL-1.1 |
||
19 | * |
||
20 | * The contents of this file are subject to the Mozilla Public License |
||
21 | * Version 1.1 (the "License"); you may not use this file except in |
||
22 | * compliance with the License. You may obtain a copy of the License at |
||
23 | * http://www.mozilla.org/MPL/ |
||
24 | * |
||
25 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY |
||
26 | * OF ANY KIND, either express or implied. See the LGPL or the MPL for |
||
27 | * the specific language governing rights and limitations. |
||
28 | * |
||
29 | */ |
||
30 | |||
31 | #ifndef SEEN_Geom_COORD_H |
||
32 | #define SEEN_Geom_COORD_H |
||
33 | |||
34 | #include <cmath> |
||
35 | |||
36 | namespace Geom { |
||
37 | |||
38 | /** |
||
39 | * A "real" type with sufficient precision for coordinates. |
||
40 | * |
||
41 | * You may safely assume that double (or even float) provides enough precision for storing |
||
42 | * on-canvas points, and hence that double provides enough precision for dot products of |
||
43 | * differences of on-canvas points. |
||
44 | */ |
||
45 | typedef double Coord; |
||
46 | |||
47 | const Coord EPSILON = 1e-5; //1e-18; |
||
48 | |||
49 | //IMPL: NearConcept |
||
15347 | fschmid | 50 | inline bool are_near(Coord a, Coord b, double eps=EPSILON) { return fabs(a-b) <= eps; } |
12065 | fschmid | 51 | |
52 | } /* namespace Geom */ |
||
53 | |||
54 | |||
55 | #endif /* !SEEN_Geom_COORD_H */ |
||
56 | |||
57 | /* |
||
58 | Local Variables: |
||
59 | mode:c++ |
||
60 | c-file-style:"stroustrup" |
||
61 | c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) |
||
62 | indent-tabs-mode:nil |
||
63 | fill-column:99 |
||
64 | End: |
||
65 | */ |
||
66 | // vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 : |