1 // line_funcs.h (Line<> implementation)
2 //
3 //  The WorldForge Project
4 //  Copyright (C) 2012  The WorldForge Project
5 //
6 //  This program is free software; you can redistribute it and/or modify
7 //  it under the terms of the GNU General Public License as published by
8 //  the Free Software Foundation; either version 2 of the License, or
9 //  (at your option) any later version.
10 //
11 //  This program is distributed in the hope that it will be useful,
12 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 //  GNU General Public License for more details.
15 //
16 //  You should have received a copy of the GNU General Public License
17 //  along with this program; if not, write to the Free Software
18 //  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19 //
20 //  For information about WorldForge and its authors, please contact
21 //  the Worldforge Web Site at http://www.worldforge.org.
22 //
23 
24 // Author: Al Riddoch
25 
26 #ifndef WFMATH_LINE_FUNCS_H
27 #define WFMATH_LINE_FUNCS_H
28 
29 #include <wfmath/line.h>
30 
31 namespace WFMath {
32 
33 template<int dim>
isEqualTo(const Line<dim> & l,CoordType epsilon)34 inline bool Line<dim>::isEqualTo(const Line<dim> & l, CoordType epsilon) const
35 {
36   size_type size = m_points.size();
37   if (size != l.m_points.size()) {
38     return false;
39   }
40 
41   for (size_type i = 0; i < size; ++i) {
42     if (!Equal(m_points[i], l.m_points[i], epsilon)) {
43       return false;
44     }
45   }
46 
47   return true;
48 }
49 
50 template<int dim>
shift(const Vector<dim> & v)51 inline Line<dim>& Line<dim>::shift(const Vector<dim>& v)
52 {
53   for (iterator i = m_points.begin(); i != m_points.end(); ++i) {
54     *i += v;
55   }
56 
57   return *this;
58 }
59 
60 template<int dim>
rotatePoint(const RotMatrix<dim> & m,const Point<dim> & p)61 inline Line<dim>& Line<dim>::rotatePoint(const RotMatrix<dim>& m,
62                                          const Point<dim>& p)
63 {
64   for (iterator i = m_points.begin(); i != m_points.end(); ++i) {
65     i->rotate(m, p);
66   }
67 
68   return *this;
69 }
70 
71 } // namespace WFMath
72 
73 #endif  // WFMATH_LINE_FUNCS_H
74