UNPKG

laya-coreui-es

Version:

laya核心库、ui库es版本,剔除了媒体、TTF等功能。基于 LayaAir-release_2.12.0 修改

73 lines (72 loc) 2.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Bezier = void 0; const Point_1 = require("./Point"); class Bezier { constructor() { this._controlPoints = [new Point_1.Point(), new Point_1.Point(), new Point_1.Point()]; this._calFun = this.getPoint2; } _switchPoint(x, y) { var tPoint = this._controlPoints.shift(); tPoint.setTo(x, y); this._controlPoints.push(tPoint); } getPoint2(t, rst) { var p1 = this._controlPoints[0]; var p2 = this._controlPoints[1]; var p3 = this._controlPoints[2]; var lineX = Math.pow((1 - t), 2) * p1.x + 2 * t * (1 - t) * p2.x + Math.pow(t, 2) * p3.x; var lineY = Math.pow((1 - t), 2) * p1.y + 2 * t * (1 - t) * p2.y + Math.pow(t, 2) * p3.y; rst.push(lineX, lineY); } getPoint3(t, rst) { var p1 = this._controlPoints[0]; var p2 = this._controlPoints[1]; var p3 = this._controlPoints[2]; var p4 = this._controlPoints[3]; var lineX = Math.pow((1 - t), 3) * p1.x + 3 * p2.x * t * (1 - t) * (1 - t) + 3 * p3.x * t * t * (1 - t) + p4.x * Math.pow(t, 3); var lineY = Math.pow((1 - t), 3) * p1.y + 3 * p2.y * t * (1 - t) * (1 - t) + 3 * p3.y * t * t * (1 - t) + p4.y * Math.pow(t, 3); rst.push(lineX, lineY); } insertPoints(count, rst) { var i; count = count > 0 ? count : 5; var dLen; dLen = 1 / count; for (i = 0; i <= 1; i += dLen) { this._calFun(i, rst); } } getBezierPoints(pList, inSertCount = 5, count = 2) { var i, len; len = pList.length; if (len < (count + 1) * 2) return []; var rst = []; switch (count) { case 2: this._calFun = this.getPoint2; break; case 3: this._calFun = this.getPoint3; break; default: return []; } while (this._controlPoints.length <= count) { this._controlPoints.push(Point_1.Point.create()); } for (i = 0; i < count * 2; i += 2) { this._switchPoint(pList[i], pList[i + 1]); } for (i = count * 2; i < len; i += 2) { this._switchPoint(pList[i], pList[i + 1]); if ((i / 2) % count == 0) this.insertPoints(inSertCount, rst); } return rst; } } exports.Bezier = Bezier; Bezier.I = new Bezier();