Created attachment 146629 [details] ApproxCircleInfo.odt, Artical about the mathematics to be used The circle primitive is drawn by an approximation with twelve Bézier curves. The value chosen for the distance between control point and end point can be improved. For details about the calculation read the attached document "ApproxCircleInfo.odt".
Created attachment 146630 [details] Custom shape circle to make your own experiments
Created attachment 146631 [details] Legacy circle to make your own experiments
Created attachment 146632 [details] Essential parts of my intended changes. @Armin: The patch contains the intended changes. Please have a look. The final solution will have changes in the description of the functions in regard to accuracy. The current wording "less than 0.5 percent" needs to be adapted, in case you agree with my proposal.
Created attachment 146683 [details] Approximate a circle arc by a Bézier curce, formulas and examples Describes the general problem and contains a formula to calculate the control points of the Bézier curve.
Created attachment 146696 [details] Proposed patch @Armin: Please have a look at the attached patch. It uses factors for the vector from Bézier point to the associated control point, which is calculated from the actual center angle and not by scaling the value from the 90°-factor. Thus I have renamed fScaledKappa to fSegmentKappa. Currently the calculation of the factor is done in a local function. My question: Do similar calculations exist for to approximate a circle with a Bézier curve somewhere outside this file? In that case it might be useful, to make it a public function. Because of the small resolution of screens, you should export test files to pdf and examine the resulting file e.g. with Acrobat Reader at 6400% zoom.
Created attachment 146704 [details] Approximate a circle arc by a Bézier curce, formulas and examples
Created attachment 146836 [details] Approximate a circle arc by a Bézier curce, formulas and examples Document as mentioned in the patch. The final patch is now in https://gerrit.libreoffice.org/#/c/63659/ and waiting for review.
Regina Henschel committed a patch related to this issue. It has been pushed to "master": https://git.libreoffice.org/core/+/fbc95e77d28f8a5a8f6442a64e5e0e52e98612c2%5E%21 tdf#121425 Use better Bezier curves to approximate circle arc It will be available in 6.3.0. The patch should be included in the daily builds available at https://dev-builds.libreoffice.org/daily/ in the next 24-48 hours. More information about daily builds can be found at: https://wiki.documentfoundation.org/Testing_Daily_Builds Affected users are encouraged to test the fix and report feedback.
Fixed in Version: 6.3.0.0.alpha0+ (x64) Build ID: 70970f8b72eddc66693ec28d26c2dc764009d3e3 CPU threads: 8; OS: Windows 10.0; UI render: GL; VCL: win; TinderBox: Win-x86_64@42, Branch:master, Time: 2018-11-24_03:32:27 Locale: en-US (en_US); UI-Language: en-US Calc: threaded