UNPKG

1.55 kBJavaScriptView Raw
1"use strict";
2
3exports.__esModule = true;
4exports.translateEndAngle = exports.arcCommands = exports.polarToCartesian = exports.baseUnit = void 0;
5var POST_DECIMAL_DIGITS = 10;
6var baseUnit = 24;
7exports.baseUnit = baseUnit;
8
9var polarToCartesian = function polarToCartesian(centerX, centerY, radius, angleInDegrees) {
10 var angleInRadians = (angleInDegrees - 90) * Math.PI / 180.0;
11 return {
12 x: centerX + radius * Math.cos(angleInRadians),
13 y: centerY + radius * Math.sin(angleInRadians)
14 };
15};
16
17exports.polarToCartesian = polarToCartesian;
18
19var arcCommands = function arcCommands(centerX, centerY, radius, startAngle, endAngle) {
20 // handle that we can't draw a complete circle
21 var normalizedEndAngle = endAngle;
22
23 if (endAngle - startAngle >= 360) {
24 normalizedEndAngle = startAngle + 359.99;
25 }
26
27 var start = polarToCartesian(centerX, centerY, radius, normalizedEndAngle);
28 var end = polarToCartesian(centerX, centerY, radius, startAngle);
29 var arcSweep = normalizedEndAngle - startAngle <= 180 ? '0' : '1';
30 var d = ['M', start.x.toFixed(POST_DECIMAL_DIGITS), start.y.toFixed(POST_DECIMAL_DIGITS), 'A', radius.toFixed(POST_DECIMAL_DIGITS), radius.toFixed(POST_DECIMAL_DIGITS), 0, arcSweep, 0, end.x.toFixed(POST_DECIMAL_DIGITS), end.y.toFixed(POST_DECIMAL_DIGITS)].join(' ');
31 return d;
32};
33
34exports.arcCommands = arcCommands;
35
36var translateEndAngle = function translateEndAngle(startAngle, anglePer, value) {
37 return Math.min(360, Math.max(0, startAngle + anglePer * value));
38};
39
40exports.translateEndAngle = translateEndAngle;
\No newline at end of file