NuclearDispersionSystem/ant-design-vue-jeecg/node_modules/@antv/component/lib/axis/helix.js
2023-09-14 14:47:11 +08:00

124 lines
4.1 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

function _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
var Util = require('../util');
var Base = require('./base');
var MatrixUtil = Util.MatrixUtil,
PathUtil = Util.PathUtil;
var vec2 = MatrixUtil.vec2;
var Helix = /*#__PURE__*/function (_Base) {
_inheritsLoose(Helix, _Base);
var _super = _createSuper(Helix);
function Helix() {
return _Base.apply(this, arguments) || this;
}
var _proto = Helix.prototype;
_proto.getDefaultCfg = function getDefaultCfg() {
var cfg = _Base.prototype.getDefaultCfg.call(this);
return Util.mix({}, cfg, {
inner: 0,
type: 'helix',
line: {
// @type {Attrs} 坐标轴线的图形属性,如果设置成null则不显示轴线
lineWidth: 1,
stroke: '#C0D0E0'
},
tickLine: {
// @type {Attrs} 标注坐标线的图形属性
lineWidth: 1,
stroke: '#C0D0E0',
length: 5
},
startAngle: 1.25 * Math.PI,
endAngle: 7.25 * Math.PI,
// 螺旋系数
a: 0,
// 画布中心坐标
center: null,
// 坐标轴绘制起点
axisStart: null,
// 坐标轴的n个坐标点
crp: []
});
};
_proto.getLinePath = function getLinePath() {
var self = this;
var crp = self.get('crp');
var axisStart = self.get('axisStart');
var path = PathUtil.catmullRomToBezier(crp);
path.unshift(['M', axisStart.x, axisStart.y]);
return path;
};
_proto.getTickPoint = function getTickPoint(value) {
var self = this;
var startAngle = self.get('startAngle');
var endAngle = self.get('endAngle');
var angle = startAngle + (endAngle - startAngle) * value;
return self._getHelixPoint(angle);
};
_proto._getHelixPoint = function _getHelixPoint(angle) {
var self = this;
var center = self.get('center');
var a = self.get('a'); // 螺线系数
var radius = a * angle + self.get('inner'); // 螺线方程
return {
x: center.x + Math.cos(angle) * radius,
y: center.y + Math.sin(angle) * radius
};
};
_proto.getSideVector = function getSideVector(offset, point) {
var self = this;
var center = self.get('center');
var vector = [point.x - center.x, point.y - center.y];
if (offset) {
var vecLen = vec2.length(vector);
vec2.scale(vector, vector, offset / vecLen);
}
return vector;
};
_proto.getSidePoint = function getSidePoint(point, offset) {
var self = this;
var vector = self.getSideVector(offset, point);
return {
x: point.x + vector[0],
y: point.y + vector[1]
};
};
_proto.getTickEnd = function getTickEnd(start, length) {
var self = this;
var tickLine = self.get('tickLine');
length = length ? length : tickLine.length;
return self.getSidePoint(start, length);
};
return Helix;
}(Base);
module.exports = Helix;