GRALE
pointsort.h
1 /*
2 
3  This file is a part of GRALE, a library to facilitate the simulation
4  and inversion of gravitational lenses.
5 
6  Copyright (C) 2008-2012 Jori Liesenborgs
7 
8  Contact: jori.liesenborgs@gmail.com
9 
10  This program is free software; you can redistribute it and/or modify
11  it under the terms of the GNU General Public License as published by
12  the Free Software Foundation; either version 2 of the License, or
13  (at your option) any later version.
14 
15  This program is distributed in the hope that it will be useful,
16  but WITHOUT ANY WARRANTY; without even the implied warranty of
17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  GNU General Public License for more details.
19 
20  You should have received a copy of the GNU General Public License
21  along with this program; if not, write to the Free Software
22  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
23 
24 */
25 
26 #ifndef GRALE_POINTSORT_H
27 
28 #define GRALE_POINTSORT_H
29 
30 #include "graleconfig.h"
31 #include "vector2d.h"
32 
33 namespace grale
34 {
35 
36 template<class T>
37 class PointSort
38 {
39 public:
40  PointSort() { m_x = 0; m_y = 0; }
41  PointSort(Vector2D<T> p) { m_x = p.getX(); m_y = p.getY(); }
42  void calculateScore(Vector2D<T> refpoint) { T a = m_x - refpoint.getX(); T b = m_y - refpoint.getY(); T s2 = a*a + b*b; m_score = a*ABS(a)/s2; }
43  double getScore() const { return m_score; }
44  Vector2D<T> getVector2D() const { return Vector2D<T>(m_x, m_y); }
45 private:
46  T m_x, m_y;
47  T m_score;
48 };
49 
50 template<class T>
51 inline bool operator< (const PointSort<T> &p1, const PointSort<T> &p2) // for the sorting algorithm
52 {
53  return (p1.getScore() > p2.getScore());
54 }
55 
56 } // end namespace
57 
58 #endif // GRALE_POINTSORT_H