X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Ftrunk%2Fsrc%2Fsynfig%2Fvaluenode_bline.cpp;h=dde8a459afbd2b57203ac696fcd7b6718e3aeaef;hb=463ee5de2f498c86ffa7ad30f851729da621c908;hp=49e9cb5d51893a1de4a1054379ccd83535d6d54c;hpb=80031a8a28bb53f89ad750ec94a1b447b419d616;p=synfig.git diff --git a/synfig-core/trunk/src/synfig/valuenode_bline.cpp b/synfig-core/trunk/src/synfig/valuenode_bline.cpp index 49e9cb5..dde8a45 100644 --- a/synfig-core/trunk/src/synfig/valuenode_bline.cpp +++ b/synfig-core/trunk/src/synfig/valuenode_bline.cpp @@ -79,7 +79,12 @@ radial_interpolation(const Vector& a, const Vector& b, float c) affine_combo ang_combo; Real mag(mag_combo(a.mag(),b.mag(),c)); - Angle ang(ang_combo(Angle::tan(a[1],a[0]),Angle::tan(b[1],b[0]),c)); + Angle angle_a(Angle::tan(a[1],a[0])); + Angle angle_b(Angle::tan(b[1],b[0])); + float diff = Angle::deg(angle_b - angle_a).get(); + if (diff < -180) angle_b += Angle::deg(360); + else if (diff > 180) angle_a += Angle::deg(360); + Angle ang(ang_combo(angle_a, angle_b, c)); return Point( mag*Angle::cos(ang).get(),mag*Angle::sin(ang).get() ); } @@ -257,7 +262,7 @@ synfig::find_closest_point(const ValueBase &bline, const Point &pos, Real &radiu { closest = d; best_time = time; - best_index = i; + best_index = 0; best_point = curve(best_time); } }