X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibr2c2%2Fprofile.cpp;h=907da8adf791fb12a068dc3a318e13dde108429b;hb=b78b49d85fbb9b2901c77e6450cfd41c0a818ac1;hp=2741cac2958c3a848ba39b48aa7ba304b72289da;hpb=d15ac13f2e170f155b4bbd124df48400c339b644;p=r2c2.git diff --git a/source/libr2c2/profile.cpp b/source/libr2c2/profile.cpp index 2741cac..907da8a 100644 --- a/source/libr2c2/profile.cpp +++ b/source/libr2c2/profile.cpp @@ -17,20 +17,16 @@ void Profile::append_vertex(const Vector &p, bool smooth) if(!vertices.empty()) { - float dx = p.x-vertices.back().pos.x; - float dy = p.y-vertices.back().pos.y; - float len = sqrt(dx*dx+dy*dy); - v.normal.x = dy/len; - v.normal.y = -dx/len; + Vector span = p-vertices.back().pos; + span.normalize(); + v.normal.x = span.y; + v.normal.y = -span.x; if(vertices.back().smooth) { Vector &n = vertices.back().normal; - n.x += v.normal.x; - n.y += v.normal.y; - len = sqrt(n.x*n.x+n.y*n.y); - n.x /= len; - n.y /= len; + n += v.normal; + n.normalize(); } else vertices.back().normal = v.normal; @@ -55,7 +51,7 @@ void Profile::append_vertex(const Vector &p, bool smooth) const Profile::Vertex &Profile::get_vertex(unsigned i) const { if(i>=vertices.size()) - throw InvalidParameterValue("Index out of range"); + throw out_of_range("Profile::get_vertex"); return vertices[i]; } @@ -69,12 +65,12 @@ Profile::Loader::Loader(Profile &p): void Profile::Loader::point(float x, float y) { - obj.append_vertex(Vector(x/1000, y/1000), false); + obj.append_vertex(Vector(x/1000, y/1000, 0), false); } void Profile::Loader::smooth_point(float x, float y) { - obj.append_vertex(Vector(x/1000, y/1000), true); + obj.append_vertex(Vector(x/1000, y/1000, 0), true); } } // namespace R2C2