86a87,88 > if(resizing == 0) return *this; > if(empty()) return *this; 90c92 < if(resizing > 0) --- > else 92d93 < return *this; 94,95c95 < if(resizing == 0) return *this; < if(empty()) return *this; --- > 103,105c103,109 < //make_arc(std::vector >& return_points, < //point_data< double> start, point_data< double> end, < //point_data< double> center, double r, unsigned int num_circle_segments) --- > > // scale arc up so that minimum radius corresponds to 'resizing', > // for bug ticket #6063. > const double our_pi=3.1415926535897932384626433832795028841971; > double arcRadScaling = 1.0/cos(2.0*our_pi/double(num_circle_segments)/2.0); > double arcRadius = double(std::abs(resizing))*arcRadScaling; > 107,109c111,112 < point_data center(0.0, 0.0), start(0.0, (double)resizing); < make_arc(circle, start, start, center, std::abs((double)resizing), < num_circle_segments); --- > point_data center(0.0, 0.0), start(0.0, arcRadius); > make_arc(circle, start, start, center, arcRadius, num_circle_segments); 116a120,127 > > // Intersect with result of 'normal' (non-minkowski-sum) offset, > // to remove offsets larger than the given 'resizing' when not near corners. > // Also for bug ticket #6063 > polygon_set_data normal_offset_result(*this); > normal_offset_result.bloat(std::abs(resizing)); > result = result & normal_offset_result; > 120a132 >