qd-changjing/public/static/Build/CesiumUnminified/Workers/IntersectionTests-596e31ec....

1 line
108 KiB
Plaintext

{"version":3,"file":"IntersectionTests-596e31ec.js","sources":["../../../../Source/Core/QuadraticRealPolynomial.js","../../../../Source/Core/CubicRealPolynomial.js","../../../../Source/Core/QuarticRealPolynomial.js","../../../../Source/Core/Ray.js","../../../../Source/Core/IntersectionTests.js"],"sourcesContent":["import DeveloperError from \"./DeveloperError.js\";\nimport CesiumMath from \"./Math.js\";\n\n/**\n * Defines functions for 2nd order polynomial functions of one variable with only real coefficients.\n *\n * @namespace QuadraticRealPolynomial\n */\nconst QuadraticRealPolynomial = {};\n\n/**\n * Provides the discriminant of the quadratic equation from the supplied coefficients.\n *\n * @param {Number} a The coefficient of the 2nd order monomial.\n * @param {Number} b The coefficient of the 1st order monomial.\n * @param {Number} c The coefficient of the 0th order monomial.\n * @returns {Number} The value of the discriminant.\n */\nQuadraticRealPolynomial.computeDiscriminant = function (a, b, c) {\n //>>includeStart('debug', pragmas.debug);\n if (typeof a !== \"number\") {\n throw new DeveloperError(\"a is a required number.\");\n }\n if (typeof b !== \"number\") {\n throw new DeveloperError(\"b is a required number.\");\n }\n if (typeof c !== \"number\") {\n throw new DeveloperError(\"c is a required number.\");\n }\n //>>includeEnd('debug');\n\n const discriminant = b * b - 4.0 * a * c;\n return discriminant;\n};\n\nfunction addWithCancellationCheck(left, right, tolerance) {\n const difference = left + right;\n if (\n CesiumMath.sign(left) !== CesiumMath.sign(right) &&\n Math.abs(difference / Math.max(Math.abs(left), Math.abs(right))) < tolerance\n ) {\n return 0.0;\n }\n\n return difference;\n}\n\n/**\n * Provides the real valued roots of the quadratic polynomial with the provided coefficients.\n *\n * @param {Number} a The coefficient of the 2nd order monomial.\n * @param {Number} b The coefficient of the 1st order monomial.\n * @param {Number} c The coefficient of the 0th order monomial.\n * @returns {Number[]} The real valued roots.\n */\nQuadraticRealPolynomial.computeRealRoots = function (a, b, c) {\n //>>includeStart('debug', pragmas.debug);\n if (typeof a !== \"number\") {\n throw new DeveloperError(\"a is a required number.\");\n }\n if (typeof b !== \"number\") {\n throw new DeveloperError(\"b is a required number.\");\n }\n if (typeof c !== \"number\") {\n throw new DeveloperError(\"c is a required number.\");\n }\n //>>includeEnd('debug');\n\n let ratio;\n if (a === 0.0) {\n if (b === 0.0) {\n // Constant function: c = 0.\n return [];\n }\n\n // Linear function: b * x + c = 0.\n return [-c / b];\n } else if (b === 0.0) {\n if (c === 0.0) {\n // 2nd order monomial: a * x^2 = 0.\n return [0.0, 0.0];\n }\n\n const cMagnitude = Math.abs(c);\n const aMagnitude = Math.abs(a);\n\n if (\n cMagnitude < aMagnitude &&\n cMagnitude / aMagnitude < CesiumMath.EPSILON14\n ) {\n // c ~= 0.0.\n // 2nd order monomial: a * x^2 = 0.\n return [0.0, 0.0];\n } else if (\n cMagnitude > aMagnitude &&\n aMagnitude / cMagnitude < CesiumMath.EPSILON14\n ) {\n // a ~= 0.0.\n // Constant function: c = 0.\n return [];\n }\n\n // a * x^2 + c = 0\n ratio = -c / a;\n\n if (ratio < 0.0) {\n // Both roots are complex.\n return [];\n }\n\n // Both roots are real.\n const root = Math.sqrt(ratio);\n return [-root, root];\n } else if (c === 0.0) {\n // a * x^2 + b * x = 0\n ratio = -b / a;\n if (ratio < 0.0) {\n return [ratio, 0.0];\n }\n\n return [0.0, ratio];\n }\n\n // a * x^2 + b * x + c = 0\n const b2 = b * b;\n const four_ac = 4.0 * a * c;\n const radicand = addWithCancellationCheck(b2, -four_ac, CesiumMath.EPSILON14);\n\n if (radicand < 0.0) {\n // Both roots are complex.\n return [];\n }\n\n const q =\n -0.5 *\n addWithCancellationCheck(\n b,\n CesiumMath.sign(b) * Math.sqrt(radicand),\n CesiumMath.EPSILON14\n );\n if (b > 0.0) {\n return [q / a, c / q];\n }\n\n return [c / q, q / a];\n};\nexport default QuadraticRealPolynomial;\n","import DeveloperError from \"./DeveloperError.js\";\nimport QuadraticRealPolynomial from \"./QuadraticRealPolynomial.js\";\n\n/**\n * Defines functions for 3rd order polynomial functions of one variable with only real coefficients.\n *\n * @namespace CubicRealPolynomial\n */\nconst CubicRealPolynomial = {};\n\n/**\n * Provides the discriminant of the cubic equation from the supplied coefficients.\n *\n * @param {Number} a The coefficient of the 3rd order monomial.\n * @param {Number} b The coefficient of the 2nd order monomial.\n * @param {Number} c The coefficient of the 1st order monomial.\n * @param {Number} d The coefficient of the 0th order monomial.\n * @returns {Number} The value of the discriminant.\n */\nCubicRealPolynomial.computeDiscriminant = function (a, b, c, d) {\n //>>includeStart('debug', pragmas.debug);\n if (typeof a !== \"number\") {\n throw new DeveloperError(\"a is a required number.\");\n }\n if (typeof b !== \"number\") {\n throw new DeveloperError(\"b is a required number.\");\n }\n if (typeof c !== \"number\") {\n throw new DeveloperError(\"c is a required number.\");\n }\n if (typeof d !== \"number\") {\n throw new DeveloperError(\"d is a required number.\");\n }\n //>>includeEnd('debug');\n\n const a2 = a * a;\n const b2 = b * b;\n const c2 = c * c;\n const d2 = d * d;\n\n const discriminant =\n 18.0 * a * b * c * d +\n b2 * c2 -\n 27.0 * a2 * d2 -\n 4.0 * (a * c2 * c + b2 * b * d);\n return discriminant;\n};\n\nfunction computeRealRoots(a, b, c, d) {\n const A = a;\n const B = b / 3.0;\n const C = c / 3.0;\n const D = d;\n\n const AC = A * C;\n const BD = B * D;\n const B2 = B * B;\n const C2 = C * C;\n const delta1 = A * C - B2;\n const delta2 = A * D - B * C;\n const delta3 = B * D - C2;\n\n const discriminant = 4.0 * delta1 * delta3 - delta2 * delta2;\n let temp;\n let temp1;\n\n if (discriminant < 0.0) {\n let ABar;\n let CBar;\n let DBar;\n\n if (B2 * BD >= AC * C2) {\n ABar = A;\n CBar = delta1;\n DBar = -2.0 * B * delta1 + A * delta2;\n } else {\n ABar = D;\n CBar = delta3;\n DBar = -D * delta2 + 2.0 * C * delta3;\n }\n\n const s = DBar < 0.0 ? -1.0 : 1.0; // This is not Math.Sign()!\n const temp0 = -s * Math.abs(ABar) * Math.sqrt(-discriminant);\n temp1 = -DBar + temp0;\n\n const x = temp1 / 2.0;\n const p = x < 0.0 ? -Math.pow(-x, 1.0 / 3.0) : Math.pow(x, 1.0 / 3.0);\n const q = temp1 === temp0 ? -p : -CBar / p;\n\n temp = CBar <= 0.0 ? p + q : -DBar / (p * p + q * q + CBar);\n\n if (B2 * BD >= AC * C2) {\n return [(temp - B) / A];\n }\n\n return [-D / (temp + C)];\n }\n\n const CBarA = delta1;\n const DBarA = -2.0 * B * delta1 + A * delta2;\n\n const CBarD = delta3;\n const DBarD = -D * delta2 + 2.0 * C * delta3;\n\n const squareRootOfDiscriminant = Math.sqrt(discriminant);\n const halfSquareRootOf3 = Math.sqrt(3.0) / 2.0;\n\n let theta = Math.abs(Math.atan2(A * squareRootOfDiscriminant, -DBarA) / 3.0);\n temp = 2.0 * Math.sqrt(-CBarA);\n let cosine = Math.cos(theta);\n temp1 = temp * cosine;\n let temp3 = temp * (-cosine / 2.0 - halfSquareRootOf3 * Math.sin(theta));\n\n const numeratorLarge = temp1 + temp3 > 2.0 * B ? temp1 - B : temp3 - B;\n const denominatorLarge = A;\n\n const root1 = numeratorLarge / denominatorLarge;\n\n theta = Math.abs(Math.atan2(D * squareRootOfDiscriminant, -DBarD) / 3.0);\n temp = 2.0 * Math.sqrt(-CBarD);\n cosine = Math.cos(theta);\n temp1 = temp * cosine;\n temp3 = temp * (-cosine / 2.0 - halfSquareRootOf3 * Math.sin(theta));\n\n const numeratorSmall = -D;\n const denominatorSmall = temp1 + temp3 < 2.0 * C ? temp1 + C : temp3 + C;\n\n const root3 = numeratorSmall / denominatorSmall;\n\n const E = denominatorLarge * denominatorSmall;\n const F =\n -numeratorLarge * denominatorSmall - denominatorLarge * numeratorSmall;\n const G = numeratorLarge * numeratorSmall;\n\n const root2 = (C * F - B * G) / (-B * F + C * E);\n\n if (root1 <= root2) {\n if (root1 <= root3) {\n if (root2 <= root3) {\n return [root1, root2, root3];\n }\n return [root1, root3, root2];\n }\n return [root3, root1, root2];\n }\n if (root1 <= root3) {\n return [root2, root1, root3];\n }\n if (root2 <= root3) {\n return [root2, root3, root1];\n }\n return [root3, root2, root1];\n}\n\n/**\n * Provides the real valued roots of the cubic polynomial with the provided coefficients.\n *\n * @param {Number} a The coefficient of the 3rd order monomial.\n * @param {Number} b The coefficient of the 2nd order monomial.\n * @param {Number} c The coefficient of the 1st order monomial.\n * @param {Number} d The coefficient of the 0th order monomial.\n * @returns {Number[]} The real valued roots.\n */\nCubicRealPolynomial.computeRealRoots = function (a, b, c, d) {\n //>>includeStart('debug', pragmas.debug);\n if (typeof a !== \"number\") {\n throw new DeveloperError(\"a is a required number.\");\n }\n if (typeof b !== \"number\") {\n throw new DeveloperError(\"b is a required number.\");\n }\n if (typeof c !== \"number\") {\n throw new DeveloperError(\"c is a required number.\");\n }\n if (typeof d !== \"number\") {\n throw new DeveloperError(\"d is a required number.\");\n }\n //>>includeEnd('debug');\n\n let roots;\n let ratio;\n if (a === 0.0) {\n // Quadratic function: b * x^2 + c * x + d = 0.\n return QuadraticRealPolynomial.computeRealRoots(b, c, d);\n } else if (b === 0.0) {\n if (c === 0.0) {\n if (d === 0.0) {\n // 3rd order monomial: a * x^3 = 0.\n return [0.0, 0.0, 0.0];\n }\n\n // a * x^3 + d = 0\n ratio = -d / a;\n const root =\n ratio < 0.0 ? -Math.pow(-ratio, 1.0 / 3.0) : Math.pow(ratio, 1.0 / 3.0);\n return [root, root, root];\n } else if (d === 0.0) {\n // x * (a * x^2 + c) = 0.\n roots = QuadraticRealPolynomial.computeRealRoots(a, 0, c);\n\n // Return the roots in ascending order.\n if (roots.Length === 0) {\n return [0.0];\n }\n return [roots[0], 0.0, roots[1]];\n }\n\n // Deflated cubic polynomial: a * x^3 + c * x + d= 0.\n return computeRealRoots(a, 0, c, d);\n } else if (c === 0.0) {\n if (d === 0.0) {\n // x^2 * (a * x + b) = 0.\n ratio = -b / a;\n if (ratio < 0.0) {\n return [ratio, 0.0, 0.0];\n }\n return [0.0, 0.0, ratio];\n }\n // a * x^3 + b * x^2 + d = 0.\n return computeRealRoots(a, b, 0, d);\n } else if (d === 0.0) {\n // x * (a * x^2 + b * x + c) = 0\n roots = QuadraticRealPolynomial.computeRealRoots(a, b, c);\n\n // Return the roots in ascending order.\n if (roots.length === 0) {\n return [0.0];\n } else if (roots[1] <= 0.0) {\n return [roots[0], roots[1], 0.0];\n } else if (roots[0] >= 0.0) {\n return [0.0, roots[0], roots[1]];\n }\n return [roots[0], 0.0, roots[1]];\n }\n\n return computeRealRoots(a, b, c, d);\n};\nexport default CubicRealPolynomial;\n","import CubicRealPolynomial from \"./CubicRealPolynomial.js\";\nimport DeveloperError from \"./DeveloperError.js\";\nimport CesiumMath from \"./Math.js\";\nimport QuadraticRealPolynomial from \"./QuadraticRealPolynomial.js\";\n\n/**\n * Defines functions for 4th order polynomial functions of one variable with only real coefficients.\n *\n * @namespace QuarticRealPolynomial\n */\nconst QuarticRealPolynomial = {};\n\n/**\n * Provides the discriminant of the quartic equation from the supplied coefficients.\n *\n * @param {Number} a The coefficient of the 4th order monomial.\n * @param {Number} b The coefficient of the 3rd order monomial.\n * @param {Number} c The coefficient of the 2nd order monomial.\n * @param {Number} d The coefficient of the 1st order monomial.\n * @param {Number} e The coefficient of the 0th order monomial.\n * @returns {Number} The value of the discriminant.\n */\nQuarticRealPolynomial.computeDiscriminant = function (a, b, c, d, e) {\n //>>includeStart('debug', pragmas.debug);\n if (typeof a !== \"number\") {\n throw new DeveloperError(\"a is a required number.\");\n }\n if (typeof b !== \"number\") {\n throw new DeveloperError(\"b is a required number.\");\n }\n if (typeof c !== \"number\") {\n throw new DeveloperError(\"c is a required number.\");\n }\n if (typeof d !== \"number\") {\n throw new DeveloperError(\"d is a required number.\");\n }\n if (typeof e !== \"number\") {\n throw new DeveloperError(\"e is a required number.\");\n }\n //>>includeEnd('debug');\n\n const a2 = a * a;\n const a3 = a2 * a;\n const b2 = b * b;\n const b3 = b2 * b;\n const c2 = c * c;\n const c3 = c2 * c;\n const d2 = d * d;\n const d3 = d2 * d;\n const e2 = e * e;\n const e3 = e2 * e;\n\n const discriminant =\n b2 * c2 * d2 -\n 4.0 * b3 * d3 -\n 4.0 * a * c3 * d2 +\n 18 * a * b * c * d3 -\n 27.0 * a2 * d2 * d2 +\n 256.0 * a3 * e3 +\n e *\n (18.0 * b3 * c * d -\n 4.0 * b2 * c3 +\n 16.0 * a * c2 * c2 -\n 80.0 * a * b * c2 * d -\n 6.0 * a * b2 * d2 +\n 144.0 * a2 * c * d2) +\n e2 *\n (144.0 * a * b2 * c -\n 27.0 * b2 * b2 -\n 128.0 * a2 * c2 -\n 192.0 * a2 * b * d);\n return discriminant;\n};\n\nfunction original(a3, a2, a1, a0) {\n const a3Squared = a3 * a3;\n\n const p = a2 - (3.0 * a3Squared) / 8.0;\n const q = a1 - (a2 * a3) / 2.0 + (a3Squared * a3) / 8.0;\n const r =\n a0 -\n (a1 * a3) / 4.0 +\n (a2 * a3Squared) / 16.0 -\n (3.0 * a3Squared * a3Squared) / 256.0;\n\n // Find the roots of the cubic equations: h^6 + 2 p h^4 + (p^2 - 4 r) h^2 - q^2 = 0.\n const cubicRoots = CubicRealPolynomial.computeRealRoots(\n 1.0,\n 2.0 * p,\n p * p - 4.0 * r,\n -q * q\n );\n\n if (cubicRoots.length > 0) {\n const temp = -a3 / 4.0;\n\n // Use the largest positive root.\n const hSquared = cubicRoots[cubicRoots.length - 1];\n\n if (Math.abs(hSquared) < CesiumMath.EPSILON14) {\n // y^4 + p y^2 + r = 0.\n const roots = QuadraticRealPolynomial.computeRealRoots(1.0, p, r);\n\n if (roots.length === 2) {\n const root0 = roots[0];\n const root1 = roots[1];\n\n let y;\n if (root0 >= 0.0 && root1 >= 0.0) {\n const y0 = Math.sqrt(root0);\n const y1 = Math.sqrt(root1);\n\n return [temp - y1, temp - y0, temp + y0, temp + y1];\n } else if (root0 >= 0.0 && root1 < 0.0) {\n y = Math.sqrt(root0);\n return [temp - y, temp + y];\n } else if (root0 < 0.0 && root1 >= 0.0) {\n y = Math.sqrt(root1);\n return [temp - y, temp + y];\n }\n }\n return [];\n } else if (hSquared > 0.0) {\n const h = Math.sqrt(hSquared);\n\n const m = (p + hSquared - q / h) / 2.0;\n const n = (p + hSquared + q / h) / 2.0;\n\n // Now solve the two quadratic factors: (y^2 + h y + m)(y^2 - h y + n);\n const roots1 = QuadraticRealPolynomial.computeRealRoots(1.0, h, m);\n const roots2 = QuadraticRealPolynomial.computeRealRoots(1.0, -h, n);\n\n if (roots1.length !== 0) {\n roots1[0] += temp;\n roots1[1] += temp;\n\n if (roots2.length !== 0) {\n roots2[0] += temp;\n roots2[1] += temp;\n\n if (roots1[1] <= roots2[0]) {\n return [roots1[0], roots1[1], roots2[0], roots2[1]];\n } else if (roots2[1] <= roots1[0]) {\n return [roots2[0], roots2[1], roots1[0], roots1[1]];\n } else if (roots1[0] >= roots2[0] && roots1[1] <= roots2[1]) {\n return [roots2[0], roots1[0], roots1[1], roots2[1]];\n } else if (roots2[0] >= roots1[0] && roots2[1] <= roots1[1]) {\n return [roots1[0], roots2[0], roots2[1], roots1[1]];\n } else if (roots1[0] > roots2[0] && roots1[0] < roots2[1]) {\n return [roots2[0], roots1[0], roots2[1], roots1[1]];\n }\n return [roots1[0], roots2[0], roots1[1], roots2[1]];\n }\n return roots1;\n }\n\n if (roots2.length !== 0) {\n roots2[0] += temp;\n roots2[1] += temp;\n\n return roots2;\n }\n return [];\n }\n }\n return [];\n}\n\nfunction neumark(a3, a2, a1, a0) {\n const a1Squared = a1 * a1;\n const a2Squared = a2 * a2;\n const a3Squared = a3 * a3;\n\n const p = -2.0 * a2;\n const q = a1 * a3 + a2Squared - 4.0 * a0;\n const r = a3Squared * a0 - a1 * a2 * a3 + a1Squared;\n\n const cubicRoots = CubicRealPolynomial.computeRealRoots(1.0, p, q, r);\n\n if (cubicRoots.length > 0) {\n // Use the most positive root\n const y = cubicRoots[0];\n\n const temp = a2 - y;\n const tempSquared = temp * temp;\n\n const g1 = a3 / 2.0;\n const h1 = temp / 2.0;\n\n const m = tempSquared - 4.0 * a0;\n const mError = tempSquared + 4.0 * Math.abs(a0);\n\n const n = a3Squared - 4.0 * y;\n const nError = a3Squared + 4.0 * Math.abs(y);\n\n let g2;\n let h2;\n\n if (y < 0.0 || m * nError < n * mError) {\n const squareRootOfN = Math.sqrt(n);\n g2 = squareRootOfN / 2.0;\n h2 = squareRootOfN === 0.0 ? 0.0 : (a3 * h1 - a1) / squareRootOfN;\n } else {\n const squareRootOfM = Math.sqrt(m);\n g2 = squareRootOfM === 0.0 ? 0.0 : (a3 * h1 - a1) / squareRootOfM;\n h2 = squareRootOfM / 2.0;\n }\n\n let G;\n let g;\n if (g1 === 0.0 && g2 === 0.0) {\n G = 0.0;\n g = 0.0;\n } else if (CesiumMath.sign(g1) === CesiumMath.sign(g2)) {\n G = g1 + g2;\n g = y / G;\n } else {\n g = g1 - g2;\n G = y / g;\n }\n\n let H;\n let h;\n if (h1 === 0.0 && h2 === 0.0) {\n H = 0.0;\n h = 0.0;\n } else if (CesiumMath.sign(h1) === CesiumMath.sign(h2)) {\n H = h1 + h2;\n h = a0 / H;\n } else {\n h = h1 - h2;\n H = a0 / h;\n }\n\n // Now solve the two quadratic factors: (y^2 + G y + H)(y^2 + g y + h);\n const roots1 = QuadraticRealPolynomial.computeRealRoots(1.0, G, H);\n const roots2 = QuadraticRealPolynomial.computeRealRoots(1.0, g, h);\n\n if (roots1.length !== 0) {\n if (roots2.length !== 0) {\n if (roots1[1] <= roots2[0]) {\n return [roots1[0], roots1[1], roots2[0], roots2[1]];\n } else if (roots2[1] <= roots1[0]) {\n return [roots2[0], roots2[1], roots1[0], roots1[1]];\n } else if (roots1[0] >= roots2[0] && roots1[1] <= roots2[1]) {\n return [roots2[0], roots1[0], roots1[1], roots2[1]];\n } else if (roots2[0] >= roots1[0] && roots2[1] <= roots1[1]) {\n return [roots1[0], roots2[0], roots2[1], roots1[1]];\n } else if (roots1[0] > roots2[0] && roots1[0] < roots2[1]) {\n return [roots2[0], roots1[0], roots2[1], roots1[1]];\n }\n return [roots1[0], roots2[0], roots1[1], roots2[1]];\n }\n return roots1;\n }\n if (roots2.length !== 0) {\n return roots2;\n }\n }\n return [];\n}\n\n/**\n * Provides the real valued roots of the quartic polynomial with the provided coefficients.\n *\n * @param {Number} a The coefficient of the 4th order monomial.\n * @param {Number} b The coefficient of the 3rd order monomial.\n * @param {Number} c The coefficient of the 2nd order monomial.\n * @param {Number} d The coefficient of the 1st order monomial.\n * @param {Number} e The coefficient of the 0th order monomial.\n * @returns {Number[]} The real valued roots.\n */\nQuarticRealPolynomial.computeRealRoots = function (a, b, c, d, e) {\n //>>includeStart('debug', pragmas.debug);\n if (typeof a !== \"number\") {\n throw new DeveloperError(\"a is a required number.\");\n }\n if (typeof b !== \"number\") {\n throw new DeveloperError(\"b is a required number.\");\n }\n if (typeof c !== \"number\") {\n throw new DeveloperError(\"c is a required number.\");\n }\n if (typeof d !== \"number\") {\n throw new DeveloperError(\"d is a required number.\");\n }\n if (typeof e !== \"number\") {\n throw new DeveloperError(\"e is a required number.\");\n }\n //>>includeEnd('debug');\n\n if (Math.abs(a) < CesiumMath.EPSILON15) {\n return CubicRealPolynomial.computeRealRoots(b, c, d, e);\n }\n const a3 = b / a;\n const a2 = c / a;\n const a1 = d / a;\n const a0 = e / a;\n\n let k = a3 < 0.0 ? 1 : 0;\n k += a2 < 0.0 ? k + 1 : k;\n k += a1 < 0.0 ? k + 1 : k;\n k += a0 < 0.0 ? k + 1 : k;\n\n switch (k) {\n case 0:\n return original(a3, a2, a1, a0);\n case 1:\n return neumark(a3, a2, a1, a0);\n case 2:\n return neumark(a3, a2, a1, a0);\n case 3:\n return original(a3, a2, a1, a0);\n case 4:\n return original(a3, a2, a1, a0);\n case 5:\n return neumark(a3, a2, a1, a0);\n case 6:\n return original(a3, a2, a1, a0);\n case 7:\n return original(a3, a2, a1, a0);\n case 8:\n return neumark(a3, a2, a1, a0);\n case 9:\n return original(a3, a2, a1, a0);\n case 10:\n return original(a3, a2, a1, a0);\n case 11:\n return neumark(a3, a2, a1, a0);\n case 12:\n return original(a3, a2, a1, a0);\n case 13:\n return original(a3, a2, a1, a0);\n case 14:\n return original(a3, a2, a1, a0);\n case 15:\n return original(a3, a2, a1, a0);\n default:\n return undefined;\n }\n};\nexport default QuarticRealPolynomial;\n","import Cartesian3 from \"./Cartesian3.js\";\nimport Check from \"./Check.js\";\nimport defaultValue from \"./defaultValue.js\";\nimport defined from \"./defined.js\";\n\n/**\n * Represents a ray that extends infinitely from the provided origin in the provided direction.\n * @alias Ray\n * @constructor\n *\n * @param {Cartesian3} [origin=Cartesian3.ZERO] The origin of the ray.\n * @param {Cartesian3} [direction=Cartesian3.ZERO] The direction of the ray.\n */\nfunction Ray(origin, direction) {\n direction = Cartesian3.clone(defaultValue(direction, Cartesian3.ZERO));\n if (!Cartesian3.equals(direction, Cartesian3.ZERO)) {\n Cartesian3.normalize(direction, direction);\n }\n\n /**\n * The origin of the ray.\n * @type {Cartesian3}\n * @default {@link Cartesian3.ZERO}\n */\n this.origin = Cartesian3.clone(defaultValue(origin, Cartesian3.ZERO));\n\n /**\n * The direction of the ray.\n * @type {Cartesian3}\n */\n this.direction = direction;\n}\n\n/**\n * Duplicates a Ray instance.\n *\n * @param {Ray} ray The ray to duplicate.\n * @param {Ray} [result] The object onto which to store the result.\n * @returns {Ray} The modified result parameter or a new Ray instance if one was not provided. (Returns undefined if ray is undefined)\n */\nRay.clone = function (ray, result) {\n if (!defined(ray)) {\n return undefined;\n }\n if (!defined(result)) {\n return new Ray(ray.origin, ray.direction);\n }\n result.origin = Cartesian3.clone(ray.origin);\n result.direction = Cartesian3.clone(ray.direction);\n return result;\n};\n\n/**\n * Computes the point along the ray given by r(t) = o + t*d,\n * where o is the origin of the ray and d is the direction.\n *\n * @param {Ray} ray The ray.\n * @param {Number} t A scalar value.\n * @param {Cartesian3} [result] The object in which the result will be stored.\n * @returns {Cartesian3} The modified result parameter, or a new instance if none was provided.\n *\n * @example\n * //Get the first intersection point of a ray and an ellipsoid.\n * const intersection = Cesium.IntersectionTests.rayEllipsoid(ray, ellipsoid);\n * const point = Cesium.Ray.getPoint(ray, intersection.start);\n */\nRay.getPoint = function (ray, t, result) {\n //>>includeStart('debug', pragmas.debug);\n Check.typeOf.object(\"ray\", ray);\n Check.typeOf.number(\"t\", t);\n //>>includeEnd('debug');\n\n if (!defined(result)) {\n result = new Cartesian3();\n }\n\n result = Cartesian3.multiplyByScalar(ray.direction, t, result);\n return Cartesian3.add(ray.origin, result, result);\n};\nexport default Ray;\n","import Cartesian3 from \"./Cartesian3.js\";\nimport Cartographic from \"./Cartographic.js\";\nimport defaultValue from \"./defaultValue.js\";\nimport defined from \"./defined.js\";\nimport DeveloperError from \"./DeveloperError.js\";\nimport Interval from \"./Interval.js\";\nimport CesiumMath from \"./Math.js\";\nimport Matrix3 from \"./Matrix3.js\";\nimport QuadraticRealPolynomial from \"./QuadraticRealPolynomial.js\";\nimport QuarticRealPolynomial from \"./QuarticRealPolynomial.js\";\nimport Ray from \"./Ray.js\";\n\n/**\n * Functions for computing the intersection between geometries such as rays, planes, triangles, and ellipsoids.\n *\n * @namespace IntersectionTests\n */\nconst IntersectionTests = {};\n\n/**\n * Computes the intersection of a ray and a plane.\n *\n * @param {Ray} ray The ray.\n * @param {Plane} plane The plane.\n * @param {Cartesian3} [result] The object onto which to store the result.\n * @returns {Cartesian3} The intersection point or undefined if there is no intersections.\n */\nIntersectionTests.rayPlane = function (ray, plane, result) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(ray)) {\n throw new DeveloperError(\"ray is required.\");\n }\n if (!defined(plane)) {\n throw new DeveloperError(\"plane is required.\");\n }\n //>>includeEnd('debug');\n\n if (!defined(result)) {\n result = new Cartesian3();\n }\n\n const origin = ray.origin;\n const direction = ray.direction;\n const normal = plane.normal;\n const denominator = Cartesian3.dot(normal, direction);\n\n if (Math.abs(denominator) < CesiumMath.EPSILON15) {\n // Ray is parallel to plane. The ray may be in the polygon's plane.\n return undefined;\n }\n\n const t = (-plane.distance - Cartesian3.dot(normal, origin)) / denominator;\n\n if (t < 0) {\n return undefined;\n }\n\n result = Cartesian3.multiplyByScalar(direction, t, result);\n return Cartesian3.add(origin, result, result);\n};\n\nconst scratchEdge0 = new Cartesian3();\nconst scratchEdge1 = new Cartesian3();\nconst scratchPVec = new Cartesian3();\nconst scratchTVec = new Cartesian3();\nconst scratchQVec = new Cartesian3();\n\n/**\n * Computes the intersection of a ray and a triangle as a parametric distance along the input ray. The result is negative when the triangle is behind the ray.\n *\n * Implements {@link https://cadxfem.org/inf/Fast%20MinimumStorage%20RayTriangle%20Intersection.pdf|\n * Fast Minimum Storage Ray/Triangle Intersection} by Tomas Moller and Ben Trumbore.\n *\n * @memberof IntersectionTests\n *\n * @param {Ray} ray The ray.\n * @param {Cartesian3} p0 The first vertex of the triangle.\n * @param {Cartesian3} p1 The second vertex of the triangle.\n * @param {Cartesian3} p2 The third vertex of the triangle.\n * @param {Boolean} [cullBackFaces=false] If <code>true</code>, will only compute an intersection with the front face of the triangle\n * and return undefined for intersections with the back face.\n * @returns {Number} The intersection as a parametric distance along the ray, or undefined if there is no intersection.\n */\nIntersectionTests.rayTriangleParametric = function (\n ray,\n p0,\n p1,\n p2,\n cullBackFaces\n) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(ray)) {\n throw new DeveloperError(\"ray is required.\");\n }\n if (!defined(p0)) {\n throw new DeveloperError(\"p0 is required.\");\n }\n if (!defined(p1)) {\n throw new DeveloperError(\"p1 is required.\");\n }\n if (!defined(p2)) {\n throw new DeveloperError(\"p2 is required.\");\n }\n //>>includeEnd('debug');\n\n cullBackFaces = defaultValue(cullBackFaces, false);\n\n const origin = ray.origin;\n const direction = ray.direction;\n\n const edge0 = Cartesian3.subtract(p1, p0, scratchEdge0);\n const edge1 = Cartesian3.subtract(p2, p0, scratchEdge1);\n\n const p = Cartesian3.cross(direction, edge1, scratchPVec);\n const det = Cartesian3.dot(edge0, p);\n\n let tvec;\n let q;\n\n let u;\n let v;\n let t;\n\n if (cullBackFaces) {\n if (det < CesiumMath.EPSILON6) {\n return undefined;\n }\n\n tvec = Cartesian3.subtract(origin, p0, scratchTVec);\n u = Cartesian3.dot(tvec, p);\n if (u < 0.0 || u > det) {\n return undefined;\n }\n\n q = Cartesian3.cross(tvec, edge0, scratchQVec);\n\n v = Cartesian3.dot(direction, q);\n if (v < 0.0 || u + v > det) {\n return undefined;\n }\n\n t = Cartesian3.dot(edge1, q) / det;\n } else {\n if (Math.abs(det) < CesiumMath.EPSILON6) {\n return undefined;\n }\n const invDet = 1.0 / det;\n\n tvec = Cartesian3.subtract(origin, p0, scratchTVec);\n u = Cartesian3.dot(tvec, p) * invDet;\n if (u < 0.0 || u > 1.0) {\n return undefined;\n }\n\n q = Cartesian3.cross(tvec, edge0, scratchQVec);\n\n v = Cartesian3.dot(direction, q) * invDet;\n if (v < 0.0 || u + v > 1.0) {\n return undefined;\n }\n\n t = Cartesian3.dot(edge1, q) * invDet;\n }\n\n return t;\n};\n\n/**\n * Computes the intersection of a ray and a triangle as a Cartesian3 coordinate.\n *\n * Implements {@link https://cadxfem.org/inf/Fast%20MinimumStorage%20RayTriangle%20Intersection.pdf|\n * Fast Minimum Storage Ray/Triangle Intersection} by Tomas Moller and Ben Trumbore.\n *\n * @memberof IntersectionTests\n *\n * @param {Ray} ray The ray.\n * @param {Cartesian3} p0 The first vertex of the triangle.\n * @param {Cartesian3} p1 The second vertex of the triangle.\n * @param {Cartesian3} p2 The third vertex of the triangle.\n * @param {Boolean} [cullBackFaces=false] If <code>true</code>, will only compute an intersection with the front face of the triangle\n * and return undefined for intersections with the back face.\n * @param {Cartesian3} [result] The <code>Cartesian3</code> onto which to store the result.\n * @returns {Cartesian3} The intersection point or undefined if there is no intersections.\n */\nIntersectionTests.rayTriangle = function (\n ray,\n p0,\n p1,\n p2,\n cullBackFaces,\n result\n) {\n const t = IntersectionTests.rayTriangleParametric(\n ray,\n p0,\n p1,\n p2,\n cullBackFaces\n );\n if (!defined(t) || t < 0.0) {\n return undefined;\n }\n\n if (!defined(result)) {\n result = new Cartesian3();\n }\n\n Cartesian3.multiplyByScalar(ray.direction, t, result);\n return Cartesian3.add(ray.origin, result, result);\n};\n\nconst scratchLineSegmentTriangleRay = new Ray();\n\n/**\n * Computes the intersection of a line segment and a triangle.\n * @memberof IntersectionTests\n *\n * @param {Cartesian3} v0 The an end point of the line segment.\n * @param {Cartesian3} v1 The other end point of the line segment.\n * @param {Cartesian3} p0 The first vertex of the triangle.\n * @param {Cartesian3} p1 The second vertex of the triangle.\n * @param {Cartesian3} p2 The third vertex of the triangle.\n * @param {Boolean} [cullBackFaces=false] If <code>true</code>, will only compute an intersection with the front face of the triangle\n * and return undefined for intersections with the back face.\n * @param {Cartesian3} [result] The <code>Cartesian3</code> onto which to store the result.\n * @returns {Cartesian3} The intersection point or undefined if there is no intersections.\n */\nIntersectionTests.lineSegmentTriangle = function (\n v0,\n v1,\n p0,\n p1,\n p2,\n cullBackFaces,\n result\n) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(v0)) {\n throw new DeveloperError(\"v0 is required.\");\n }\n if (!defined(v1)) {\n throw new DeveloperError(\"v1 is required.\");\n }\n if (!defined(p0)) {\n throw new DeveloperError(\"p0 is required.\");\n }\n if (!defined(p1)) {\n throw new DeveloperError(\"p1 is required.\");\n }\n if (!defined(p2)) {\n throw new DeveloperError(\"p2 is required.\");\n }\n //>>includeEnd('debug');\n\n const ray = scratchLineSegmentTriangleRay;\n Cartesian3.clone(v0, ray.origin);\n Cartesian3.subtract(v1, v0, ray.direction);\n Cartesian3.normalize(ray.direction, ray.direction);\n\n const t = IntersectionTests.rayTriangleParametric(\n ray,\n p0,\n p1,\n p2,\n cullBackFaces\n );\n if (!defined(t) || t < 0.0 || t > Cartesian3.distance(v0, v1)) {\n return undefined;\n }\n\n if (!defined(result)) {\n result = new Cartesian3();\n }\n\n Cartesian3.multiplyByScalar(ray.direction, t, result);\n return Cartesian3.add(ray.origin, result, result);\n};\n\nfunction solveQuadratic(a, b, c, result) {\n const det = b * b - 4.0 * a * c;\n if (det < 0.0) {\n return undefined;\n } else if (det > 0.0) {\n const denom = 1.0 / (2.0 * a);\n const disc = Math.sqrt(det);\n const root0 = (-b + disc) * denom;\n const root1 = (-b - disc) * denom;\n\n if (root0 < root1) {\n result.root0 = root0;\n result.root1 = root1;\n } else {\n result.root0 = root1;\n result.root1 = root0;\n }\n\n return result;\n }\n\n const root = -b / (2.0 * a);\n if (root === 0.0) {\n return undefined;\n }\n\n result.root0 = result.root1 = root;\n return result;\n}\n\nconst raySphereRoots = {\n root0: 0.0,\n root1: 0.0,\n};\n\nfunction raySphere(ray, sphere, result) {\n if (!defined(result)) {\n result = new Interval();\n }\n\n const origin = ray.origin;\n const direction = ray.direction;\n\n const center = sphere.center;\n const radiusSquared = sphere.radius * sphere.radius;\n\n const diff = Cartesian3.subtract(origin, center, scratchPVec);\n\n const a = Cartesian3.dot(direction, direction);\n const b = 2.0 * Cartesian3.dot(direction, diff);\n const c = Cartesian3.magnitudeSquared(diff) - radiusSquared;\n\n const roots = solveQuadratic(a, b, c, raySphereRoots);\n if (!defined(roots)) {\n return undefined;\n }\n\n result.start = roots.root0;\n result.stop = roots.root1;\n return result;\n}\n\n/**\n * Computes the intersection points of a ray with a sphere.\n * @memberof IntersectionTests\n *\n * @param {Ray} ray The ray.\n * @param {BoundingSphere} sphere The sphere.\n * @param {Interval} [result] The result onto which to store the result.\n * @returns {Interval} The interval containing scalar points along the ray or undefined if there are no intersections.\n */\nIntersectionTests.raySphere = function (ray, sphere, result) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(ray)) {\n throw new DeveloperError(\"ray is required.\");\n }\n if (!defined(sphere)) {\n throw new DeveloperError(\"sphere is required.\");\n }\n //>>includeEnd('debug');\n\n result = raySphere(ray, sphere, result);\n if (!defined(result) || result.stop < 0.0) {\n return undefined;\n }\n\n result.start = Math.max(result.start, 0.0);\n return result;\n};\n\nconst scratchLineSegmentRay = new Ray();\n\n/**\n * Computes the intersection points of a line segment with a sphere.\n * @memberof IntersectionTests\n *\n * @param {Cartesian3} p0 An end point of the line segment.\n * @param {Cartesian3} p1 The other end point of the line segment.\n * @param {BoundingSphere} sphere The sphere.\n * @param {Interval} [result] The result onto which to store the result.\n * @returns {Interval} The interval containing scalar points along the ray or undefined if there are no intersections.\n */\nIntersectionTests.lineSegmentSphere = function (p0, p1, sphere, result) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(p0)) {\n throw new DeveloperError(\"p0 is required.\");\n }\n if (!defined(p1)) {\n throw new DeveloperError(\"p1 is required.\");\n }\n if (!defined(sphere)) {\n throw new DeveloperError(\"sphere is required.\");\n }\n //>>includeEnd('debug');\n\n const ray = scratchLineSegmentRay;\n Cartesian3.clone(p0, ray.origin);\n const direction = Cartesian3.subtract(p1, p0, ray.direction);\n\n const maxT = Cartesian3.magnitude(direction);\n Cartesian3.normalize(direction, direction);\n\n result = raySphere(ray, sphere, result);\n if (!defined(result) || result.stop < 0.0 || result.start > maxT) {\n return undefined;\n }\n\n result.start = Math.max(result.start, 0.0);\n result.stop = Math.min(result.stop, maxT);\n return result;\n};\n\nconst scratchQ = new Cartesian3();\nconst scratchW = new Cartesian3();\n\n/**\n * Computes the intersection points of a ray with an ellipsoid.\n *\n * @param {Ray} ray The ray.\n * @param {Ellipsoid} ellipsoid The ellipsoid.\n * @returns {Interval} The interval containing scalar points along the ray or undefined if there are no intersections.\n */\nIntersectionTests.rayEllipsoid = function (ray, ellipsoid) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(ray)) {\n throw new DeveloperError(\"ray is required.\");\n }\n if (!defined(ellipsoid)) {\n throw new DeveloperError(\"ellipsoid is required.\");\n }\n //>>includeEnd('debug');\n\n const inverseRadii = ellipsoid.oneOverRadii;\n const q = Cartesian3.multiplyComponents(inverseRadii, ray.origin, scratchQ);\n const w = Cartesian3.multiplyComponents(\n inverseRadii,\n ray.direction,\n scratchW\n );\n\n const q2 = Cartesian3.magnitudeSquared(q);\n const qw = Cartesian3.dot(q, w);\n\n let difference, w2, product, discriminant, temp;\n\n if (q2 > 1.0) {\n // Outside ellipsoid.\n if (qw >= 0.0) {\n // Looking outward or tangent (0 intersections).\n return undefined;\n }\n\n // qw < 0.0.\n const qw2 = qw * qw;\n difference = q2 - 1.0; // Positively valued.\n w2 = Cartesian3.magnitudeSquared(w);\n product = w2 * difference;\n\n if (qw2 < product) {\n // Imaginary roots (0 intersections).\n return undefined;\n } else if (qw2 > product) {\n // Distinct roots (2 intersections).\n discriminant = qw * qw - product;\n temp = -qw + Math.sqrt(discriminant); // Avoid cancellation.\n const root0 = temp / w2;\n const root1 = difference / temp;\n if (root0 < root1) {\n return new Interval(root0, root1);\n }\n\n return {\n start: root1,\n stop: root0,\n };\n }\n // qw2 == product. Repeated roots (2 intersections).\n const root = Math.sqrt(difference / w2);\n return new Interval(root, root);\n } else if (q2 < 1.0) {\n // Inside ellipsoid (2 intersections).\n difference = q2 - 1.0; // Negatively valued.\n w2 = Cartesian3.magnitudeSquared(w);\n product = w2 * difference; // Negatively valued.\n\n discriminant = qw * qw - product;\n temp = -qw + Math.sqrt(discriminant); // Positively valued.\n return new Interval(0.0, temp / w2);\n }\n // q2 == 1.0. On ellipsoid.\n if (qw < 0.0) {\n // Looking inward.\n w2 = Cartesian3.magnitudeSquared(w);\n return new Interval(0.0, -qw / w2);\n }\n\n // qw >= 0.0. Looking outward or tangent.\n return undefined;\n};\n\nfunction addWithCancellationCheck(left, right, tolerance) {\n const difference = left + right;\n if (\n CesiumMath.sign(left) !== CesiumMath.sign(right) &&\n Math.abs(difference / Math.max(Math.abs(left), Math.abs(right))) < tolerance\n ) {\n return 0.0;\n }\n\n return difference;\n}\n\nfunction quadraticVectorExpression(A, b, c, x, w) {\n const xSquared = x * x;\n const wSquared = w * w;\n\n const l2 = (A[Matrix3.COLUMN1ROW1] - A[Matrix3.COLUMN2ROW2]) * wSquared;\n const l1 =\n w *\n (x *\n addWithCancellationCheck(\n A[Matrix3.COLUMN1ROW0],\n A[Matrix3.COLUMN0ROW1],\n CesiumMath.EPSILON15\n ) +\n b.y);\n const l0 =\n A[Matrix3.COLUMN0ROW0] * xSquared +\n A[Matrix3.COLUMN2ROW2] * wSquared +\n x * b.x +\n c;\n\n const r1 =\n wSquared *\n addWithCancellationCheck(\n A[Matrix3.COLUMN2ROW1],\n A[Matrix3.COLUMN1ROW2],\n CesiumMath.EPSILON15\n );\n const r0 =\n w *\n (x *\n addWithCancellationCheck(A[Matrix3.COLUMN2ROW0], A[Matrix3.COLUMN0ROW2]) +\n b.z);\n\n let cosines;\n const solutions = [];\n if (r0 === 0.0 && r1 === 0.0) {\n cosines = QuadraticRealPolynomial.computeRealRoots(l2, l1, l0);\n if (cosines.length === 0) {\n return solutions;\n }\n\n const cosine0 = cosines[0];\n const sine0 = Math.sqrt(Math.max(1.0 - cosine0 * cosine0, 0.0));\n solutions.push(new Cartesian3(x, w * cosine0, w * -sine0));\n solutions.push(new Cartesian3(x, w * cosine0, w * sine0));\n\n if (cosines.length === 2) {\n const cosine1 = cosines[1];\n const sine1 = Math.sqrt(Math.max(1.0 - cosine1 * cosine1, 0.0));\n solutions.push(new Cartesian3(x, w * cosine1, w * -sine1));\n solutions.push(new Cartesian3(x, w * cosine1, w * sine1));\n }\n\n return solutions;\n }\n\n const r0Squared = r0 * r0;\n const r1Squared = r1 * r1;\n const l2Squared = l2 * l2;\n const r0r1 = r0 * r1;\n\n const c4 = l2Squared + r1Squared;\n const c3 = 2.0 * (l1 * l2 + r0r1);\n const c2 = 2.0 * l0 * l2 + l1 * l1 - r1Squared + r0Squared;\n const c1 = 2.0 * (l0 * l1 - r0r1);\n const c0 = l0 * l0 - r0Squared;\n\n if (c4 === 0.0 && c3 === 0.0 && c2 === 0.0 && c1 === 0.0) {\n return solutions;\n }\n\n cosines = QuarticRealPolynomial.computeRealRoots(c4, c3, c2, c1, c0);\n const length = cosines.length;\n if (length === 0) {\n return solutions;\n }\n\n for (let i = 0; i < length; ++i) {\n const cosine = cosines[i];\n const cosineSquared = cosine * cosine;\n const sineSquared = Math.max(1.0 - cosineSquared, 0.0);\n const sine = Math.sqrt(sineSquared);\n\n //const left = l2 * cosineSquared + l1 * cosine + l0;\n let left;\n if (CesiumMath.sign(l2) === CesiumMath.sign(l0)) {\n left = addWithCancellationCheck(\n l2 * cosineSquared + l0,\n l1 * cosine,\n CesiumMath.EPSILON12\n );\n } else if (CesiumMath.sign(l0) === CesiumMath.sign(l1 * cosine)) {\n left = addWithCancellationCheck(\n l2 * cosineSquared,\n l1 * cosine + l0,\n CesiumMath.EPSILON12\n );\n } else {\n left = addWithCancellationCheck(\n l2 * cosineSquared + l1 * cosine,\n l0,\n CesiumMath.EPSILON12\n );\n }\n\n const right = addWithCancellationCheck(\n r1 * cosine,\n r0,\n CesiumMath.EPSILON15\n );\n const product = left * right;\n\n if (product < 0.0) {\n solutions.push(new Cartesian3(x, w * cosine, w * sine));\n } else if (product > 0.0) {\n solutions.push(new Cartesian3(x, w * cosine, w * -sine));\n } else if (sine !== 0.0) {\n solutions.push(new Cartesian3(x, w * cosine, w * -sine));\n solutions.push(new Cartesian3(x, w * cosine, w * sine));\n ++i;\n } else {\n solutions.push(new Cartesian3(x, w * cosine, w * sine));\n }\n }\n\n return solutions;\n}\n\nconst firstAxisScratch = new Cartesian3();\nconst secondAxisScratch = new Cartesian3();\nconst thirdAxisScratch = new Cartesian3();\nconst referenceScratch = new Cartesian3();\nconst bCart = new Cartesian3();\nconst bScratch = new Matrix3();\nconst btScratch = new Matrix3();\nconst diScratch = new Matrix3();\nconst dScratch = new Matrix3();\nconst cScratch = new Matrix3();\nconst tempMatrix = new Matrix3();\nconst aScratch = new Matrix3();\nconst sScratch = new Cartesian3();\nconst closestScratch = new Cartesian3();\nconst surfPointScratch = new Cartographic();\n\n/**\n * Provides the point along the ray which is nearest to the ellipsoid.\n *\n * @param {Ray} ray The ray.\n * @param {Ellipsoid} ellipsoid The ellipsoid.\n * @returns {Cartesian3} The nearest planetodetic point on the ray.\n */\nIntersectionTests.grazingAltitudeLocation = function (ray, ellipsoid) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(ray)) {\n throw new DeveloperError(\"ray is required.\");\n }\n if (!defined(ellipsoid)) {\n throw new DeveloperError(\"ellipsoid is required.\");\n }\n //>>includeEnd('debug');\n\n const position = ray.origin;\n const direction = ray.direction;\n\n if (!Cartesian3.equals(position, Cartesian3.ZERO)) {\n const normal = ellipsoid.geodeticSurfaceNormal(position, firstAxisScratch);\n if (Cartesian3.dot(direction, normal) >= 0.0) {\n // The location provided is the closest point in altitude\n return position;\n }\n }\n\n const intersects = defined(this.rayEllipsoid(ray, ellipsoid));\n\n // Compute the scaled direction vector.\n const f = ellipsoid.transformPositionToScaledSpace(\n direction,\n firstAxisScratch\n );\n\n // Constructs a basis from the unit scaled direction vector. Construct its rotation and transpose.\n const firstAxis = Cartesian3.normalize(f, f);\n const reference = Cartesian3.mostOrthogonalAxis(f, referenceScratch);\n const secondAxis = Cartesian3.normalize(\n Cartesian3.cross(reference, firstAxis, secondAxisScratch),\n secondAxisScratch\n );\n const thirdAxis = Cartesian3.normalize(\n Cartesian3.cross(firstAxis, secondAxis, thirdAxisScratch),\n thirdAxisScratch\n );\n const B = bScratch;\n B[0] = firstAxis.x;\n B[1] = firstAxis.y;\n B[2] = firstAxis.z;\n B[3] = secondAxis.x;\n B[4] = secondAxis.y;\n B[5] = secondAxis.z;\n B[6] = thirdAxis.x;\n B[7] = thirdAxis.y;\n B[8] = thirdAxis.z;\n\n const B_T = Matrix3.transpose(B, btScratch);\n\n // Get the scaling matrix and its inverse.\n const D_I = Matrix3.fromScale(ellipsoid.radii, diScratch);\n const D = Matrix3.fromScale(ellipsoid.oneOverRadii, dScratch);\n\n const C = cScratch;\n C[0] = 0.0;\n C[1] = -direction.z;\n C[2] = direction.y;\n C[3] = direction.z;\n C[4] = 0.0;\n C[5] = -direction.x;\n C[6] = -direction.y;\n C[7] = direction.x;\n C[8] = 0.0;\n\n const temp = Matrix3.multiply(\n Matrix3.multiply(B_T, D, tempMatrix),\n C,\n tempMatrix\n );\n const A = Matrix3.multiply(\n Matrix3.multiply(temp, D_I, aScratch),\n B,\n aScratch\n );\n const b = Matrix3.multiplyByVector(temp, position, bCart);\n\n // Solve for the solutions to the expression in standard form:\n const solutions = quadraticVectorExpression(\n A,\n Cartesian3.negate(b, firstAxisScratch),\n 0.0,\n 0.0,\n 1.0\n );\n\n let s;\n let altitude;\n const length = solutions.length;\n if (length > 0) {\n let closest = Cartesian3.clone(Cartesian3.ZERO, closestScratch);\n let maximumValue = Number.NEGATIVE_INFINITY;\n\n for (let i = 0; i < length; ++i) {\n s = Matrix3.multiplyByVector(\n D_I,\n Matrix3.multiplyByVector(B, solutions[i], sScratch),\n sScratch\n );\n const v = Cartesian3.normalize(\n Cartesian3.subtract(s, position, referenceScratch),\n referenceScratch\n );\n const dotProduct = Cartesian3.dot(v, direction);\n\n if (dotProduct > maximumValue) {\n maximumValue = dotProduct;\n closest = Cartesian3.clone(s, closest);\n }\n }\n\n const surfacePoint = ellipsoid.cartesianToCartographic(\n closest,\n surfPointScratch\n );\n maximumValue = CesiumMath.clamp(maximumValue, 0.0, 1.0);\n altitude =\n Cartesian3.magnitude(\n Cartesian3.subtract(closest, position, referenceScratch)\n ) * Math.sqrt(1.0 - maximumValue * maximumValue);\n altitude = intersects ? -altitude : altitude;\n surfacePoint.height = altitude;\n return ellipsoid.cartographicToCartesian(surfacePoint, new Cartesian3());\n }\n\n return undefined;\n};\n\nconst lineSegmentPlaneDifference = new Cartesian3();\n\n/**\n * Computes the intersection of a line segment and a plane.\n *\n * @param {Cartesian3} endPoint0 An end point of the line segment.\n * @param {Cartesian3} endPoint1 The other end point of the line segment.\n * @param {Plane} plane The plane.\n * @param {Cartesian3} [result] The object onto which to store the result.\n * @returns {Cartesian3} The intersection point or undefined if there is no intersection.\n *\n * @example\n * const origin = Cesium.Cartesian3.fromDegrees(-75.59777, 40.03883);\n * const normal = ellipsoid.geodeticSurfaceNormal(origin);\n * const plane = Cesium.Plane.fromPointNormal(origin, normal);\n *\n * const p0 = new Cesium.Cartesian3(...);\n * const p1 = new Cesium.Cartesian3(...);\n *\n * // find the intersection of the line segment from p0 to p1 and the tangent plane at origin.\n * const intersection = Cesium.IntersectionTests.lineSegmentPlane(p0, p1, plane);\n */\nIntersectionTests.lineSegmentPlane = function (\n endPoint0,\n endPoint1,\n plane,\n result\n) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(endPoint0)) {\n throw new DeveloperError(\"endPoint0 is required.\");\n }\n if (!defined(endPoint1)) {\n throw new DeveloperError(\"endPoint1 is required.\");\n }\n if (!defined(plane)) {\n throw new DeveloperError(\"plane is required.\");\n }\n //>>includeEnd('debug');\n\n if (!defined(result)) {\n result = new Cartesian3();\n }\n\n const difference = Cartesian3.subtract(\n endPoint1,\n endPoint0,\n lineSegmentPlaneDifference\n );\n const normal = plane.normal;\n const nDotDiff = Cartesian3.dot(normal, difference);\n\n // check if the segment and plane are parallel\n if (Math.abs(nDotDiff) < CesiumMath.EPSILON6) {\n return undefined;\n }\n\n const nDotP0 = Cartesian3.dot(normal, endPoint0);\n const t = -(plane.distance + nDotP0) / nDotDiff;\n\n // intersection only if t is in [0, 1]\n if (t < 0.0 || t > 1.0) {\n return undefined;\n }\n\n // intersection is endPoint0 + t * (endPoint1 - endPoint0)\n Cartesian3.multiplyByScalar(difference, t, result);\n Cartesian3.add(endPoint0, result, result);\n return result;\n};\n\n/**\n * Computes the intersection of a triangle and a plane\n *\n * @param {Cartesian3} p0 First point of the triangle\n * @param {Cartesian3} p1 Second point of the triangle\n * @param {Cartesian3} p2 Third point of the triangle\n * @param {Plane} plane Intersection plane\n * @returns {Object} An object with properties <code>positions</code> and <code>indices</code>, which are arrays that represent three triangles that do not cross the plane. (Undefined if no intersection exists)\n *\n * @example\n * const origin = Cesium.Cartesian3.fromDegrees(-75.59777, 40.03883);\n * const normal = ellipsoid.geodeticSurfaceNormal(origin);\n * const plane = Cesium.Plane.fromPointNormal(origin, normal);\n *\n * const p0 = new Cesium.Cartesian3(...);\n * const p1 = new Cesium.Cartesian3(...);\n * const p2 = new Cesium.Cartesian3(...);\n *\n * // convert the triangle composed of points (p0, p1, p2) to three triangles that don't cross the plane\n * const triangles = Cesium.IntersectionTests.trianglePlaneIntersection(p0, p1, p2, plane);\n */\nIntersectionTests.trianglePlaneIntersection = function (p0, p1, p2, plane) {\n //>>includeStart('debug', pragmas.debug);\n if (!defined(p0) || !defined(p1) || !defined(p2) || !defined(plane)) {\n throw new DeveloperError(\"p0, p1, p2, and plane are required.\");\n }\n //>>includeEnd('debug');\n\n const planeNormal = plane.normal;\n const planeD = plane.distance;\n const p0Behind = Cartesian3.dot(planeNormal, p0) + planeD < 0.0;\n const p1Behind = Cartesian3.dot(planeNormal, p1) + planeD < 0.0;\n const p2Behind = Cartesian3.dot(planeNormal, p2) + planeD < 0.0;\n // Given these dots products, the calls to lineSegmentPlaneIntersection\n // always have defined results.\n\n let numBehind = 0;\n numBehind += p0Behind ? 1 : 0;\n numBehind += p1Behind ? 1 : 0;\n numBehind += p2Behind ? 1 : 0;\n\n let u1, u2;\n if (numBehind === 1 || numBehind === 2) {\n u1 = new Cartesian3();\n u2 = new Cartesian3();\n }\n\n if (numBehind === 1) {\n if (p0Behind) {\n IntersectionTests.lineSegmentPlane(p0, p1, plane, u1);\n IntersectionTests.lineSegmentPlane(p0, p2, plane, u2);\n\n return {\n positions: [p0, p1, p2, u1, u2],\n indices: [\n // Behind\n 0,\n 3,\n 4,\n\n // In front\n 1,\n 2,\n 4,\n 1,\n 4,\n 3,\n ],\n };\n } else if (p1Behind) {\n IntersectionTests.lineSegmentPlane(p1, p2, plane, u1);\n IntersectionTests.lineSegmentPlane(p1, p0, plane, u2);\n\n return {\n positions: [p0, p1, p2, u1, u2],\n indices: [\n // Behind\n 1,\n 3,\n 4,\n\n // In front\n 2,\n 0,\n 4,\n 2,\n 4,\n 3,\n ],\n };\n } else if (p2Behind) {\n IntersectionTests.lineSegmentPlane(p2, p0, plane, u1);\n IntersectionTests.lineSegmentPlane(p2, p1, plane, u2);\n\n return {\n positions: [p0, p1, p2, u1, u2],\n indices: [\n // Behind\n 2,\n 3,\n 4,\n\n // In front\n 0,\n 1,\n 4,\n 0,\n 4,\n 3,\n ],\n };\n }\n } else if (numBehind === 2) {\n if (!p0Behind) {\n IntersectionTests.lineSegmentPlane(p1, p0, plane, u1);\n IntersectionTests.lineSegmentPlane(p2, p0, plane, u2);\n\n return {\n positions: [p0, p1, p2, u1, u2],\n indices: [\n // Behind\n 1,\n 2,\n 4,\n 1,\n 4,\n 3,\n\n // In front\n 0,\n 3,\n 4,\n ],\n };\n } else if (!p1Behind) {\n IntersectionTests.lineSegmentPlane(p2, p1, plane, u1);\n IntersectionTests.lineSegmentPlane(p0, p1, plane, u2);\n\n return {\n positions: [p0, p1, p2, u1, u2],\n indices: [\n // Behind\n 2,\n 0,\n 4,\n 2,\n 4,\n 3,\n\n // In front\n 1,\n 3,\n 4,\n ],\n };\n } else if (!p2Behind) {\n IntersectionTests.lineSegmentPlane(p0, p2, plane, u1);\n IntersectionTests.lineSegmentPlane(p1, p2, plane, u2);\n\n return {\n positions: [p0, p1, p2, u1, u2],\n indices: [\n // Behind\n 0,\n 1,\n 4,\n 0,\n 4,\n 3,\n\n // In front\n 2,\n 3,\n 4,\n ],\n };\n }\n }\n\n // if numBehind is 3, the triangle is completely behind the plane;\n // otherwise, it is completely in front (numBehind is 0).\n return undefined;\n};\nexport default IntersectionTests;\n"],"names":["DeveloperError","addWithCancellationCheck","CesiumMath","Cartesian3","defaultValue","defined","Check","Interval","Matrix3","Cartographic"],"mappings":"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"}