UNPKG

suoqiu-f2

Version:

Charts for mobile visualization.

115 lines (114 loc) 3.85 kB
"use strict"; exports.__esModule = true; exports["default"] = void 0; var _base = _interopRequireDefault(require("./base")); var _vector = _interopRequireDefault(require("../graphic/util/vector2")); var _matrix = _interopRequireDefault(require("../graphic/util/matrix")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; } function _inheritsLoose(t, o) { t.prototype = Object.create(o.prototype), t.prototype.constructor = t, _setPrototypeOf(t, o); } function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); } var Polar = /*#__PURE__*/function (_Base) { function Polar() { return _Base.apply(this, arguments) || this; } _inheritsLoose(Polar, _Base); var _proto = Polar.prototype; _proto._initDefaultCfg = function _initDefaultCfg() { this.type = 'polar'; this.startAngle = -Math.PI / 2; this.endAngle = Math.PI * 3 / 2; this.inner = 0; this.innerRadius = 0; // alias this.isPolar = true; this.transposed = false; this.center = null; this.radius = null; // relative, 0 ~ 1 }; _proto.init = function init(start, end) { _Base.prototype.init.call(this, start, end); var self = this; var inner = self.inner || self.innerRadius; var width = Math.abs(end.x - start.x); var height = Math.abs(end.y - start.y); var maxRadius; var center; if (self.startAngle === -Math.PI && self.endAngle === 0) { maxRadius = Math.min(width / 2, height); center = { x: (start.x + end.x) / 2, y: start.y }; } else { maxRadius = Math.min(width, height) / 2; center = { x: (start.x + end.x) / 2, y: (start.y + end.y) / 2 }; } var radius = self.radius; if (radius > 0 && radius <= 1) { maxRadius = maxRadius * radius; } this.x = { start: self.startAngle, end: self.endAngle }; this.y = { start: maxRadius * inner, end: maxRadius }; this.center = center; this.circleRadius = maxRadius; // the radius value in px }; _proto._convertPoint = function _convertPoint(point) { var self = this; var center = self.center; var transposed = self.transposed; var xDim = transposed ? 'y' : 'x'; var yDim = transposed ? 'x' : 'y'; var x = self.x; var y = self.y; var angle = x.start + (x.end - x.start) * point[xDim]; var radius = y.start + (y.end - y.start) * point[yDim]; return { x: center.x + Math.cos(angle) * radius, y: center.y + Math.sin(angle) * radius }; }; _proto._invertPoint = function _invertPoint(point) { var self = this; var center = self.center, transposed = self.transposed, x = self.x, y = self.y; var xDim = transposed ? 'y' : 'x'; var yDim = transposed ? 'x' : 'y'; var m = [1, 0, 0, 1, 0, 0]; _matrix["default"].rotate(m, m, x.start); var startV = [1, 0]; _vector["default"].transformMat2d(startV, startV, m); startV = [startV[0], startV[1]]; var pointV = [point.x - center.x, point.y - center.y]; if (_vector["default"].zero(pointV)) { return { x: 0, y: 0 }; } var theta = _vector["default"].angleTo(startV, pointV, x.end < x.start); if (Math.abs(theta - Math.PI * 2) < 0.001) { theta = 0; } var l = _vector["default"].length(pointV); var percentX = theta / (x.end - x.start); percentX = x.end - x.start > 0 ? percentX : -percentX; var percentY = (l - y.start) / (y.end - y.start); var rst = {}; rst[xDim] = percentX; rst[yDim] = percentY; return rst; }; return Polar; }(_base["default"]); _base["default"].Polar = Polar; var _default = exports["default"] = Polar;