{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 721d699df897b6eaf5c7","webpack:///./vector3.js","webpack:///./math.js","webpack:///./quaternion.js","webpack:///./Line3.js","webpack:///./lineSegment.js","webpack:///./matrix4.js","webpack:///./plane.js","webpack:///./point.js","webpack:///./rect.js","webpack:///./index.js"],"names":["Vector3","x","y","z","prototype","constructor","set","setX","setY","setZ","setComponent","index","value","Error","getComponent","copy","v","add","w","undefined","console","warn","addVectors","addScalar","s","a","b","sub","subVectors","multiply","multiplyVectors","multiplyScalar","scalar","applyAxisAngle","quaternion","axis","angle","applyQuaternion","setFromAxisAngle","applyMatrix3","m","e","elements","applyMatrix4","applyProjection","d","q","qx","qy","qz","qw","ix","iy","iz","iw","transformDirection","normalize","divide","divideScalar","invScalar","min","max","clamp","clampScalar","minVal","maxVal","floor","Math","ceil","round","roundToZero","negate","dot","lengthSq","length","sqrt","lengthManhattan","abs","setLength","l","oldLength","lerp","alpha","cross","crossVectors","ax","ay","az","bx","by","bz","projectOnVector","v1","vector","projectOnPlane","planeNormal","reflect","normal","angleTo","theta","acos","distanceTo","distanceToSquared","dx","dy","dz","setFromMatrixPosition","setFromMatrixScale","sx","sy","sz","setFromMatrixColumn","matrix","offset","me","equals","fromArray","array","toArray","clone","degToRad","degrees","degreeToRadiansFactor","PI","radToDeg","radians","radianToDegreesFactor","sign","NaN","Quaternion","halfAngle","sin","cos","multiplyQuaternions","qax","qay","qaz","qaw","qbx","qby","qbz","qbw","setFromRotationMatrix","te","m11","m12","m13","m21","m22","m23","m31","m32","m33","trace","Line3","start","end","cornerstoneMath","line","optionalTarget","result","t","delta","startP","startEnd","point","clampToLine","startEnd2","startEnd_startP","closestPointToPointParameter","da","db","dc","daCrossDb","dcCrossDb","isNaN","intersection","distanceTest","distanceSq","sqr","dist2","distanceToPointSquared","lineSegment","l2","pt","distanceToPoint","intersectLine","lineSegment1","lineSegment2","intersectionPoint","x1","y1","x2","y2","x3","y3","x4","y4","a1","a2","b1","b2","c1","c2","r1","r2","r3","r4","denom","num","parseFloat","Matrix4","n11","n12","n13","n14","n21","n22","n23","n24","n31","n32","n33","n34","n41","n42","n43","n44","Float32Array","makeRotationFromQuaternion","z2","xx","xy","xz","yy","yz","zz","wx","wy","wz","multiplyMatrices","ae","be","a11","a12","a13","a14","a21","a22","a23","a24","a31","a32","a33","a34","a41","a42","a43","a44","b11","b12","b13","b14","b21","b22","b23","b24","b31","b32","b33","b34","b41","b42","b43","b44","n","getInverse","throwOnInvertible","det","msg","identity","applyToVector3Array","i","j","makeTranslation","makeScale","Plane","constant","setComponents","setFromNormalAndCoplanarPoint","setFromCoplanarPoints","v2","c","plane","inverseNormalLength","distanceToSphere","sphere","center","radius","projectPoint","orthoPoint","perpendicularMagnitude","isIntersectionLine","startSign","endSign","direction","denominator","intersectPlane","targetPlane","origin","intersectionData","h1","h2","n1dotn2","coplanarPoint","translate","pageToPoint","pageX","pageY","subtract","lhs","rhs","distance","from","to","distanceSquared","insideRect","rect","left","width","top","height","findClosestPoint","sources","target","distances","minDistance","forEach","source","push","indexOf","rectToLineSegments","right","bottom","lineSegments","rectToPoints","rectPoints","topLeft","bottomRight","doesIntersect","rect1","rect2","intersectLeftRight","intersectTopBottom","rect1Points","rect2Points","getIntersectionRect","intersectRect","default"],"mappings":"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","file":"cornerstoneMath.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"cornerstoneMath\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"cornerstoneMath\"] = factory();\n\telse\n\t\troot[\"cornerstoneMath\"] = factory();\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 9);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 721d699df897b6eaf5c7","import Quaternion from './quaternion.js';\nimport { clamp } from './math.js';\n\n// Based on THREE.JS\nconst Vector3 = function (x, y, z) {\n\n this.x = x || 0;\n this.y = y || 0;\n this.z = z || 0;\n\n};\n\nVector3.prototype = {\n\n constructor: Vector3,\n\n set (x, y, z) {\n\n this.x = x;\n this.y = y;\n this.z = z;\n\n return this;\n\n },\n\n setX (x) {\n\n this.x = x;\n\n return this;\n\n },\n\n setY (y) {\n\n this.y = y;\n\n return this;\n\n },\n\n setZ (z) {\n\n this.z = z;\n\n return this;\n\n },\n\n setComponent (index, value) {\n\n switch (index) {\n\n case 0: this.x = value; break;\n case 1: this.y = value; break;\n case 2: this.z = value; break;\n default: throw new Error(`index is out of range: ${index}`);\n\n }\n\n },\n\n getComponent (index) {\n\n switch (index) {\n\n case 0: return this.x;\n case 1: return this.y;\n case 2: return this.z;\n default: throw new Error(`index is out of range: ${index}`);\n\n }\n\n },\n\n copy (v) {\n\n this.x = v.x;\n this.y = v.y;\n this.z = v.z;\n\n return this;\n\n },\n\n add (v, w) {\n\n if (w !== undefined) {\n\n console.warn('DEPRECATED: Vector3\\'s .add() now only accepts one argument. Use .addVectors( a, b ) instead.');\n\n return this.addVectors(v, w);\n\n }\n\n this.x += v.x;\n this.y += v.y;\n this.z += v.z;\n\n return this;\n\n },\n\n addScalar (s) {\n\n this.x += s;\n this.y += s;\n this.z += s;\n\n return this;\n\n },\n\n addVectors (a, b) {\n\n this.x = a.x + b.x;\n this.y = a.y + b.y;\n this.z = a.z + b.z;\n\n return this;\n\n },\n\n sub (v, w) {\n\n if (w !== undefined) {\n\n console.warn('DEPRECATED: Vector3\\'s .sub() now only accepts one argument. Use .subVectors( a, b ) instead.');\n\n return this.subVectors(v, w);\n\n }\n\n this.x -= v.x;\n this.y -= v.y;\n this.z -= v.z;\n\n return this;\n\n },\n\n subVectors (a, b) {\n\n this.x = a.x - b.x;\n this.y = a.y - b.y;\n this.z = a.z - b.z;\n\n return this;\n\n },\n\n multiply (v, w) {\n\n if (w !== undefined) {\n\n console.warn('DEPRECATED: Vector3\\'s .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.');\n\n return this.multiplyVectors(v, w);\n\n }\n\n this.x *= v.x;\n this.y *= v.y;\n this.z *= v.z;\n\n return this;\n\n },\n\n multiplyScalar (scalar) {\n\n this.x *= scalar;\n this.y *= scalar;\n this.z *= scalar;\n\n return this;\n\n },\n\n multiplyVectors (a, b) {\n\n this.x = a.x * b.x;\n this.y = a.y * b.y;\n this.z = a.z * b.z;\n\n return this;\n\n },\n\n\n applyAxisAngle: (function () {\n\n let quaternion;\n\n return function (axis, angle) {\n\n if (quaternion === undefined) {\n quaternion = new Quaternion();\n }\n\n this.applyQuaternion(quaternion.setFromAxisAngle(axis, angle));\n\n return this;\n\n };\n\n })(),\n\n applyMatrix3 (m) {\n\n const x = this.x;\n const y = this.y;\n const z = this.z;\n\n const e = m.elements;\n\n this.x = e[0] * x + e[3] * y + e[6] * z;\n this.y = e[1] * x + e[4] * y + e[7] * z;\n this.z = e[2] * x + e[5] * y + e[8] * z;\n\n return this;\n\n },\n\n applyMatrix4 (m) {\n\n // Input: THREE.Matrix4 affine matrix\n\n let x = this.x,\n y = this.y,\n z = this.z;\n\n const e = m.elements;\n\n this.x = e[0] * x + e[4] * y + e[8] * z + e[12];\n this.y = e[1] * x + e[5] * y + e[9] * z + e[13];\n this.z = e[2] * x + e[6] * y + e[10] * z + e[14];\n\n return this;\n\n },\n\n applyProjection (m) {\n\n // Input: THREE.Matrix4 projection matrix\n\n let x = this.x,\n y = this.y,\n z = this.z;\n\n const e = m.elements;\n const d = 1 / (e[3] * x + e[7] * y + e[11] * z + e[15]); // Perspective divide\n\n this.x = (e[0] * x + e[4] * y + e[8] * z + e[12]) * d;\n this.y = (e[1] * x + e[5] * y + e[9] * z + e[13]) * d;\n this.z = (e[2] * x + e[6] * y + e[10] * z + e[14]) * d;\n\n return this;\n\n },\n\n applyQuaternion (q) {\n\n const x = this.x;\n const y = this.y;\n const z = this.z;\n\n const qx = q.x;\n const qy = q.y;\n const qz = q.z;\n const qw = q.w;\n\n // Calculate quat * vector\n\n const ix = qw * x + qy * z - qz * y;\n const iy = qw * y + qz * x - qx * z;\n const iz = qw * z + qx * y - qy * x;\n const iw = -qx * x - qy * y - qz * z;\n\n // Calculate result * inverse quat\n\n this.x = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n this.y = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n this.z = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n\n return this;\n\n },\n\n transformDirection (m) {\n\n // Input: THREE.Matrix4 affine matrix\n // Vector interpreted as a direction\n\n let x = this.x,\n y = this.y,\n z = this.z;\n\n const e = m.elements;\n\n this.x = e[0] * x + e[4] * y + e[8] * z;\n this.y = e[1] * x + e[5] * y + e[9] * z;\n this.z = e[2] * x + e[6] * y + e[10] * z;\n\n this.normalize();\n\n return this;\n\n },\n\n divide (v) {\n\n this.x /= v.x;\n this.y /= v.y;\n this.z /= v.z;\n\n return this;\n\n },\n\n divideScalar (scalar) {\n\n if (scalar !== 0) {\n\n const invScalar = 1 / scalar;\n\n this.x *= invScalar;\n this.y *= invScalar;\n this.z *= invScalar;\n\n } else {\n\n this.x = 0;\n this.y = 0;\n this.z = 0;\n\n }\n\n return this;\n\n },\n\n min (v) {\n\n if (this.x > v.x) {\n\n this.x = v.x;\n\n }\n\n if (this.y > v.y) {\n\n this.y = v.y;\n\n }\n\n if (this.z > v.z) {\n\n this.z = v.z;\n\n }\n\n return this;\n\n },\n\n max (v) {\n\n if (this.x < v.x) {\n\n this.x = v.x;\n\n }\n\n if (this.y < v.y) {\n\n this.y = v.y;\n\n }\n\n if (this.z < v.z) {\n\n this.z = v.z;\n\n }\n\n return this;\n\n },\n\n clamp (min, max) {\n\n // This function assumes min < max, if this assumption isn't true it will not operate correctly\n\n if (this.x < min.x) {\n\n this.x = min.x;\n\n } else if (this.x > max.x) {\n\n this.x = max.x;\n\n }\n\n if (this.y < min.y) {\n\n this.y = min.y;\n\n } else if (this.y > max.y) {\n\n this.y = max.y;\n\n }\n\n if (this.z < min.z) {\n\n this.z = min.z;\n\n } else if (this.z > max.z) {\n\n this.z = max.z;\n\n }\n\n return this;\n\n },\n\n clampScalar: (function () {\n\n let min, max;\n\n return function (minVal, maxVal) {\n\n if (min === undefined) {\n\n min = new Vector3();\n max = new Vector3();\n\n }\n\n min.set(minVal, minVal, minVal);\n max.set(maxVal, maxVal, maxVal);\n\n return this.clamp(min, max);\n\n };\n\n })(),\n\n floor () {\n\n this.x = Math.floor(this.x);\n this.y = Math.floor(this.y);\n this.z = Math.floor(this.z);\n\n return this;\n\n },\n\n ceil () {\n\n this.x = Math.ceil(this.x);\n this.y = Math.ceil(this.y);\n this.z = Math.ceil(this.z);\n\n return this;\n\n },\n\n round () {\n\n this.x = Math.round(this.x);\n this.y = Math.round(this.y);\n this.z = Math.round(this.z);\n\n return this;\n\n },\n\n roundToZero () {\n\n this.x = (this.x < 0) ? Math.ceil(this.x) : Math.floor(this.x);\n this.y = (this.y < 0) ? Math.ceil(this.y) : Math.floor(this.y);\n this.z = (this.z < 0) ? Math.ceil(this.z) : Math.floor(this.z);\n\n return this;\n\n },\n\n negate () {\n\n return this.multiplyScalar(-1);\n\n },\n\n dot (v) {\n\n return this.x * v.x + this.y * v.y + this.z * v.z;\n\n },\n\n lengthSq () {\n\n return this.x * this.x + this.y * this.y + this.z * this.z;\n\n },\n\n length () {\n\n return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);\n\n },\n\n lengthManhattan () {\n\n return Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z);\n\n },\n\n normalize () {\n\n return this.divideScalar(this.length());\n\n },\n\n setLength (l) {\n\n const oldLength = this.length();\n\n if (oldLength !== 0 && l !== oldLength) {\n\n this.multiplyScalar(l / oldLength);\n }\n\n return this;\n\n },\n\n lerp (v, alpha) {\n\n this.x += (v.x - this.x) * alpha;\n this.y += (v.y - this.y) * alpha;\n this.z += (v.z - this.z) * alpha;\n\n return this;\n\n },\n\n cross (v, w) {\n\n if (w !== undefined) {\n\n console.warn('DEPRECATED: Vector3\\'s .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.');\n\n return this.crossVectors(v, w);\n\n }\n\n let x = this.x,\n y = this.y,\n z = this.z;\n\n this.x = y * v.z - z * v.y;\n this.y = z * v.x - x * v.z;\n this.z = x * v.y - y * v.x;\n\n return this;\n\n },\n\n crossVectors (a, b) {\n\n let ax = a.x,\n ay = a.y,\n az = a.z;\n let bx = b.x,\n by = b.y,\n bz = b.z;\n\n this.x = ay * bz - az * by;\n this.y = az * bx - ax * bz;\n this.z = ax * by - ay * bx;\n\n return this;\n\n },\n\n projectOnVector: (function () {\n\n let v1, dot;\n\n return function (vector) {\n\n if (v1 === undefined) {\n v1 = new Vector3();\n }\n\n v1.copy(vector).normalize();\n\n dot = this.dot(v1);\n\n return this.copy(v1).multiplyScalar(dot);\n\n };\n\n })(),\n\n projectOnPlane: (function () {\n\n let v1;\n\n return function (planeNormal) {\n\n if (v1 === undefined) {\n v1 = new Vector3();\n }\n\n v1.copy(this).projectOnVector(planeNormal);\n\n return this.sub(v1);\n\n };\n\n })(),\n\n reflect: (function () {\n\n // Reflect incident vector off plane orthogonal to normal\n // Normal is assumed to have unit length\n\n let v1;\n\n return function (normal) {\n\n if (v1 === undefined) {\n v1 = new Vector3();\n }\n\n return this.sub(v1.copy(normal).multiplyScalar(2 * this.dot(normal)));\n\n };\n\n })(),\n\n angleTo (v) {\n\n const theta = this.dot(v) / (this.length() * v.length());\n\n // Clamp, to handle numerical problems\n\n return Math.acos(clamp(theta, -1, 1));\n\n },\n\n distanceTo (v) {\n\n return Math.sqrt(this.distanceToSquared(v));\n\n },\n\n distanceToSquared (v) {\n\n const dx = this.x - v.x;\n const dy = this.y - v.y;\n const dz = this.z - v.z;\n\n return dx * dx + dy * dy + dz * dz;\n\n },\n\n setFromMatrixPosition (m) {\n\n this.x = m.elements[12];\n this.y = m.elements[13];\n this.z = m.elements[14];\n\n return this;\n\n },\n\n setFromMatrixScale (m) {\n\n const sx = this.set(m.elements[0], m.elements[1], m.elements[2]).length();\n const sy = this.set(m.elements[4], m.elements[5], m.elements[6]).length();\n const sz = this.set(m.elements[8], m.elements[9], m.elements[10]).length();\n\n this.x = sx;\n this.y = sy;\n this.z = sz;\n\n return this;\n },\n\n setFromMatrixColumn (index, matrix) {\n\n const offset = index * 4;\n\n const me = matrix.elements;\n\n this.x = me[offset];\n this.y = me[offset + 1];\n this.z = me[offset + 2];\n\n return this;\n\n },\n\n equals (v) {\n\n return ((v.x === this.x) && (v.y === this.y) && (v.z === this.z));\n\n },\n\n fromArray (array) {\n\n this.x = array[0];\n this.y = array[1];\n this.z = array[2];\n\n return this;\n\n },\n\n toArray () {\n\n return [this.x, this.y, this.z];\n\n },\n\n clone () {\n\n return new Vector3(this.x, this.y, this.z);\n\n }\n\n};\n\nexport default Vector3;\n\n\n\n// WEBPACK FOOTER //\n// ./vector3.js","// Based on THREE.JS\nfunction clamp (x, a, b) {\n return (x < a) ? a : ((x > b) ? b : x);\n}\n\nfunction degToRad (degrees) {\n const degreeToRadiansFactor = Math.PI / 180;\n\n\n return degrees * degreeToRadiansFactor;\n}\n\nfunction radToDeg (radians) {\n const radianToDegreesFactor = 180 / Math.PI;\n\n\n return radians * radianToDegreesFactor;\n}\n\n// Returns sign of number\nfunction sign (x) {\n return typeof x === 'number' ? x ? x < 0 ? -1 : 1 : x === x ? 0 : NaN : NaN;\n}\n\nexport {\n clamp,\n degToRad,\n radToDeg,\n sign\n};\n\n\n\n// WEBPACK FOOTER //\n// ./math.js","const Quaternion = function Quaternion (x, y, z, w) {\n this.x = x || 0;\n this.y = y || 0;\n this.z = z || 0;\n this.w = (w !== undefined) ? w : 1;\n};\n\nQuaternion.prototype.setFromAxisAngle = function (axis, angle) {\n let halfAngle = angle / 2,\n s = Math.sin(halfAngle);\n\n this.x = axis.x * s;\n this.y = axis.y * s;\n this.z = axis.z * s;\n this.w = Math.cos(halfAngle);\n\n return this;\n};\n\nQuaternion.prototype.multiplyQuaternions = function (a, b) {\n let qax = a.x,\n qay = a.y,\n qaz = a.z,\n qaw = a.w;\n let qbx = b.x,\n qby = b.y,\n qbz = b.z,\n qbw = b.w;\n\n this.x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n this.y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n this.z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n this.w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n\n return this;\n};\n\nQuaternion.prototype.setFromRotationMatrix = function (m) {\n let te = m.elements,\n\n m11 = te[0],\n m12 = te[4],\n m13 = te[8],\n m21 = te[1],\n m22 = te[5],\n m23 = te[9],\n m31 = te[2],\n m32 = te[6],\n m33 = te[10],\n\n trace = m11 + m22 + m33,\n s;\n\n if (trace > 0) {\n\n s = 0.5 / Math.sqrt(trace + 1.0);\n\n this.w = 0.25 / s;\n this.x = (m32 - m23) * s;\n this.y = (m13 - m31) * s;\n this.z = (m21 - m12) * s;\n\n } else if (m11 > m22 && m11 > m33) {\n\n s = 2.0 * Math.sqrt(1.0 + m11 - m22 - m33);\n\n this.w = (m32 - m23) / s;\n this.x = 0.25 * s;\n this.y = (m12 + m21) / s;\n this.z = (m13 + m31) / s;\n\n } else if (m22 > m33) {\n\n s = 2.0 * Math.sqrt(1.0 + m22 - m11 - m33);\n\n this.w = (m13 - m31) / s;\n this.x = (m12 + m21) / s;\n this.y = 0.25 * s;\n this.z = (m23 + m32) / s;\n\n } else {\n\n s = 2.0 * Math.sqrt(1.0 + m33 - m11 - m22);\n\n this.w = (m21 - m12) / s;\n this.x = (m13 + m31) / s;\n this.y = (m23 + m32) / s;\n this.z = 0.25 * s;\n\n }\n\n return this;\n};\n\nexport default Quaternion;\n\n\n\n// WEBPACK FOOTER //\n// ./quaternion.js","// Copied from THREE.JS\n/**\n * @author bhouston / http://exocortex.com\n */\n\n\nclass Line3 {\n constructor (start, end) {\n\n this.start = (start !== undefined) ? start : new cornerstoneMath.Vector3();\n this.end = (end !== undefined) ? end : new cornerstoneMath.Vector3();\n\n }\n\n set (start, end) {\n\n this.start.copy(start);\n this.end.copy(end);\n\n return this;\n\n }\n\n copy (line) {\n\n this.start.copy(line.start);\n this.end.copy(line.end);\n\n return this;\n\n }\n\n center (optionalTarget) {\n\n const result = optionalTarget || new cornerstoneMath.Vector3();\n\n\n return result.addVectors(this.start, this.end).multiplyScalar(0.5);\n\n }\n\n delta (optionalTarget) {\n\n const result = optionalTarget || new cornerstoneMath.Vector3();\n\n\n return result.subVectors(this.end, this.start);\n\n }\n\n distanceSq () {\n\n return this.start.distanceToSquared(this.end);\n\n }\n\n distance () {\n\n return this.start.distanceTo(this.end);\n\n }\n\n at (t, optionalTarget) {\n\n const result = optionalTarget || new cornerstoneMath.Vector3();\n\n return this.delta(result).multiplyScalar(t).add(this.start);\n\n }\n\n closestPointToPointParameter () {\n\n const startP = new cornerstoneMath.Vector3();\n const startEnd = new cornerstoneMath.Vector3();\n\n return function (point, clampToLine) {\n\n startP.subVectors(point, this.start);\n startEnd.subVectors(this.end, this.start);\n\n const startEnd2 = startEnd.dot(startEnd);\n const startEnd_startP = startEnd.dot(startP);\n\n let t = startEnd_startP / startEnd2;\n\n if (clampToLine) {\n\n t = cornerstoneMath.Math.clamp(t, 0, 1);\n\n }\n\n return t;\n\n };\n\n }\n\n closestPointToPoint (point, clampToLine, optionalTarget) {\n\n const t = this.closestPointToPointParameter(point, clampToLine);\n\n const result = optionalTarget || new cornerstoneMath.Vector3();\n\n return this.delta(result).multiplyScalar(t).add(this.start);\n\n }\n\n applyMatrix4 (matrix) {\n\n this.start.applyMatrix4(matrix);\n this.end.applyMatrix4(matrix);\n\n return this;\n\n }\n\n equals (line) {\n\n return line.start.equals(this.start) && line.end.equals(this.end);\n\n }\n\n clone () {\n\n return new cornerstoneMath.Line3().copy(this);\n\n }\n\n intersectLine (line) {\n // http://stackoverflow.com/questions/2316490/the-algorithm-to-find-the-point-of-intersection-of-two-3d-line-segment/10288710#10288710\n const da = this.end.clone().sub(this.start);\n const db = line.end.clone().sub(line.start);\n const dc = line.start.clone().sub(this.start);\n\n const daCrossDb = da.clone().cross(db);\n const dcCrossDb = dc.clone().cross(db);\n\n if (dc.dot(da) === 0) {\n // Lines are not coplanar, stop here\n return;\n }\n\n const s = dcCrossDb.dot(daCrossDb) / daCrossDb.lengthSq();\n\n // Make sure we have an intersection\n if (s > 1.0 || isNaN(s)) {\n return;\n }\n\n const intersection = this.start.clone().add(da.clone().multiplyScalar(s));\n const distanceTest = intersection.clone().sub(line.start).lengthSq() + intersection.clone().sub(line.end).lengthSq();\n\n if (distanceTest <= line.distanceSq()) {\n return intersection;\n }\n\n return;\n }\n}\n\nexport default Line3;\n\n\n\n// WEBPACK FOOTER //\n// ./Line3.js"," // Based on http://stackoverflow.com/questions/849211/shortest-distance-between-a-point-and-a-line-segment\nfunction sqr (x) {\n return x * x;\n}\n\nfunction dist2 (v, w) {\n return sqr(v.x - w.x) + sqr(v.y - w.y);\n}\n\nfunction distanceToPointSquared (lineSegment, point) {\n const l2 = dist2(lineSegment.start, lineSegment.end);\n\n if(l2 === 0) {\n return dist2(point, lineSegment.start);\n }\n const t = ((point.x - lineSegment.start.x) * (lineSegment.end.x - lineSegment.start.x) +\n (point.y - lineSegment.start.y) * (lineSegment.end.y - lineSegment.start.y)) / l2;\n\n if(t < 0) {\n return dist2(point, lineSegment.start);\n }\n if(t > 1) {\n return dist2(point, lineSegment.end);\n }\n\n const pt = {\n x: lineSegment.start.x + t * (lineSegment.end.x - lineSegment.start.x),\n y: lineSegment.start.y + t * (lineSegment.end.y - lineSegment.start.y)\n };\n\n\n return dist2(point, pt);\n}\n\nfunction distanceToPoint (lineSegment, point) {\n return Math.sqrt(distanceToPointSquared(lineSegment, point));\n}\n\n// Returns intersection points of two lines\nfunction intersectLine (lineSegment1, lineSegment2) {\n const intersectionPoint = {};\n\n let x1 = lineSegment1.start.x,\n y1 = lineSegment1.start.y,\n x2 = lineSegment1.end.x,\n y2 = lineSegment1.end.y,\n x3 = lineSegment2.start.x,\n y3 = lineSegment2.start.y,\n x4 = lineSegment2.end.x,\n y4 = lineSegment2.end.y;\n\n let a1, a2, b1, b2, c1, c2; // Coefficients of line equations\n let r1, r2, r3, r4; // Sign values\n\n let denom, num; // Intermediate values\n\n // Compute a1, b1, c1, where line joining points 1 and 2 is \"a1 x + b1 y + c1 = 0\"\n a1 = y2 - y1;\n b1 = x1 - x2;\n c1 = x2 * y1 - x1 * y2;\n\n // Compute r3 and r4\n r3 = a1 * x3 + b1 * y3 + c1;\n r4 = a1 * x4 + b1 * y4 + c1;\n\n /* Check signs of r3 and r4. If both point 3 and point 4 lie on\n * same side of line 1, the line segments do not intersect.\n */\n\n if (r3 !== 0 &&\n r4 !== 0 &&\n cornerstoneMath.sign(r3) === cornerstoneMath.sign(r4)) {\n return;\n }\n\n /* Compute a2, b2, c2 */\n\n a2 = y4 - y3;\n b2 = x3 - x4;\n c2 = x4 * y3 - x3 * y4;\n\n /* Compute r1 and r2 */\n\n r1 = a2 * x1 + b2 * y1 + c2;\n r2 = a2 * x2 + b2 * y2 + c2;\n\n /* Check signs of r1 and r2. If both point 1 and point 2 lie\n * on same side of second line segment, the line segments do\n * not intersect.\n */\n\n if (r1 !== 0 &&\n r2 !== 0 &&\n cornerstoneMath.sign(r1) === cornerstoneMath.sign(r2)) {\n return;\n }\n\n /* Line segments intersect: compute intersection point.\n */\n\n denom = (a1 * b2) - (a2 * b1);\n\n /* The denom/2 is to get rounding instead of truncating. It\n * is added or subtracted to the numerator, depending upon the\n * sign of the numerator.\n */\n\n num = (b1 * c2) - (b2 * c1);\n const x = parseFloat(num / denom);\n\n num = (a2 * c1) - (a1 * c2);\n const y = parseFloat(num / denom);\n\n intersectionPoint.x = x;\n intersectionPoint.y = y;\n\n return intersectionPoint;\n}\n\n// Module exports\nconst lineSegment = {\n distanceToPoint,\n intersectLine\n};\n\nexport default lineSegment;\n\n\n\n// WEBPACK FOOTER //\n// ./lineSegment.js","import Vector3 from './vector3';\n\n// Based on THREE.JS\nconst Matrix4 = function Matrix4 (n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44) {\n this.elements = new Float32Array(16);\n\n // TODO: if n11 is undefined, then just set to identity, otherwise copy all other values into matrix\n // We should not support semi specification of Matrix4, it is just weird.\n\n const te = this.elements;\n\n te[0] = (n11 !== undefined) ? n11 : 1; te[4] = n12 || 0; te[8] = n13 || 0; te[12] = n14 || 0;\n te[1] = n21 || 0; te[5] = (n22 !== undefined) ? n22 : 1; te[9] = n23 || 0; te[13] = n24 || 0;\n te[2] = n31 || 0; te[6] = n32 || 0; te[10] = (n33 !== undefined) ? n33 : 1; te[14] = n34 || 0;\n te[3] = n41 || 0; te[7] = n42 || 0; te[11] = n43 || 0; te[15] = (n44 !== undefined) ? n44 : 1;\n};\n\nMatrix4.prototype.makeRotationFromQuaternion = function (q) {\n const te = this.elements;\n\n let x = q.x,\n y = q.y,\n z = q.z,\n w = q.w;\n let x2 = x + x,\n y2 = y + y,\n z2 = z + z;\n let xx = x * x2,\n xy = x * y2,\n xz = x * z2;\n let yy = y * y2,\n yz = y * z2,\n zz = z * z2;\n let wx = w * x2,\n wy = w * y2,\n wz = w * z2;\n\n te[0] = 1 - (yy + zz);\n te[4] = xy - wz;\n te[8] = xz + wy;\n\n te[1] = xy + wz;\n te[5] = 1 - (xx + zz);\n te[9] = yz - wx;\n\n te[2] = xz - wy;\n te[6] = yz + wx;\n te[10] = 1 - (xx + yy);\n\n // Last column\n te[3] = 0;\n te[7] = 0;\n te[11] = 0;\n\n // Bottom row\n te[12] = 0;\n te[13] = 0;\n te[14] = 0;\n te[15] = 1;\n\n return this;\n};\n\nMatrix4.prototype.multiplyMatrices = function (a, b) {\n const ae = a.elements;\n const be = b.elements;\n const te = this.elements;\n\n let a11 = ae[0],\n a12 = ae[4],\n a13 = ae[8],\n a14 = ae[12];\n let a21 = ae[1],\n a22 = ae[5],\n a23 = ae[9],\n a24 = ae[13];\n let a31 = ae[2],\n a32 = ae[6],\n a33 = ae[10],\n a34 = ae[14];\n let a41 = ae[3],\n a42 = ae[7],\n a43 = ae[11],\n a44 = ae[15];\n\n let b11 = be[0],\n b12 = be[4],\n b13 = be[8],\n b14 = be[12];\n let b21 = be[1],\n b22 = be[5],\n b23 = be[9],\n b24 = be[13];\n let b31 = be[2],\n b32 = be[6],\n b33 = be[10],\n b34 = be[14];\n let b41 = be[3],\n b42 = be[7],\n b43 = be[11],\n b44 = be[15];\n\n te[0] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n te[4] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n te[8] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n te[12] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n\n te[1] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n te[5] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n te[9] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n te[13] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n\n te[2] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n te[6] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n te[10] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n te[14] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n\n te[3] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n te[7] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n te[11] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n te[15] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n\n return this;\n};\n\nMatrix4.prototype.multiply = function (m, n) {\n\n if (n !== undefined) {\n\n console.warn('DEPRECATED: Matrix4\\'s .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.');\n\n return this.multiplyMatrices(m, n);\n }\n\n return this.multiplyMatrices(this, m);\n};\n\nMatrix4.prototype.getInverse = function (m, throwOnInvertible) {\n\n // Based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n const te = this.elements;\n const me = m.elements;\n\n let n11 = me[0],\n n12 = me[4],\n n13 = me[8],\n n14 = me[12];\n let n21 = me[1],\n n22 = me[5],\n n23 = me[9],\n n24 = me[13];\n let n31 = me[2],\n n32 = me[6],\n n33 = me[10],\n n34 = me[14];\n let n41 = me[3],\n n42 = me[7],\n n43 = me[11],\n n44 = me[15];\n\n te[0] = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44;\n te[4] = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44;\n te[8] = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44;\n te[12] = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n te[1] = n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44;\n te[5] = n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44;\n te[9] = n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44;\n te[13] = n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34;\n te[2] = n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44;\n te[6] = n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44;\n te[10] = n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44;\n te[14] = n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34;\n te[3] = n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43;\n te[7] = n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43;\n te[11] = n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43;\n te[15] = n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33;\n\n const det = n11 * te[0] + n21 * te[4] + n31 * te[8] + n41 * te[12];\n\n if (det === 0) {\n\n const msg = 'Matrix4.getInverse(): can\\'t invert matrix, determinant is 0';\n\n if (throwOnInvertible || false) {\n\n throw new Error(msg);\n\n } else {\n\n console.warn(msg);\n\n }\n\n this.identity();\n\n return this;\n }\n\n this.multiplyScalar(1 / det);\n\n return this;\n\n};\n\nMatrix4.prototype.applyToVector3Array = function () {\n\n const v1 = new Vector3();\n\n return function (array, offset, length) {\n\n if (offset === undefined) {\n offset = 0;\n }\n if (length === undefined) {\n length = array.length;\n }\n\n for (var i = 0, j = offset; i < length; i += 3, j += 3) {\n\n v1.x = array[j];\n v1.y = array[j + 1];\n v1.z = array[j + 2];\n\n v1.applyMatrix4(this);\n\n array[j] = v1.x;\n array[j + 1] = v1.y;\n array[j + 2] = v1.z;\n\n }\n\n return array;\n\n };\n\n};\n\nMatrix4.prototype.makeTranslation = function (x, y, z) {\n\n this.set(\n\n 1, 0, 0, x,\n 0, 1, 0, y,\n 0, 0, 1, z,\n 0, 0, 0, 1\n\n );\n\n return this;\n\n};\nMatrix4.prototype.multiplyScalar = function (s) {\n\n const te = this.elements;\n\n te[0] *= s; te[4] *= s; te[8] *= s; te[12] *= s;\n te[1] *= s; te[5] *= s; te[9] *= s; te[13] *= s;\n te[2] *= s; te[6] *= s; te[10] *= s; te[14] *= s;\n te[3] *= s; te[7] *= s; te[11] *= s; te[15] *= s;\n\n return this;\n\n};\nMatrix4.prototype.set = function (n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44) {\n\n const te = this.elements;\n\n te[0] = n11; te[4] = n12; te[8] = n13; te[12] = n14;\n te[1] = n21; te[5] = n22; te[9] = n23; te[13] = n24;\n te[2] = n31; te[6] = n32; te[10] = n33; te[14] = n34;\n te[3] = n41; te[7] = n42; te[11] = n43; te[15] = n44;\n\n return this;\n\n};\n\nMatrix4.prototype.makeScale = function (x, y, z) {\n\n this.set(\n\n x, 0, 0, 0,\n 0, y, 0, 0,\n 0, 0, z, 0,\n 0, 0, 0, 1\n\n );\n\n return this;\n\n};\n\nexport default Matrix4;\n\n\n\n// WEBPACK FOOTER //\n// ./matrix4.js","import Vector3 from './vector3.js';\n\n// Copied from Three.JS\n/**\n * @author bhouston / http://exocortex.com\n */\n\nconst Plane = function (normal, constant) {\n\n this.normal = (normal !== undefined) ? normal : new Vector3(1, 0, 0);\n this.constant = (constant !== undefined) ? constant : 0;\n\n};\n\nPlane.prototype = {\n\n constructor: Plane,\n\n set (normal, constant) {\n\n this.normal.copy(normal);\n this.constant = constant;\n\n return this;\n\n },\n\n setComponents (x, y, z, w) {\n\n this.normal.set(x, y, z);\n this.constant = w;\n\n return this;\n\n },\n\n setFromNormalAndCoplanarPoint (normal, point) {\n\n this.normal.copy(normal);\n this.constant = -point.dot(this.normal); // Must be this.normal, not normal, as this.normal is normalized\n\n return this;\n\n },\n\n setFromCoplanarPoints: (function () {\n\n const v1 = new Vector3();\n const v2 = new Vector3();\n\n return function (a, b, c) {\n\n const normal = v1.subVectors(c, b).cross(v2.subVectors(a, b)).normalize();\n\n // Q: should an error be thrown if normal is zero (e.g. degenerate plane)?\n\n this.setFromNormalAndCoplanarPoint(normal, a);\n\n return this;\n\n };\n\n })(),\n\n\n copy (plane) {\n\n this.normal.copy(plane.normal);\n this.constant = plane.constant;\n\n return this;\n\n },\n\n normalize () {\n\n // Note: will lead to a divide by zero if the plane is invalid.\n\n const inverseNormalLength = 1.0 / this.normal.length();\n\n this.normal.multiplyScalar(inverseNormalLength);\n this.constant *= inverseNormalLength;\n\n return this;\n\n },\n\n negate () {\n\n this.constant *= -1;\n this.normal.negate();\n\n return this;\n\n },\n\n distanceToPoint (point) {\n\n return this.normal.dot(point) + this.constant;\n\n },\n\n distanceToSphere (sphere) {\n\n return this.distanceToPoint(sphere.center) - sphere.radius;\n\n },\n\n projectPoint (point, optionalTarget) {\n\n return this.orthoPoint(point, optionalTarget).sub(point).negate();\n\n },\n\n orthoPoint (point, optionalTarget) {\n\n const perpendicularMagnitude = this.distanceToPoint(point);\n\n const result = optionalTarget || new Vector3();\n\n\n return result.copy(this.normal).multiplyScalar(perpendicularMagnitude);\n\n },\n\n isIntersectionLine (line) {\n\n // Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it.\n\n const startSign = this.distanceToPoint(line.start);\n const endSign = this.distanceToPoint(line.end);\n\n return (startSign < 0 && endSign > 0) || (endSign < 0 && startSign > 0);\n\n },\n\n intersectLine: (function () {\n\n const v1 = new Vector3();\n\n return function (line, optionalTarget) {\n\n const result = optionalTarget || new Vector3();\n\n const direction = line.delta(v1);\n\n const denominator = this.normal.dot(direction);\n\n if (denominator === 0) {\n\n // Line is coplanar, return origin\n if (this.distanceToPoint(line.start) === 0) {\n\n return result.copy(line.start);\n\n }\n\n // Unsure if this is the correct method to handle this case.\n return undefined;\n\n }\n\n const t = -(line.start.dot(this.normal) + this.constant) / denominator;\n\n if (t < 0 || t > 1) {\n\n return undefined;\n\n }\n\n return result.copy(direction).multiplyScalar(t).add(line.start);\n\n };\n\n })(),\n\n intersectPlane (targetPlane) {\n // Returns the intersection line between two planes\n const direction = this.normal.clone().cross(targetPlane.normal);\n const origin = new Vector3();\n const intersectionData = {\n origin,\n direction\n };\n\n // If the planes are parallel, return an empty vector for the\n // Intersection line\n if (this.normal.clone().cross(targetPlane.normal).length < 1e-10) {\n intersectionData.direction = new Vector3();\n\n return intersectionData;\n }\n\n const h1 = this.constant;\n const h2 = targetPlane.constant;\n const n1dotn2 = this.normal.clone().dot(targetPlane.normal);\n\n const c1 = -(h1 - h2 * n1dotn2) / (1 - n1dotn2 * n1dotn2);\n const c2 = -(h2 - h1 * n1dotn2) / (1 - n1dotn2 * n1dotn2);\n\n intersectionData.origin = this.normal.clone().multiplyScalar(c1).add(targetPlane.normal.clone().multiplyScalar(c2));\n\n return intersectionData;\n },\n\n coplanarPoint (optionalTarget) {\n\n const result = optionalTarget || new Vector3();\n\n\n return result.copy(this.normal).multiplyScalar(-this.constant);\n\n },\n\n translate (offset) {\n\n this.constant = this.constant - offset.dot(this.normal);\n\n return this;\n\n },\n\n equals (plane) {\n\n return plane.normal.equals(this.normal) && (plane.constant === this.constant);\n\n },\n\n clone () {\n\n return new Plane().copy(this);\n\n }\n};\n\nexport default Plane;\n\n\n\n// WEBPACK FOOTER //\n// ./plane.js","function pageToPoint (e) {\n return {\n x: e.pageX,\n y: e.pageY\n };\n}\n\nfunction subtract (lhs, rhs) {\n return {\n x: lhs.x - rhs.x,\n y: lhs.y - rhs.y\n };\n}\n\nfunction copy (point) {\n return {\n x: point.x,\n y: point.y\n };\n}\n\nfunction distance (from, to) {\n return Math.sqrt(distanceSquared(from, to));\n}\n\nfunction distanceSquared (from, to) {\n const delta = subtract(from, to);\n\n\n return delta.x * delta.x + delta.y * delta.y;\n}\n\nfunction insideRect (point, rect) {\n if(point.x < rect.left ||\n point.x > rect.left + rect.width ||\n point.y < rect.top ||\n point.y > rect.top + rect.height) {\n return false;\n }\n\n return true;\n}\n\n/**\n * Returns the closest source point to a target point\n * given an array of source points.\n *\n * @param sources An Array of source Points\n * @param target The target Point\n * @returns Point The closest point from the points array\n */\nfunction findClosestPoint (sources, target) {\n const distances = [];\n let minDistance;\n\n sources.forEach(function (source, index) {\n const distance = cornerstoneMath.point.distance(source, target);\n\n distances.push(distance);\n\n if (index === 0) {\n minDistance = distance;\n } else {\n minDistance = Math.min(distance, minDistance);\n }\n });\n\n const index = distances.indexOf(minDistance);\n\n\n return sources[index];\n}\n\nconst point = {\n subtract,\n copy,\n pageToPoint,\n distance,\n distanceSquared,\n insideRect,\n findClosestPoint\n};\n\nexport default point;\n\n\n\n// WEBPACK FOOTER //\n// ./point.js"," function rectToLineSegments (rect) {\n const top = {\n start: {\n x: rect.left,\n y: rect.top\n },\n end: {\n x: rect.left + rect.width,\n y: rect.top\n\n }\n };\n const right = {\n start: {\n x: rect.left + rect.width,\n y: rect.top\n },\n end: {\n x: rect.left + rect.width,\n y: rect.top + rect.height\n\n }\n };\n const bottom = {\n start: {\n x: rect.left + rect.width,\n y: rect.top + rect.height\n },\n end: {\n x: rect.left,\n y: rect.top + rect.height\n\n }\n };\n const left = {\n start: {\n x: rect.left,\n y: rect.top + rect.height\n },\n end: {\n x: rect.left,\n y: rect.top\n\n }\n };\n const lineSegments = [top, right, bottom, left];\n\n\n return lineSegments;\n }\n\n function distanceToPoint (rect, point) {\n let minDistance = 655535;\n const lineSegments = rectToLineSegments(rect);\n\n lineSegments.forEach(function (lineSegment) {\n const distance = cornerstoneMath.lineSegment.distanceToPoint(lineSegment, point);\n\n if(distance < minDistance) {\n minDistance = distance;\n }\n });\n\n return minDistance;\n }\n\n// Returns top-left and bottom-right points of the rectangle\n function rectToPoints (rect) {\n const rectPoints = {\n topLeft: {\n x: rect.left,\n y: rect.top\n },\n bottomRight: {\n x: rect.left + rect.width,\n y: rect.top + rect.height\n }\n };\n\n return rectPoints;\n }\n\n// Returns whether two non-rotated rectangles are intersected\n function doesIntersect (rect1, rect2) {\n let intersectLeftRight;\n let intersectTopBottom;\n\n const rect1Points = rectToPoints(rect1);\n const rect2Points = rectToPoints(rect2);\n\n if (rect1.width >= 0) {\n if (rect2.width >= 0) {\n intersectLeftRight = !((rect1Points.bottomRight.x <= rect2Points.topLeft.x) || (rect2Points.bottomRight.x <= rect1Points.topLeft.x));\n } else {\n intersectLeftRight = !((rect1Points.bottomRight.x <= rect2Points.bottomRight.x) || (rect2Points.topLeft.x <= rect1Points.topLeft.x));\n }\n } else if (rect2.width >= 0) {\n intersectLeftRight = !((rect1Points.topLeft.x <= rect2Points.topLeft.x) || (rect2Points.bottomRight.x <= rect1Points.bottomRight.x));\n } else {\n intersectLeftRight = !((rect1Points.topLeft.x <= rect2Points.bottomRight.x) || (rect2Points.topLeft.x <= rect1Points.bottomRight.x));\n }\n\n if (rect1.height >= 0) {\n if (rect2.height >= 0) {\n intersectTopBottom = !((rect1Points.bottomRight.y <= rect2Points.topLeft.y) || (rect2Points.bottomRight.y <= rect1Points.topLeft.y));\n } else {\n intersectTopBottom = !((rect1Points.bottomRight.y <= rect2Points.bottomRight.y) || (rect2Points.topLeft.y <= rect1Points.topLeft.y));\n }\n } else if (rect2.height >= 0) {\n intersectTopBottom = !((rect1Points.topLeft.y <= rect2Points.topLeft.y) || (rect2Points.bottomRight.y <= rect1Points.bottomRight.y));\n } else {\n intersectTopBottom = !((rect1Points.topLeft.y <= rect2Points.bottomRight.y) || (rect2Points.top <= rect1Points.bottomRight.y));\n }\n\n return intersectLeftRight && intersectTopBottom;\n }\n\n// Returns intersection points of two non-rotated rectangles\n function getIntersectionRect (rect1, rect2) {\n const intersectRect = {\n topLeft: {},\n bottomRight: {}\n };\n\n if (!doesIntersect(rect1, rect2)) {\n return;\n }\n\n const rect1Points = rectToPoints(rect1);\n const rect2Points = rectToPoints(rect2);\n\n if (rect1.width >= 0) {\n if (rect2.width >= 0) {\n intersectRect.topLeft.x = Math.max(rect1Points.topLeft.x, rect2Points.topLeft.x);\n intersectRect.bottomRight.x = Math.min(rect1Points.bottomRight.x, rect2Points.bottomRight.x);\n } else {\n intersectRect.topLeft.x = Math.max(rect1Points.topLeft.x, rect2Points.bottomRight.x);\n intersectRect.bottomRight.x = Math.min(rect1Points.bottomRight.x, rect2Points.topLeft.x);\n }\n } else if (rect2.width >= 0) {\n intersectRect.topLeft.x = Math.min(rect1Points.topLeft.x, rect2Points.bottomRight.x);\n intersectRect.bottomRight.x = Math.max(rect1Points.bottomRight.x, rect2Points.topLeft.x);\n } else {\n intersectRect.topLeft.x = Math.min(rect1Points.topLeft.x, rect2Points.topLeft.x);\n intersectRect.bottomRight.x = Math.max(rect1Points.bottomRight.x, rect2Points.bottomRight.x);\n }\n\n if (rect1.height >= 0) {\n if (rect2.height >= 0) {\n intersectRect.topLeft.y = Math.max(rect1Points.topLeft.y, rect2Points.topLeft.y);\n intersectRect.bottomRight.y = Math.min(rect1Points.bottomRight.y, rect2Points.bottomRight.y);\n } else {\n intersectRect.topLeft.y = Math.max(rect1Points.topLeft.y, rect2Points.bottomRight.y);\n intersectRect.bottomRight.y = Math.min(rect1Points.bottomRight.y, rect2Points.topLeft.y);\n }\n } else if (rect2.height >= 0) {\n intersectRect.topLeft.y = Math.min(rect1Points.topLeft.y, rect2Points.bottomRight.y);\n intersectRect.bottomRight.y = Math.max(rect1Points.bottomRight.y, rect2Points.topLeft.y);\n } else {\n intersectRect.topLeft.y = Math.min(rect1Points.topLeft.y, rect2Points.topLeft.y);\n intersectRect.bottomRight.y = Math.max(rect1Points.bottomRight.y, rect2Points.bottomRight.y);\n }\n\n // Returns top-left and bottom-right points of intersected rectangle\n return intersectRect;\n\n }\n\n const rect = {\n distanceToPoint,\n getIntersectionRect\n };\n\n export default rect;\n\n\n\n// WEBPACK FOOTER //\n// ./rect.js","export { default as Line3 } from './Line3.js';\nexport { default as lineSegment } from './lineSegment.js';\nexport { clamp,\n degToRad,\n radToDeg,\n sign } from './math.js';\n\nexport { default as Matrix4 } from './matrix4.js';\nexport { default as plane } from './plane.js';\nexport { default as point } from './point.js';\nexport { default as quaternion } from './quaternion.js';\nexport { default as rect } from './rect.js';\nexport { default as Vector3 } from './vector3.js';\n\n\n\n// WEBPACK FOOTER //\n// ./index.js"],"sourceRoot":""}