VaKeR CYBER ARMY
Logo of a company Server : Apache/2.4.41 (Ubuntu)
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 :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /var/www/html/libs/absol-full/dist/js/mdls__absol__src__Math__Polyline.js
/*** 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;

VaKeR 2022