X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibmarklin%2Fprofile.cpp;h=7b9dce52073075de8cb9473ae1fa3dda35ceedde;hb=e5cd9e4fbc577036a0385c985b6b65df8218d0a2;hp=f4dcf188d03b1f58d7ff7c56f153f12217446d94;hpb=7e382cc3cad8c4f6945b0c9d89e2ca917b42b740;p=r2c2.git diff --git a/source/libmarklin/profile.cpp b/source/libmarklin/profile.cpp index f4dcf18..7b9dce5 100644 --- a/source/libmarklin/profile.cpp +++ b/source/libmarklin/profile.cpp @@ -13,6 +13,23 @@ using namespace Msp; namespace Marklin { +void Profile::append_point(const Point &p) +{ + points.push_back(p); + if(points.size()==1) + { + min_coords = p; + max_coords = p; + } + else + { + min_coords.x = min(min_coords.x, p.x); + min_coords.y = min(min_coords.y, p.y); + max_coords.x = max(max_coords.x, p.x); + max_coords.y = max(max_coords.y, p.y); + } +} + const Point &Profile::get_point(unsigned i) const { if(i>=points.size()) @@ -27,7 +44,7 @@ Point Profile::get_edge_normal(unsigned i) const float dx = points[i+1].x-points[i].x; float dy = points[i+1].y-points[i].y; float len = sqrt(dx*dx+dy*dy); - return Point(-dx/len, dy/len); + return Point(dy/len, -dx/len); } @@ -37,22 +54,9 @@ Profile::Loader::Loader(Profile &p): add("point", &Loader::point); } -void Profile::Loader::finish() -{ - obj.min_coords = obj.points[0]; - obj.max_coords = obj.points[0]; - for(unsigned i=1; i