qauMaWeb/node_modules/.cache/babel-loader/767c8517029c101ea47f96a0570...

1 line
34 KiB
JSON

{"ast":null,"code":"import { create as v2Create, distSquare as v2DistSquare } from './vector.js';\nvar mathPow = Math.pow;\nvar mathSqrt = Math.sqrt;\nvar EPSILON = 1e-8;\nvar EPSILON_NUMERIC = 1e-4;\nvar THREE_SQRT = mathSqrt(3);\nvar ONE_THIRD = 1 / 3;\n\nvar _v0 = v2Create();\n\nvar _v1 = v2Create();\n\nvar _v2 = v2Create();\n\nfunction isAroundZero(val) {\n return val > -EPSILON && val < EPSILON;\n}\n\nfunction isNotAroundZero(val) {\n return val > EPSILON || val < -EPSILON;\n}\n\nexport function cubicAt(p0, p1, p2, p3, t) {\n var onet = 1 - t;\n return onet * onet * (onet * p0 + 3 * t * p1) + t * t * (t * p3 + 3 * onet * p2);\n}\nexport function cubicDerivativeAt(p0, p1, p2, p3, t) {\n var onet = 1 - t;\n return 3 * (((p1 - p0) * onet + 2 * (p2 - p1) * t) * onet + (p3 - p2) * t * t);\n}\nexport function cubicRootAt(p0, p1, p2, p3, val, roots) {\n var a = p3 + 3 * (p1 - p2) - p0;\n var b = 3 * (p2 - p1 * 2 + p0);\n var c = 3 * (p1 - p0);\n var d = p0 - val;\n var A = b * b - 3 * a * c;\n var B = b * c - 9 * a * d;\n var C = c * c - 3 * b * d;\n var n = 0;\n\n if (isAroundZero(A) && isAroundZero(B)) {\n if (isAroundZero(b)) {\n roots[0] = 0;\n } else {\n var t1 = -c / b;\n\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n }\n } else {\n var disc = B * B - 4 * A * C;\n\n if (isAroundZero(disc)) {\n var K = B / A;\n var t1 = -b / a + K;\n var t2 = -K / 2;\n\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n\n if (t2 >= 0 && t2 <= 1) {\n roots[n++] = t2;\n }\n } else if (disc > 0) {\n var discSqrt = mathSqrt(disc);\n var Y1 = A * b + 1.5 * a * (-B + discSqrt);\n var Y2 = A * b + 1.5 * a * (-B - discSqrt);\n\n if (Y1 < 0) {\n Y1 = -mathPow(-Y1, ONE_THIRD);\n } else {\n Y1 = mathPow(Y1, ONE_THIRD);\n }\n\n if (Y2 < 0) {\n Y2 = -mathPow(-Y2, ONE_THIRD);\n } else {\n Y2 = mathPow(Y2, ONE_THIRD);\n }\n\n var t1 = (-b - (Y1 + Y2)) / (3 * a);\n\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n } else {\n var T = (2 * A * b - 3 * a * B) / (2 * mathSqrt(A * A * A));\n var theta = Math.acos(T) / 3;\n var ASqrt = mathSqrt(A);\n var tmp = Math.cos(theta);\n var t1 = (-b - 2 * ASqrt * tmp) / (3 * a);\n var t2 = (-b + ASqrt * (tmp + THREE_SQRT * Math.sin(theta))) / (3 * a);\n var t3 = (-b + ASqrt * (tmp - THREE_SQRT * Math.sin(theta))) / (3 * a);\n\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n\n if (t2 >= 0 && t2 <= 1) {\n roots[n++] = t2;\n }\n\n if (t3 >= 0 && t3 <= 1) {\n roots[n++] = t3;\n }\n }\n }\n\n return n;\n}\nexport function cubicExtrema(p0, p1, p2, p3, extrema) {\n var b = 6 * p2 - 12 * p1 + 6 * p0;\n var a = 9 * p1 + 3 * p3 - 3 * p0 - 9 * p2;\n var c = 3 * p1 - 3 * p0;\n var n = 0;\n\n if (isAroundZero(a)) {\n if (isNotAroundZero(b)) {\n var t1 = -c / b;\n\n if (t1 >= 0 && t1 <= 1) {\n extrema[n++] = t1;\n }\n }\n } else {\n var disc = b * b - 4 * a * c;\n\n if (isAroundZero(disc)) {\n extrema[0] = -b / (2 * a);\n } else if (disc > 0) {\n var discSqrt = mathSqrt(disc);\n var t1 = (-b + discSqrt) / (2 * a);\n var t2 = (-b - discSqrt) / (2 * a);\n\n if (t1 >= 0 && t1 <= 1) {\n extrema[n++] = t1;\n }\n\n if (t2 >= 0 && t2 <= 1) {\n extrema[n++] = t2;\n }\n }\n }\n\n return n;\n}\nexport function cubicSubdivide(p0, p1, p2, p3, t, out) {\n var p01 = (p1 - p0) * t + p0;\n var p12 = (p2 - p1) * t + p1;\n var p23 = (p3 - p2) * t + p2;\n var p012 = (p12 - p01) * t + p01;\n var p123 = (p23 - p12) * t + p12;\n var p0123 = (p123 - p012) * t + p012;\n out[0] = p0;\n out[1] = p01;\n out[2] = p012;\n out[3] = p0123;\n out[4] = p0123;\n out[5] = p123;\n out[6] = p23;\n out[7] = p3;\n}\nexport function cubicProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, x, y, out) {\n var t;\n var interval = 0.005;\n var d = Infinity;\n var prev;\n var next;\n var d1;\n var d2;\n _v0[0] = x;\n _v0[1] = y;\n\n for (var _t = 0; _t < 1; _t += 0.05) {\n _v1[0] = cubicAt(x0, x1, x2, x3, _t);\n _v1[1] = cubicAt(y0, y1, y2, y3, _t);\n d1 = v2DistSquare(_v0, _v1);\n\n if (d1 < d) {\n t = _t;\n d = d1;\n }\n }\n\n d = Infinity;\n\n for (var i = 0; i < 32; i++) {\n if (interval < EPSILON_NUMERIC) {\n break;\n }\n\n prev = t - interval;\n next = t + interval;\n _v1[0] = cubicAt(x0, x1, x2, x3, prev);\n _v1[1] = cubicAt(y0, y1, y2, y3, prev);\n d1 = v2DistSquare(_v1, _v0);\n\n if (prev >= 0 && d1 < d) {\n t = prev;\n d = d1;\n } else {\n _v2[0] = cubicAt(x0, x1, x2, x3, next);\n _v2[1] = cubicAt(y0, y1, y2, y3, next);\n d2 = v2DistSquare(_v2, _v0);\n\n if (next <= 1 && d2 < d) {\n t = next;\n d = d2;\n } else {\n interval *= 0.5;\n }\n }\n }\n\n if (out) {\n out[0] = cubicAt(x0, x1, x2, x3, t);\n out[1] = cubicAt(y0, y1, y2, y3, t);\n }\n\n return mathSqrt(d);\n}\nexport function cubicLength(x0, y0, x1, y1, x2, y2, x3, y3, iteration) {\n var px = x0;\n var py = y0;\n var d = 0;\n var step = 1 / iteration;\n\n for (var i = 1; i <= iteration; i++) {\n var t = i * step;\n var x = cubicAt(x0, x1, x2, x3, t);\n var y = cubicAt(y0, y1, y2, y3, t);\n var dx = x - px;\n var dy = y - py;\n d += Math.sqrt(dx * dx + dy * dy);\n px = x;\n py = y;\n }\n\n return d;\n}\nexport function quadraticAt(p0, p1, p2, t) {\n var onet = 1 - t;\n return onet * (onet * p0 + 2 * t * p1) + t * t * p2;\n}\nexport function quadraticDerivativeAt(p0, p1, p2, t) {\n return 2 * ((1 - t) * (p1 - p0) + t * (p2 - p1));\n}\nexport function quadraticRootAt(p0, p1, p2, val, roots) {\n var a = p0 - 2 * p1 + p2;\n var b = 2 * (p1 - p0);\n var c = p0 - val;\n var n = 0;\n\n if (isAroundZero(a)) {\n if (isNotAroundZero(b)) {\n var t1 = -c / b;\n\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n }\n } else {\n var disc = b * b - 4 * a * c;\n\n if (isAroundZero(disc)) {\n var t1 = -b / (2 * a);\n\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n } else if (disc > 0) {\n var discSqrt = mathSqrt(disc);\n var t1 = (-b + discSqrt) / (2 * a);\n var t2 = (-b - discSqrt) / (2 * a);\n\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n\n if (t2 >= 0 && t2 <= 1) {\n roots[n++] = t2;\n }\n }\n }\n\n return n;\n}\nexport function quadraticExtremum(p0, p1, p2) {\n var divider = p0 + p2 - 2 * p1;\n\n if (divider === 0) {\n return 0.5;\n } else {\n return (p0 - p1) / divider;\n }\n}\nexport function quadraticSubdivide(p0, p1, p2, t, out) {\n var p01 = (p1 - p0) * t + p0;\n var p12 = (p2 - p1) * t + p1;\n var p012 = (p12 - p01) * t + p01;\n out[0] = p0;\n out[1] = p01;\n out[2] = p012;\n out[3] = p012;\n out[4] = p12;\n out[5] = p2;\n}\nexport function quadraticProjectPoint(x0, y0, x1, y1, x2, y2, x, y, out) {\n var t;\n var interval = 0.005;\n var d = Infinity;\n _v0[0] = x;\n _v0[1] = y;\n\n for (var _t = 0; _t < 1; _t += 0.05) {\n _v1[0] = quadraticAt(x0, x1, x2, _t);\n _v1[1] = quadraticAt(y0, y1, y2, _t);\n var d1 = v2DistSquare(_v0, _v1);\n\n if (d1 < d) {\n t = _t;\n d = d1;\n }\n }\n\n d = Infinity;\n\n for (var i = 0; i < 32; i++) {\n if (interval < EPSILON_NUMERIC) {\n break;\n }\n\n var prev = t - interval;\n var next = t + interval;\n _v1[0] = quadraticAt(x0, x1, x2, prev);\n _v1[1] = quadraticAt(y0, y1, y2, prev);\n var d1 = v2DistSquare(_v1, _v0);\n\n if (prev >= 0 && d1 < d) {\n t = prev;\n d = d1;\n } else {\n _v2[0] = quadraticAt(x0, x1, x2, next);\n _v2[1] = quadraticAt(y0, y1, y2, next);\n var d2 = v2DistSquare(_v2, _v0);\n\n if (next <= 1 && d2 < d) {\n t = next;\n d = d2;\n } else {\n interval *= 0.5;\n }\n }\n }\n\n if (out) {\n out[0] = quadraticAt(x0, x1, x2, t);\n out[1] = quadraticAt(y0, y1, y2, t);\n }\n\n return mathSqrt(d);\n}\nexport function quadraticLength(x0, y0, x1, y1, x2, y2, iteration) {\n var px = x0;\n var py = y0;\n var d = 0;\n var step = 1 / iteration;\n\n for (var i = 1; i <= iteration; i++) {\n var t = i * step;\n var x = quadraticAt(x0, x1, x2, t);\n var y = quadraticAt(y0, y1, y2, t);\n var dx = x - px;\n var dy = y - py;\n d += Math.sqrt(dx * dx + dy * dy);\n px = x;\n py = y;\n }\n\n return d;\n}","map":{"version":3,"sources":["D:/Work/WorkSpace/GitWorkSpace/TenShop/resource/ElectronicMall/src/ElectronicMallVue/node_modules/zrender/lib/core/curve.js"],"names":["create","v2Create","distSquare","v2DistSquare","mathPow","Math","pow","mathSqrt","sqrt","EPSILON","EPSILON_NUMERIC","THREE_SQRT","ONE_THIRD","_v0","_v1","_v2","isAroundZero","val","isNotAroundZero","cubicAt","p0","p1","p2","p3","t","onet","cubicDerivativeAt","cubicRootAt","roots","a","b","c","d","A","B","C","n","t1","disc","K","t2","discSqrt","Y1","Y2","T","theta","acos","ASqrt","tmp","cos","sin","t3","cubicExtrema","extrema","cubicSubdivide","out","p01","p12","p23","p012","p123","p0123","cubicProjectPoint","x0","y0","x1","y1","x2","y2","x3","y3","x","y","interval","Infinity","prev","next","d1","d2","_t","i","cubicLength","iteration","px","py","step","dx","dy","quadraticAt","quadraticDerivativeAt","quadraticRootAt","quadraticExtremum","divider","quadraticSubdivide","quadraticProjectPoint","quadraticLength"],"mappings":"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","sourcesContent":["import { create as v2Create, distSquare as v2DistSquare } from './vector.js';\nvar mathPow = Math.pow;\nvar mathSqrt = Math.sqrt;\nvar EPSILON = 1e-8;\nvar EPSILON_NUMERIC = 1e-4;\nvar THREE_SQRT = mathSqrt(3);\nvar ONE_THIRD = 1 / 3;\nvar _v0 = v2Create();\nvar _v1 = v2Create();\nvar _v2 = v2Create();\nfunction isAroundZero(val) {\n return val > -EPSILON && val < EPSILON;\n}\nfunction isNotAroundZero(val) {\n return val > EPSILON || val < -EPSILON;\n}\nexport function cubicAt(p0, p1, p2, p3, t) {\n var onet = 1 - t;\n return onet * onet * (onet * p0 + 3 * t * p1)\n + t * t * (t * p3 + 3 * onet * p2);\n}\nexport function cubicDerivativeAt(p0, p1, p2, p3, t) {\n var onet = 1 - t;\n return 3 * (((p1 - p0) * onet + 2 * (p2 - p1) * t) * onet\n + (p3 - p2) * t * t);\n}\nexport function cubicRootAt(p0, p1, p2, p3, val, roots) {\n var a = p3 + 3 * (p1 - p2) - p0;\n var b = 3 * (p2 - p1 * 2 + p0);\n var c = 3 * (p1 - p0);\n var d = p0 - val;\n var A = b * b - 3 * a * c;\n var B = b * c - 9 * a * d;\n var C = c * c - 3 * b * d;\n var n = 0;\n if (isAroundZero(A) && isAroundZero(B)) {\n if (isAroundZero(b)) {\n roots[0] = 0;\n }\n else {\n var t1 = -c / b;\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n }\n }\n else {\n var disc = B * B - 4 * A * C;\n if (isAroundZero(disc)) {\n var K = B / A;\n var t1 = -b / a + K;\n var t2 = -K / 2;\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n if (t2 >= 0 && t2 <= 1) {\n roots[n++] = t2;\n }\n }\n else if (disc > 0) {\n var discSqrt = mathSqrt(disc);\n var Y1 = A * b + 1.5 * a * (-B + discSqrt);\n var Y2 = A * b + 1.5 * a * (-B - discSqrt);\n if (Y1 < 0) {\n Y1 = -mathPow(-Y1, ONE_THIRD);\n }\n else {\n Y1 = mathPow(Y1, ONE_THIRD);\n }\n if (Y2 < 0) {\n Y2 = -mathPow(-Y2, ONE_THIRD);\n }\n else {\n Y2 = mathPow(Y2, ONE_THIRD);\n }\n var t1 = (-b - (Y1 + Y2)) / (3 * a);\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n }\n else {\n var T = (2 * A * b - 3 * a * B) / (2 * mathSqrt(A * A * A));\n var theta = Math.acos(T) / 3;\n var ASqrt = mathSqrt(A);\n var tmp = Math.cos(theta);\n var t1 = (-b - 2 * ASqrt * tmp) / (3 * a);\n var t2 = (-b + ASqrt * (tmp + THREE_SQRT * Math.sin(theta))) / (3 * a);\n var t3 = (-b + ASqrt * (tmp - THREE_SQRT * Math.sin(theta))) / (3 * a);\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n if (t2 >= 0 && t2 <= 1) {\n roots[n++] = t2;\n }\n if (t3 >= 0 && t3 <= 1) {\n roots[n++] = t3;\n }\n }\n }\n return n;\n}\nexport function cubicExtrema(p0, p1, p2, p3, extrema) {\n var b = 6 * p2 - 12 * p1 + 6 * p0;\n var a = 9 * p1 + 3 * p3 - 3 * p0 - 9 * p2;\n var c = 3 * p1 - 3 * p0;\n var n = 0;\n if (isAroundZero(a)) {\n if (isNotAroundZero(b)) {\n var t1 = -c / b;\n if (t1 >= 0 && t1 <= 1) {\n extrema[n++] = t1;\n }\n }\n }\n else {\n var disc = b * b - 4 * a * c;\n if (isAroundZero(disc)) {\n extrema[0] = -b / (2 * a);\n }\n else if (disc > 0) {\n var discSqrt = mathSqrt(disc);\n var t1 = (-b + discSqrt) / (2 * a);\n var t2 = (-b - discSqrt) / (2 * a);\n if (t1 >= 0 && t1 <= 1) {\n extrema[n++] = t1;\n }\n if (t2 >= 0 && t2 <= 1) {\n extrema[n++] = t2;\n }\n }\n }\n return n;\n}\nexport function cubicSubdivide(p0, p1, p2, p3, t, out) {\n var p01 = (p1 - p0) * t + p0;\n var p12 = (p2 - p1) * t + p1;\n var p23 = (p3 - p2) * t + p2;\n var p012 = (p12 - p01) * t + p01;\n var p123 = (p23 - p12) * t + p12;\n var p0123 = (p123 - p012) * t + p012;\n out[0] = p0;\n out[1] = p01;\n out[2] = p012;\n out[3] = p0123;\n out[4] = p0123;\n out[5] = p123;\n out[6] = p23;\n out[7] = p3;\n}\nexport function cubicProjectPoint(x0, y0, x1, y1, x2, y2, x3, y3, x, y, out) {\n var t;\n var interval = 0.005;\n var d = Infinity;\n var prev;\n var next;\n var d1;\n var d2;\n _v0[0] = x;\n _v0[1] = y;\n for (var _t = 0; _t < 1; _t += 0.05) {\n _v1[0] = cubicAt(x0, x1, x2, x3, _t);\n _v1[1] = cubicAt(y0, y1, y2, y3, _t);\n d1 = v2DistSquare(_v0, _v1);\n if (d1 < d) {\n t = _t;\n d = d1;\n }\n }\n d = Infinity;\n for (var i = 0; i < 32; i++) {\n if (interval < EPSILON_NUMERIC) {\n break;\n }\n prev = t - interval;\n next = t + interval;\n _v1[0] = cubicAt(x0, x1, x2, x3, prev);\n _v1[1] = cubicAt(y0, y1, y2, y3, prev);\n d1 = v2DistSquare(_v1, _v0);\n if (prev >= 0 && d1 < d) {\n t = prev;\n d = d1;\n }\n else {\n _v2[0] = cubicAt(x0, x1, x2, x3, next);\n _v2[1] = cubicAt(y0, y1, y2, y3, next);\n d2 = v2DistSquare(_v2, _v0);\n if (next <= 1 && d2 < d) {\n t = next;\n d = d2;\n }\n else {\n interval *= 0.5;\n }\n }\n }\n if (out) {\n out[0] = cubicAt(x0, x1, x2, x3, t);\n out[1] = cubicAt(y0, y1, y2, y3, t);\n }\n return mathSqrt(d);\n}\nexport function cubicLength(x0, y0, x1, y1, x2, y2, x3, y3, iteration) {\n var px = x0;\n var py = y0;\n var d = 0;\n var step = 1 / iteration;\n for (var i = 1; i <= iteration; i++) {\n var t = i * step;\n var x = cubicAt(x0, x1, x2, x3, t);\n var y = cubicAt(y0, y1, y2, y3, t);\n var dx = x - px;\n var dy = y - py;\n d += Math.sqrt(dx * dx + dy * dy);\n px = x;\n py = y;\n }\n return d;\n}\nexport function quadraticAt(p0, p1, p2, t) {\n var onet = 1 - t;\n return onet * (onet * p0 + 2 * t * p1) + t * t * p2;\n}\nexport function quadraticDerivativeAt(p0, p1, p2, t) {\n return 2 * ((1 - t) * (p1 - p0) + t * (p2 - p1));\n}\nexport function quadraticRootAt(p0, p1, p2, val, roots) {\n var a = p0 - 2 * p1 + p2;\n var b = 2 * (p1 - p0);\n var c = p0 - val;\n var n = 0;\n if (isAroundZero(a)) {\n if (isNotAroundZero(b)) {\n var t1 = -c / b;\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n }\n }\n else {\n var disc = b * b - 4 * a * c;\n if (isAroundZero(disc)) {\n var t1 = -b / (2 * a);\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n }\n else if (disc > 0) {\n var discSqrt = mathSqrt(disc);\n var t1 = (-b + discSqrt) / (2 * a);\n var t2 = (-b - discSqrt) / (2 * a);\n if (t1 >= 0 && t1 <= 1) {\n roots[n++] = t1;\n }\n if (t2 >= 0 && t2 <= 1) {\n roots[n++] = t2;\n }\n }\n }\n return n;\n}\nexport function quadraticExtremum(p0, p1, p2) {\n var divider = p0 + p2 - 2 * p1;\n if (divider === 0) {\n return 0.5;\n }\n else {\n return (p0 - p1) / divider;\n }\n}\nexport function quadraticSubdivide(p0, p1, p2, t, out) {\n var p01 = (p1 - p0) * t + p0;\n var p12 = (p2 - p1) * t + p1;\n var p012 = (p12 - p01) * t + p01;\n out[0] = p0;\n out[1] = p01;\n out[2] = p012;\n out[3] = p012;\n out[4] = p12;\n out[5] = p2;\n}\nexport function quadraticProjectPoint(x0, y0, x1, y1, x2, y2, x, y, out) {\n var t;\n var interval = 0.005;\n var d = Infinity;\n _v0[0] = x;\n _v0[1] = y;\n for (var _t = 0; _t < 1; _t += 0.05) {\n _v1[0] = quadraticAt(x0, x1, x2, _t);\n _v1[1] = quadraticAt(y0, y1, y2, _t);\n var d1 = v2DistSquare(_v0, _v1);\n if (d1 < d) {\n t = _t;\n d = d1;\n }\n }\n d = Infinity;\n for (var i = 0; i < 32; i++) {\n if (interval < EPSILON_NUMERIC) {\n break;\n }\n var prev = t - interval;\n var next = t + interval;\n _v1[0] = quadraticAt(x0, x1, x2, prev);\n _v1[1] = quadraticAt(y0, y1, y2, prev);\n var d1 = v2DistSquare(_v1, _v0);\n if (prev >= 0 && d1 < d) {\n t = prev;\n d = d1;\n }\n else {\n _v2[0] = quadraticAt(x0, x1, x2, next);\n _v2[1] = quadraticAt(y0, y1, y2, next);\n var d2 = v2DistSquare(_v2, _v0);\n if (next <= 1 && d2 < d) {\n t = next;\n d = d2;\n }\n else {\n interval *= 0.5;\n }\n }\n }\n if (out) {\n out[0] = quadraticAt(x0, x1, x2, t);\n out[1] = quadraticAt(y0, y1, y2, t);\n }\n return mathSqrt(d);\n}\nexport function quadraticLength(x0, y0, x1, y1, x2, y2, iteration) {\n var px = x0;\n var py = y0;\n var d = 0;\n var step = 1 / iteration;\n for (var i = 1; i <= iteration; i++) {\n var t = i * step;\n var x = quadraticAt(x0, x1, x2, t);\n var y = quadraticAt(y0, y1, y2, t);\n var dx = x - px;\n var dy = y - py;\n d += Math.sqrt(dx * dx + dy * dy);\n px = x;\n py = y;\n }\n return d;\n}\n"]},"metadata":{},"sourceType":"module"}