From 20604a9037ad7c995977b20f9e5f16b4fe10125a Mon Sep 17 00:00:00 2001 From: "Johan B. C. Engelen" Date: Tue, 10 Apr 2012 19:56:29 +0200 Subject: fix potential issue with tangent calculation (bzr r11211) --- src/live_effects/lpe-powerstroke.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src') 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 find_discontinuities( Geom::Piecewise 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 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 /* 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 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 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 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 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 } 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(); -- cgit v1.2.3