All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
ClippedRouteSection.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "Routes.h"
6 #include "MortonKey.h"
7 #include <vector>
8 
9 namespace Eegeo
10 {
11  namespace Routes
12  {
13  namespace Clipping
14  {
16  {
17  private:
18  int m_startIndex;
19  double m_t;
20 
21  public:
23  : m_startIndex(-1)
24  , m_t(-1.0)
25  {
26  }
27 
29  : m_startIndex(src.m_startIndex)
30  , m_t(src.m_t)
31  {
32  }
33 
34  ClippedRouteVertex(int startIndex, double t)
35  : m_startIndex(startIndex)
36  , m_t(t)
37  { }
38 
39 
40  bool operator==(const ClippedRouteVertex& other) const
41  {
42  return m_startIndex == other.m_startIndex &&
43  m_t == other.m_t;
44  }
45 
46  int StartIndex() const { return m_startIndex; }
47  int EndIndex() const { return m_startIndex + 1; }
48  double ClipParam() const { return m_t; }
49 
50 
51  Eegeo::Routes::RouteVertex GetInterpolatedRouteVertex(const std::vector<RouteVertex>& routeVertices) const;
52  double GetInterpolatedRouteParam(const std::vector<RouteVertex>& routeVertices) const;
53 
54  bool CanMergeWith(const ClippedRouteVertex& b) const
55  {
56  return (EndIndex() == b.StartIndex() &&
57  m_t == 1.0 &&
58  b.m_t == 0.0);
59 
60  }
61  };
62 
64  {
67 
68  ClippedRouteVertex Start;
71  };
72  }
73  }
74 }