diff options
| author | Johan B. C. Engelen <jbc.engelen@swissonline.ch> | 2012-04-10 17:56:29 +0000 |
|---|---|---|
| committer | Johan B. C. Engelen <j.b.c.engelen@alumnus.utwente.nl> | 2012-04-10 17:56:29 +0000 |
| commit | 20604a9037ad7c995977b20f9e5f16b4fe10125a (patch) | |
| tree | f516a7cc1cd0f37a83d7993cc06571e7aabaae8d /src | |
| parent | powerstroke: remove the need to reload the node tool when adding/deleting con... (diff) | |
| download | inkscape-20604a9037ad7c995977b20f9e5f16b4fe10125a.tar.gz inkscape-20604a9037ad7c995977b20f9e5f16b4fe10125a.zip | |
fix potential issue with tangent calculation
(bzr r11211)
Diffstat (limited to 'src')
| -rw-r--r-- | src/live_effects/lpe-powerstroke.cpp | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/live_effects/lpe-powerstroke.cpp b/src/live_effects/lpe-powerstroke.cpp index 878811275..79997ff94 100644 --- a/src/live_effects/lpe-powerstroke.cpp +++ b/src/live_effects/lpe-powerstroke.cpp @@ -239,7 +239,7 @@ std::vector<discontinuity_data> find_discontinuities( Geom::Piecewise<Geom::D2<G data.der0 = der[i-1].at1(); data.der1 = der[i].at0(); if ( Geom::are_near(data.der0.length(), 0) ) { - data.der0 = unitTangentAt(der[i-1], 1, 2); + data.der0 = -unitTangentAt(reverse(der[i-1]),0.,2); // == unitTangentAt(der[i-1], 1, 2); } if ( Geom::are_near(data.der1.length(), 0) ) { data.der1 = unitTangentAt(der[i], 0, 2); @@ -304,7 +304,7 @@ Geom::Path path_from_piecewise_fix_cusps( Geom::Piecewise<Geom::D2<Geom::SBasis> A 2Geom method was created to do exactly this :) */ - Geom::Point tang1 = unitTangentAt(B[prev_i],1); + Geom::Point tang1 = -unitTangentAt(reverse(B[prev_i]),0.); // = unitTangentAt(B[prev_i],1); Geom::Point tang2 = unitTangentAt(B[i],0); boost::optional<Geom::Point> O = intersection_point( B[prev_i].at1(), tang1, B[i].at0(), tang2 ); @@ -326,7 +326,7 @@ Geom::Path path_from_piecewise_fix_cusps( Geom::Piecewise<Geom::D2<Geom::SBasis> /* case LINEJOIN_NONE: { if ( on_outside ) { // we are on the outside - Geom::Point der1 = unitTangentAt(B[prev_i],1); + Geom::Point der1 = -unitTangentAt(reverse(B[prev_i]),0.); // = unitTangentAt(B[prev_i],1); Geom::Point point_on_path = B[prev_i].at1() - rot90(der1) * cusp.width; pb.lineTo(point_on_path); pb.lineTo(B[i].at0()); @@ -339,7 +339,7 @@ Geom::Path path_from_piecewise_fix_cusps( Geom::Piecewise<Geom::D2<Geom::SBasis> if (on_outside) { // we are on the outside, do something complicated to make it look good ;) - Geom::Point der1 = unitTangentAt(B[prev_i],1); + Geom::Point der1 = -unitTangentAt(reverse(B[prev_i]),0.); // = unitTangentAt(B[prev_i],1); Geom::Point der2 = unitTangentAt(B[i],0); Geom::D2<Geom::SBasis> newcurve1 = B[prev_i] * Geom::reflection(rot90(der1), B[prev_i].at1()); @@ -377,7 +377,7 @@ Geom::Path path_from_piecewise_fix_cusps( Geom::Piecewise<Geom::D2<Geom::SBasis> if (on_outside) { // we are on the outside, do something complicated to make it look good ;) - Geom::Point der1 = unitTangentAt(B[prev_i],1); + Geom::Point der1 = -unitTangentAt(reverse(B[prev_i]),0.); // = unitTangentAt(B[prev_i],1); Geom::Point der2 = unitTangentAt(B[i],0); boost::optional<Geom::Point> p = intersection_point( B[prev_i].at1(), der1, B[i].at0(), der2 ); @@ -399,7 +399,7 @@ Geom::Path path_from_piecewise_fix_cusps( Geom::Piecewise<Geom::D2<Geom::SBasis> } case LINEJOIN_SPIRO: { if (on_outside) { - Geom::Point tang1 = unitTangentAt(B[prev_i],1); + Geom::Point tang1 = -unitTangentAt(reverse(B[prev_i]),0.); // = unitTangentAt(B[prev_i],1); Geom::Point tang2 = unitTangentAt(B[i],0); Geom::Point direction = B[i].at0() - B[prev_i].at1(); |
