![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /var/www/html/libs/absol-full/dist/js/ |
Upload File : |
/*** module: node_modules/absol/src/Math/Polyline.js ***/ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _SegmentLine = _interopRequireDefault(require("./SegmentLine")); var _Vec = _interopRequireDefault(require("./Vec2")); function Polyline(points) { if (points.length < 2) points = [new _Vec.default(0, 0), new _Vec.default(0, 0)]; this.points = points; } Polyline.prototype.nearestParamToPoint = function (point) { var sgm; var minDist = Infinity; var minParam = 0; var param; for (var i = 0; i < this.points.length - 1; ++i) { sgm = new _SegmentLine.default(this.points[i], this.points[i + 1]); param = sgm.nearestParamToPoint(point); if (sgm.pointAt(param).dist(point) < minDist) { minDist = sgm.pointAt(param).dist(point); minParam = i + param; } } return minParam; }; /** * * @param {number} param - from 0 to points_length - 1 * @returns {Vec2} */ Polyline.prototype.pointAt = function (param) { if (param < 0) return this.points[0]; if (param >= this.points.length - 1) return this.points[this.points.length - 1]; var idx = Math.floor(param); var sgm = new _SegmentLine.default(this.points[idx], this.points[idx + 1]); return sgm.pointAt(param - idx); }; Polyline.prototype.copy = function () { return new Polyline(this.points.map(p => { return p.copy(); })); }; /** * @param {number=} tolerance * @returns {Polyline} */ Polyline.prototype.simplify = function (tolerance) { tolerance = tolerance || 0.00001; var points = this.points; var newPoints = []; var point, lastPoint; var sm; var dist; for (var i = 0; i < points.length; ++i) { point = points[i]; if (newPoints.length < 2) { newPoints.push(point); continue; } lastPoint = newPoints[newPoints.length - 1]; sm = new _SegmentLine.default(newPoints[newPoints.length - 2], point); dist = sm.nearestPointToPoint(lastPoint).dist(lastPoint); if (dist > tolerance) { newPoints.push(point); } else { newPoints[newPoints.length - 1] = point; } } return new Polyline(newPoints); }; var _default = Polyline; exports.default = _default;