Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorExMix <rahuba.youri@mapswithme.com>2015-06-25 22:04:16 +0300
committerr.kuznetsov <r.kuznetsov@corp.mail.ru>2015-11-30 16:09:26 +0300
commit796636938fa15eca7ae691533fb382b42f5adbcd (patch)
tree6281153cfd24c961442232b98a183ccab8927468 /geometry/spline.cpp
parentb2fac0a1faa0755c1dd7c663f4add7607efdd85c (diff)
[drape] line simplification.
Diffstat (limited to 'geometry/spline.cpp')
-rw-r--r--geometry/spline.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/geometry/spline.cpp b/geometry/spline.cpp
index 418bea301e..ed4617b381 100644
--- a/geometry/spline.cpp
+++ b/geometry/spline.cpp
@@ -44,6 +44,38 @@ void Spline::AddPoint(PointD const & pt)
}
}
+void Spline::ReplacePoint(PointD const & pt)
+{
+ ASSERT(m_position.size() > 1, ());
+ ASSERT(!m_length.empty(), ());
+ ASSERT(!m_direction.empty(), ());
+ m_position.pop_back();
+ m_length.pop_back();
+ m_direction.pop_back();
+ AddPoint(pt);
+}
+
+bool Spline::IsPrelonging(PointD const & pt)
+{
+ if (m_position.size() < 2)
+ return false;
+
+ PointD dir = pt - m_position.back();
+ if (dir.IsAlmostZero())
+ return true;
+
+ dir = dir.Normalize();
+ PointD prevDir = m_direction.back().Normalize();
+
+ double const MAX_ANGLE_THRESHOLD = 0.98;
+ return fabs(DotProduct(prevDir, dir)) > MAX_ANGLE_THRESHOLD;
+}
+
+size_t Spline::GetSize() const
+{
+ return m_position.size();
+}
+
bool Spline::IsEmpty() const
{
return m_position.empty();