UNPKG

igniteui-react-core

Version:
273 lines (272 loc) 9.96 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 { Base, Number_$type, Point_$type, markType } from "./type"; import { List$1 } from "./List$1"; import { PathFigureCollection } from "./PathFigureCollection"; import { PathFigure } from "./PathFigure"; import { PolyBezierSegment } from "./PolyBezierSegment"; import { LineSegment } from "./LineSegment"; import { MathUtil } from "./MathUtil"; import { arrayGetLength } from "./array"; import { isNaN_ } from "./number"; /** * @hidden */ export let Numeric = /*@__PURE__*/ (() => { class Numeric extends Base { constructor() { super(); } static e(a, b, c, d, e) { let f; let g = a.count; let h = new Array(g); if (b._inner[0] == 0) { return false; } let i = b._inner[0]; e._inner[0] = d._inner[0] / (i); for (f = 1; f < g; f++) { h[f] = c._inner[f - 1] / i; i = b._inner[f] - a._inner[f] * h[f]; if (i == 0) { return false; } e._inner[f] = (d._inner[f] - a._inner[f] * e._inner[f - 1]) / i; } for (f = (g - 2); f >= 0; f--) { e._inner[f] -= h[f + 1] * e._inner[f + 1]; } return true; } static d(a, b) { let c = arrayGetLength(a, 0); let d = new Array(c); let e = new Array(c); let f = new Array(c); for (let g = 0; g < c; g++) { f[g] = 0; } for (let h = 0; h < c; h++) { let i = 0; let j = 0; let k = 0; for (let l = 0; l < c; l++) { if (f[l] != 1) { for (let m = 0; m < c; m++) { if (f[m] == 0) { if (Math.abs(a[l][m]) >= i) { i = Math.abs(a[l][m]); j = l; k = m; } } } } } ++(f[k]); if (j != k) { for (let n = 0; n < c; n++) { let o = a[j][n]; a[j][n] = a[k][n]; a[k][n] = o; } { let p = b[j]; b[j] = b[k]; b[k] = p; } } e[h] = j; d[h] = k; if (a[k][k] == 0) { return false; } let q = 1 / a[k][k]; a[k][k] = 1; for (let r = 0; r < c; r++) { a[k][r] *= q; } b[k] *= q; for (let s = 0; s < c; s++) { if (s != k) { let t = a[s][k]; a[s][k] = 0; for (let u = 0; u < c; u++) { a[s][u] -= a[k][u] * t; } b[s] -= b[k] * t; } } } for (let v = c - 1; v >= 0; v--) { if (e[v] != d[v]) { for (let w = 0; w < c; w++) { let x = a[w][e[v]]; a[w][e[v]] = a[w][d[v]]; a[w][d[v]] = x; } } } return true; } static c(a, b, c, d, e) { let f = new List$1(Number_$type, 0); for (let g = 0; g < a; ++g) { while (g < a && (isNaN_(b(g)) || isNaN_(c(g)))) { f.add(NaN); ++g; } let h = g; while (g < a && !isNaN_(b(g)) && !isNaN_(c(g))) { ++g; } --g; if (g - h > 0) { f.o(Numeric.b(h, g - h + 1, b, c, d, e)); } else { for (; h <= g; ++h) { f.add(NaN); } } } return f.toArray(); } static b(a, b, c, d, e, f) { return Numeric.a(b, (g) => c(g + a), (g) => d(g + a), e, f); } static a(a, b, c, d, e) { let f = new Array(a - 1); let g = new Array(a); g[0] = isNaN_(d) ? 0 : -0.5; f[0] = isNaN_(d) ? 0 : (3 / (b(1) - b(0))) * ((c(1) - c(0)) / (b(1) - b(0)) - d); for (let h = 1; h < a - 1; h++) { let i = (b(h) - b(h - 1)) / (b(h + 1) - b(h - 1)); let j = i * g[h - 1] + 2; g[h] = (i - 1) / j; f[h] = (c(h + 1) - c(h)) / (b(h + 1) - b(h)) - (c(h) - c(h - 1)) / (b(h) - b(h - 1)); f[h] = (6 * f[h] / (b(h + 1) - b(h - 1)) - i * f[h - 1]) / j; } let k = isNaN_(e) ? 0 : 0.5; let l = isNaN_(e) ? 0 : (3 / (b(a - 1) - b(a - 2))) * (e - (c(a - 1) - c(a - 2)) / (b(a - 1) - b(a - 2))); g[a - 1] = (l - k * f[a - 2]) / (k * g[a - 2] + 1); for (let m = a - 2; m >= 0; m--) { g[m] = g[m] * g[m + 1] + f[m]; } return g; } f(a, b, c, d, e, f, g) { let h = d - b; let i = (d - a) / h; let j = (a - b) / h; return i * c + j * e + ((i * i * i - i) * f + (j * j * j - j) * g) * (h * h) / 6; } static h(a, b, c, d) { let e = new PathFigureCollection(); let f = 0; let g = -1; let h = NaN; let i = NaN; for (let j = 0; j < a; j++) { h = b(j); i = c(j); if (isNaN_(h) || isNaN_(i)) { g = j - 1; if (g - f > 0) { e.add(Numeric.g(f, g, b, c, d)); } f = j + 1; } } if (!isNaN_(h) && !isNaN_(i)) { g = a - 1; } if (g - f > 0) { e.add(Numeric.g(f, g, b, c, d)); } return e; } static g(a, b, c, d, e) { e = 0.5 * MathUtil.d(isNaN_(e) ? 0.5 : e, 0, 1); let f = new PathFigure(); let g = b - a + 1; if (g < 2) { return f; } if (g == 2) { f._startPoint = { $type: Point_$type, x: c(a), y: d(a) }; let h = ((() => { let $ret = new LineSegment(1); $ret.c = { $type: Point_$type, x: c(a + 1), y: d(a + 1) }; return $ret; })()); f._segments.add(h); return f; } let i = new PolyBezierSegment(); let j = c(a); let k = d(a); let l = c(a + 1); let m = d(a + 1); while (l == j && m == k && a + 1 <= b) { a++; l = c(a + 1); m = d(a + 1); } let n = l - j; let o = m - k; let p = Math.sqrt(n * n + o * o); for (let q = a + 1; q < b; ++q) { let r = c(q); let s = d(q); if (r == j && s == k) { continue; } let t = c(q + 1) - c(q - 1); let u = d(q + 1) - d(q - 1); let v = t * t + u * u; if (v < 0.01) { t = -(d(q + 1) - d(q)); u = c(q + 1) - c(q); v = t * t + u * u; } v = Math.sqrt(v); let w = e * Math.sqrt((r - j) * (r - j) + (s - k) * (s - k)); if (v > 0.01) { i.b.add({ $type: Point_$type, x: j + n * w / p, y: k + o * w / p }); i.b.add({ $type: Point_$type, x: r - t * w / v, y: s - u * w / v }); i.b.add({ $type: Point_$type, x: r, y: s }); j = r; k = s; n = t; o = u; p = v; } } { let x = b; let y = c(x); let z = d(x); if (!(y == j && z == k)) { let aa = c(x) - c(x - 1); let ab = d(x) - d(x - 1); let ac = aa * aa + ab * ab; let ad = e * Math.sqrt((y - j) * (y - j) + (z - k) * (z - k)); i.b.add({ $type: Point_$type, x: j + n * ad / p, y: k + o * ad / p }); i.b.add({ $type: Point_$type, x: y - aa * ad / ac, y: z - ab * ad / ac }); i.b.add({ $type: Point_$type, x: y, y: z }); } } f._startPoint = { $type: Point_$type, x: c(a), y: d(a) }; f._segments.add(i); return f; } } Numeric.$t = /*@__PURE__*/ markType(Numeric, 'Numeric'); return Numeric; })();