UNPKG

igniteui-angular-core

Version:

Ignite UI Angular Core logic used in multiple UI components.

344 lines (343 loc) 10.2 kB
/* THIS INFRAGISTICS ULTIMATE SOFTWARE LICENSE AGREEMENT ("AGREEMENT") LOCATED HERE: https://www.infragistics.com/legal/license/igultimate-la https://www.infragistics.com/legal/license/igultimate-eula GOVERNS THE LICENSING, INSTALLATION AND USE OF INFRAGISTICS SOFTWARE. BY DOWNLOADING AND/OR INSTALLING AND USING INFRAGISTICS SOFTWARE: you are indicating that you have read and understand this Agreement, and agree to be legally bound by it on behalf of the yourself and your company. */ import { __extends } from "tslib"; import { Base, markType } from "./type"; import { QuadTreeBoundingBox } from "./QuadTreeBoundingBox"; import { List$1 } from "./List$1"; import { HashSet$1 } from "./HashSet$1"; import { LinkedList$1 } from "./LinkedList$1"; import { QuadTreeForceVector } from "./QuadTreeForceVector"; /** * @hidden */ var QuadTree = /** @class */ /*@__PURE__*/ (function (_super) { __extends(QuadTree, _super); function QuadTree(a, b, c, d) { var _this = _super.call(this) || this; _this.b = null; _this.f = 0; _this.i = 0; _this.b = new QuadTreeNode(); _this.b.b = _this; _this.b.c = new QuadTreeBoundingBox(); var e = Math.max(a, b); _this.b.c.d = e / 2; _this.b.c.e = e / 2; _this.b.c.g = e / 2; _this.b.c.f = e / 2; _this.f = d; _this.i = c; return _this; } QuadTree.prototype.c = function (a) { return this.b.i(a); }; QuadTree.prototype.d = function (a) { return this.b.k(a); }; QuadTree.prototype.e = function (a) { var b = new List$1(QuadTreeNode.$, 0); this.b.x(a, b); return b; }; QuadTree.prototype.j = function () { this.b.w(); }; QuadTree.prototype.k = function () { this.b.z(); }; QuadTree.prototype.g = function () { return this.h(this.b, new HashSet$1(QuadTreeBoundingBox.$, 0)); }; QuadTree.prototype.h = function (a, b) { if (a.j) { var c = 0; var d = a.l.c; while (d != null) { if (!b.contains(d.c)) { c += 1; b.add_1(d.c); } d = d.a; } return c; } var e = this.h(a.f, b); e += this.h(a.e, b); e += this.h(a.h, b); e += this.h(a.g, b); return e; }; QuadTree.prototype.a = function (a, b, c) { return this.b.d(a, b, c); }; QuadTree.$t = markType(QuadTree, 'QuadTree'); return QuadTree; }(Base)); export { QuadTree }; /** * @hidden */ var QuadTreeNode = /** @class */ /*@__PURE__*/ (function (_super) { __extends(QuadTreeNode, _super); function QuadTreeNode() { var _this = _super.call(this) || this; _this.b = null; _this.l = null; _this.t = 0; _this.c = null; _this.q = 0; _this.a = null; _this.m = 0; _this.n = 0; _this.o = 0; _this.m = 0; _this.n = 0; _this.o = 0; _this.l = new LinkedList$1(QuadTreeBoundingBox.$); _this.a = new Array(4); _this.c = new QuadTreeBoundingBox(); for (var a = 0; a < 4; a++) { _this.a[a] = null; } return _this; } QuadTreeNode.prototype.k = function (a) { if (!this.c.c(a)) { return false; } var b = this.f == null && this.e == null && this.h == null && this.g == null; if (b) { var c = this.l.c; while (c != null) { if (c.c == a) { this.l.h(c); this.t--; return true; } c = c.a; } return false; } this.f.k(a); this.e.k(a); this.h.k(a); this.g.k(a); return false; }; Object.defineProperty(QuadTreeNode.prototype, "j", { get: function () { return this.f == null && this.e == null && this.h == null && this.g == null; }, enumerable: false, configurable: true }); QuadTreeNode.prototype.x = function (a, b) { if (!this.c.c(a)) { return; } if (this.j) { b.add(this); return; } this.f.x(a, b); this.e.x(a, b); this.h.x(a, b); this.g.x(a, b); }; QuadTreeNode.prototype.w = function () { if (this.f != null) { this.f.w(); } if (this.e != null) { this.e.w(); } if (this.h != null) { this.h.w(); } if (this.g != null) { this.h.w(); } if (this.f.j && this.f.t == 0 && this.e.j && this.e.t == 0 && this.h.j && this.h.t == 0 && this.g.j && this.g.t == 0) { this.f = null; this.e = null; this.h = null; this.g = null; return; } }; QuadTreeNode.prototype.i = function (a) { if (!this.c.c(a)) { return false; } var b = this.f == null && this.e == null && this.h == null && this.g == null; if (b && this.t < this.b.f) { this.l.f(a); this.t++; return true; } else if (b && this.q < this.b.i) { this.y(); } else if (b) { this.l.f(a); this.t++; return true; } var c = this.f.i(a); c = this.e.i(a) || c; c = this.h.i(a) || c; c = this.g.i(a) || c; return c; }; QuadTreeNode.prototype.y = function () { this.f = new QuadTreeNode(); this.e = new QuadTreeNode(); this.h = new QuadTreeNode(); this.g = new QuadTreeNode(); var a = this.c.g / 2; this.f.c.d = this.c.d - a; this.f.c.e = this.c.e - a; this.e.c.d = this.c.d + a; this.e.c.e = this.c.e - a; this.h.c.d = this.c.d - a; this.h.c.e = this.c.e + a; this.g.c.d = this.c.d + a; this.g.c.e = this.c.e + a; for (var b = 0; b < 4; b++) { this.a[b].q = this.q + 1; this.a[b].c.g = a; this.a[b].c.f = a; this.a[b].b = this.b; } var c = this.l.c; while (c != null) { var d = c.c; this.f.i(d); this.e.i(d); this.h.i(d); this.g.i(d); c = c.a; } this.l.g(); this.t = 0; }; QuadTreeNode.prototype.z = function () { if (this.j) { var a = 0; var b = 0; var c = this.l.c; while (c != null) { var d = c.c; a += d.d; b += d.e; c = c.a; } if (this.t == 0) { this.m = 0; this.n = 0; this.o = 0; } else { this.m = a / this.t; this.n = b / this.t; this.o = this.t; } } else { this.f.z(); this.h.z(); this.e.z(); this.g.z(); var e = 0; var f = 0; var g = 0; for (var h = 0; h < 4; h++) { g += this.a[h].o; e += this.a[h].m * this.a[h].o; f += this.a[h].n * this.a[h].o; } if (this.o > 0) { this.m = e / g; this.n = f / g; } this.o = g; } }; QuadTreeNode.prototype.d = function (a, b, c) { var d = Math.sqrt((a - this.m) * (a - this.m) + (b - this.n) * (b - this.n)); var e = this.c.g * 2; if (e / d < c || this.j) { var f_1 = (a - this.m) * this.o / (d * d); var g_1 = (b - this.n) * this.o / (d * d); return ((function () { var $ret = new QuadTreeForceVector(); $ret.a = f_1; $ret.b = g_1; return $ret; })()); } else { var h_1 = 0; var i_1 = 0; for (var j = 0; j < 4; j++) { var k = this.a[j].d(a, b, c); h_1 += k.a; i_1 += k.b; } return ((function () { var $ret = new QuadTreeForceVector(); $ret.a = h_1; $ret.b = i_1; return $ret; })()); } }; Object.defineProperty(QuadTreeNode.prototype, "f", { get: function () { return this.a[0]; }, set: function (a) { this.a[0] = a; }, enumerable: false, configurable: true }); Object.defineProperty(QuadTreeNode.prototype, "e", { get: function () { return this.a[1]; }, set: function (a) { this.a[1] = a; }, enumerable: false, configurable: true }); Object.defineProperty(QuadTreeNode.prototype, "h", { get: function () { return this.a[2]; }, set: function (a) { this.a[2] = a; }, enumerable: false, configurable: true }); Object.defineProperty(QuadTreeNode.prototype, "g", { get: function () { return this.a[3]; }, set: function (a) { this.a[3] = a; }, enumerable: false, configurable: true }); QuadTreeNode.$t = markType(QuadTreeNode, 'QuadTreeNode'); return QuadTreeNode; }(Base)); export { QuadTreeNode };