{"version":3,"sources":["jsdelivr-header.js","/npm/three-module@1.0.3/bundle/bundle.js"],"names":[],"mappings":"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","file":"/npm/three-module@1.0.3/bundle/bundle.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/three-module@1.0.3/bundle/bundle.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('trhee')) :\n\ttypeof define === 'function' && define.amd ? define(['exports', 'trhee'], factory) :\n\t(factory((global.TM = {}),global.THREE));\n}(this, (function (exports,THREE) { 'use strict';\n\nTHREE = THREE && THREE.hasOwnProperty('default') ? THREE['default'] : THREE;\n\nfunction lglt2xyz(longitude, latitude, radius) {\n    var lg = THREE.Math.degToRad(longitude);\n    var lt = THREE.Math.degToRad(latitude);\n    var y = radius * Math.sin(lt);\n    var temp = radius * Math.cos(lt);\n    var x = temp * Math.sin(lg);\n    var z = temp * Math.cos(lg);\n    return [x, y, z];\n}\n\nvar asyncGenerator = function () {\n  function AwaitValue(value) {\n    this.value = value;\n  }\n\n  function AsyncGenerator(gen) {\n    var front, back;\n\n    function send(key, arg) {\n      return new Promise(function (resolve, reject) {\n        var request = {\n          key: key,\n          arg: arg,\n          resolve: resolve,\n          reject: reject,\n          next: null\n        };\n\n        if (back) {\n          back = back.next = request;\n        } else {\n          front = back = request;\n          resume(key, arg);\n        }\n      });\n    }\n\n    function resume(key, arg) {\n      try {\n        var result = gen[key](arg);\n        var value = result.value;\n\n        if (value instanceof AwaitValue) {\n          Promise.resolve(value.value).then(function (arg) {\n            resume(\"next\", arg);\n          }, function (arg) {\n            resume(\"throw\", arg);\n          });\n        } else {\n          settle(result.done ? \"return\" : \"normal\", result.value);\n        }\n      } catch (err) {\n        settle(\"throw\", err);\n      }\n    }\n\n    function settle(type, value) {\n      switch (type) {\n        case \"return\":\n          front.resolve({\n            value: value,\n            done: true\n          });\n          break;\n\n        case \"throw\":\n          front.reject(value);\n          break;\n\n        default:\n          front.resolve({\n            value: value,\n            done: false\n          });\n          break;\n      }\n\n      front = front.next;\n\n      if (front) {\n        resume(front.key, front.arg);\n      } else {\n        back = null;\n      }\n    }\n\n    this._invoke = send;\n\n    if (typeof gen.return !== \"function\") {\n      this.return = undefined;\n    }\n  }\n\n  if (typeof Symbol === \"function\" && Symbol.asyncIterator) {\n    AsyncGenerator.prototype[Symbol.asyncIterator] = function () {\n      return this;\n    };\n  }\n\n  AsyncGenerator.prototype.next = function (arg) {\n    return this._invoke(\"next\", arg);\n  };\n\n  AsyncGenerator.prototype.throw = function (arg) {\n    return this._invoke(\"throw\", arg);\n  };\n\n  AsyncGenerator.prototype.return = function (arg) {\n    return this._invoke(\"return\", arg);\n  };\n\n  return {\n    wrap: function (fn) {\n      return function () {\n        return new AsyncGenerator(fn.apply(this, arguments));\n      };\n    },\n    await: function (value) {\n      return new AwaitValue(value);\n    }\n  };\n}();\n\n\n\n\n\nvar classCallCheck = function (instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n};\n\nvar createClass = function () {\n  function defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  return function (Constructor, protoProps, staticProps) {\n    if (protoProps) defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) defineProperties(Constructor, staticProps);\n    return Constructor;\n  };\n}();\n\n\n\n\n\n\n\n\n\nvar inherits = function (subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      enumerable: false,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar possibleConstructorReturn = function (self, call) {\n  if (!self) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\n\n\n\n\nvar slicedToArray = function () {\n  function sliceIterator(arr, i) {\n    var _arr = [];\n    var _n = true;\n    var _d = false;\n    var _e = undefined;\n\n    try {\n      for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n        _arr.push(_s.value);\n\n        if (i && _arr.length === i) break;\n      }\n    } catch (err) {\n      _d = true;\n      _e = err;\n    } finally {\n      try {\n        if (!_n && _i[\"return\"]) _i[\"return\"]();\n      } finally {\n        if (_d) throw _e;\n      }\n    }\n\n    return _arr;\n  }\n\n  return function (arr, i) {\n    if (Array.isArray(arr)) {\n      return arr;\n    } else if (Symbol.iterator in Object(arr)) {\n      return sliceIterator(arr, i);\n    } else {\n      throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n    }\n  };\n}();\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar toConsumableArray = function (arr) {\n  if (Array.isArray(arr)) {\n    for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n    return arr2;\n  } else {\n    return Array.from(arr);\n  }\n};\n\nfunction rotateMatrixFn(_ref, angle) {\n    var _ref2 = slicedToArray(_ref, 3),\n        Nx = _ref2[0],\n        Ny = _ref2[1],\n        Nz = _ref2[2];\n\n    //法向量,角度\n    return [[Math.pow(Nx, 2) * (1 - Math.cos(angle)) + Math.cos(angle), Nx * Ny * (1 - Math.cos(angle)) - Nz * Math.sin(angle), Nx * Nz * (1 - Math.cos(angle)) + Ny * Math.sin(angle)], [Nx * Ny * (1 - Math.cos(angle)) + Nz * Math.sin(angle), Math.pow(Ny, 2) * (1 - Math.cos(angle)) + Math.cos(angle), Ny * Nz * (1 - Math.cos(angle)) - Nx * Math.sin(angle)], [Nx * Nz * (1 - Math.cos(angle)) - Ny * Math.sin(angle), Ny * Nz * (1 - Math.cos(angle)) + Nx * Math.sin(angle), Math.pow(Nz, 2) * (1 - Math.cos(angle)) + Math.cos(angle)]];\n}\n\n/*\nx         y         z\nvectorAX  vectorAY  vectorAZ\nvectorBX  vectorBY  vectorBZ\n*/\n\n//求单位向量\nfunction unitVectorFn(vector) {\n    var length = Math.sqrt(Math.pow(vector[0], 2) + Math.pow(vector[1], 2) + Math.pow(vector[2], 2));\n    return [vector[0] / length, vector[1] / length, vector[2] / length];\n}\n\n//法向量\nfunction faceNormalVectorFn(_ref3, _ref4) {\n    var vectorAX = _ref3.vectorAX,\n        vectorAY = _ref3.vectorAY,\n        vectorAZ = _ref3.vectorAZ;\n    var vectorBX = _ref4.vectorBX,\n        vectorBY = _ref4.vectorBY,\n        vectorBZ = _ref4.vectorBZ;\n    //关键点向量\n\n    return [vectorAY * vectorBZ - vectorBY * vectorAZ, vectorAZ * vectorBX - vectorBZ * vectorAX, vectorAX * vectorBY - vectorBX * vectorAY];\n}\n\n//两向量夹角\nfunction vectorsAngleFn(_ref5, _ref6, radius) {\n    var vectorAX = _ref5.vectorAX,\n        vectorAY = _ref5.vectorAY,\n        vectorAZ = _ref5.vectorAZ;\n    var vectorBX = _ref6.vectorBX,\n        vectorBY = _ref6.vectorBY,\n        vectorBZ = _ref6.vectorBZ;\n\n    return (vectorAX * vectorBX + vectorAY * vectorBY + vectorAZ * vectorBZ) / Math.pow(radius, 2);\n}\n\n//旋转后的向量\nfunction afterRotateVectorFn(originVector, rotateMatrix) {\n    return rotateMatrix.map(function (row, index) {\n        return row.reduce(function (prev, col, i) {\n            prev += col * originVector[i];\n            return prev;\n        }, 0);\n    });\n}\n\n//求控制点到原点的距离\nfunction controlPointToOriginLengthFn(radius, angle, controlLineAngle, controlRate) {\n    return radius * Math.sin(controlLineAngle) / Math.sin(Math.PI - controlLineAngle - Math.abs(angle) / controlRate);\n}\n\nfunction getCubicBezierPoints(_ref7, _ref8, radius) {\n    var _ref10 = slicedToArray(_ref7, 2),\n        lngA = _ref10[0],\n        latA = _ref10[1];\n\n    var _ref9 = slicedToArray(_ref8, 2),\n        lngB = _ref9[0],\n        latB = _ref9[1];\n\n    var controlLineAngle = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 13 * Math.PI / 24;\n    var controlRate = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 3;\n\n    var _lglt2xyz = lglt2xyz(lngA, latA, radius),\n        _lglt2xyz2 = slicedToArray(_lglt2xyz, 3),\n        pointMoveAX = _lglt2xyz2[0],\n        pointMoveAY = _lglt2xyz2[1],\n        pointMoveAZ = _lglt2xyz2[2];\n\n    var _lglt2xyz3 = lglt2xyz(lngB, latB, radius),\n        _lglt2xyz4 = slicedToArray(_lglt2xyz3, 3),\n        pointMoveBX = _lglt2xyz4[0],\n        pointMoveBY = _lglt2xyz4[1],\n        pointMoveBZ = _lglt2xyz4[2];\n\n    var cosAngle = vectorsAngleFn({ vectorAX: pointMoveAX, vectorAY: pointMoveAY, vectorAZ: pointMoveAZ }, { vectorBX: pointMoveBX, vectorBY: pointMoveBY, vectorBZ: pointMoveBZ }, radius);\n    var angle = Math.acos(cosAngle);\n\n    /*平面2点和原点构成的求法向量*/\n    var faceNormalVector = faceNormalVectorFn({\n        vectorAX: pointMoveAX,\n        vectorAY: pointMoveAY,\n        vectorAZ: pointMoveAZ\n    }, {\n        vectorBX: pointMoveBX,\n        vectorBY: pointMoveBY,\n        vectorBZ: pointMoveBZ\n    });\n\n    /*求单位法向量*/\n    var faceNormalUnitVector = unitVectorFn(faceNormalVector);\n\n    /*求旋转矩阵*/\n    var rotateMatrixPA = rotateMatrixFn(faceNormalUnitVector, angle / controlRate);\n    var rotateMatrixPB = rotateMatrixFn(faceNormalUnitVector, (controlRate - 1) * angle / controlRate);\n\n    /*求旋转后的向量*/\n    var afterRotateVectorPA = afterRotateVectorFn([pointMoveAX, pointMoveAY, pointMoveAZ], rotateMatrixPA);\n    var afterRotateVectorPB = afterRotateVectorFn([pointMoveAX, pointMoveAY, pointMoveAZ], rotateMatrixPB);\n\n    /*求旋转后的单位向量*/\n    var unitAfterRotateVectorPA = unitVectorFn(afterRotateVectorPA);\n    var unitAfterRotateVectorPB = unitVectorFn(afterRotateVectorPB);\n\n    /*求控制点到原点的距离*/\n    var controlPointToOriginLength = controlPointToOriginLengthFn(radius, angle, controlLineAngle, controlRate);\n\n    var controlPAX = controlPointToOriginLength * unitAfterRotateVectorPA[0];\n    var controlPAY = controlPointToOriginLength * unitAfterRotateVectorPA[1];\n    var controlPAZ = controlPointToOriginLength * unitAfterRotateVectorPA[2];\n\n    var controlPBX = controlPointToOriginLength * unitAfterRotateVectorPB[0];\n    var controlPBY = controlPointToOriginLength * unitAfterRotateVectorPB[1];\n    var controlPBZ = controlPointToOriginLength * unitAfterRotateVectorPB[2];\n\n    return {\n        pointMoveA: [pointMoveAX, pointMoveAY, pointMoveAZ],\n        pointMoveB: [pointMoveBX, pointMoveBY, pointMoveBZ],\n        controlPA: [controlPAX, controlPAY, controlPAZ],\n        controlPB: [controlPBX, controlPBY, controlPBZ]\n    };\n}\n\nvar SpherePendantBase = function () {\n    function SpherePendantBase() {\n        classCallCheck(this, SpherePendantBase);\n    }\n\n    createClass(SpherePendantBase, [{\n        key: 'createObject',\n        value: function createObject() {\n\n            var bufferGeometryOptions = this.bufferGeometryOptions || [];\n            this.geometry = new (Function.prototype.bind.apply(THREE[this.bufferGeometryType], [null].concat(toConsumableArray(bufferGeometryOptions))))();\n\n            if (!!!this.material) this.material = new THREE[this.materialType]({ color: 0xff0000 });\n\n            this.object = new THREE[this.objectType](this.geometry, this.material);\n        }\n    }, {\n        key: 'reload',\n        value: function reload(scene, options) {\n            var _this = this;\n\n            //options update\n            Object.keys(options).forEach(function (name) {\n                _this[name] = options[name];\n            });\n\n            //remove old object\n            scene.remove(this.object);\n            this.object.geometry.dispose();\n            this.geometry = null;\n            this.object = null;\n\n            //create\n            this.init();\n        }\n    }]);\n    return SpherePendantBase;\n}();\n\n/*\n    基于贝塞尔曲线的球面抛物线 class\n    @parma [lnglatA] {Array<Number>:require} <defualt:null> 经纬度A\n    @parma [lnglatB] {Array<Number>:require} <defualt:null> 经纬度B\n    @parma [sphereRadius] {Number:require} <defualt:null> 球半径\n    @parma [controlLineAngle] {Number:require} <defualt:13*Math.PI/24> 贝塞尔曲线对应点与相应控制点，和半径所成角度\n    @parma [controlRate] {Number:require} <defualt:3> 贝塞尔曲线控制点、原点、球面交点所成角占两球面交点角度比率\n    @parma [divisions] {Number:require} <defualt:50> 段数\n    @prototype [init] {Function} 初始化图形\n    @prototype [reload] {Function} 重新初始化图形\n        @parma [scene] {Scene} THREE Scene 对象实例\n        @parma [options] {Object} 同init传入参数\n    @prototype [geometry] {Geometry} Geometry对象实例\n    @prototype [material] {Material} Material对象实例 可以通过init之前修改\n    @prototype [object] {Object} THREE Object对象实例\n*/\n\nvar DrawParabola = function (_SphereBase) {\n    inherits(DrawParabola, _SphereBase);\n\n    function DrawParabola(_ref5) {\n        var lnglatA = _ref5.lnglatA,\n            lnglatB = _ref5.lnglatB,\n            _ref5$sphereRadius = _ref5.sphereRadius,\n            sphereRadius = _ref5$sphereRadius === undefined ? 5 : _ref5$sphereRadius,\n            _ref5$controlLineAngl = _ref5.controlLineAngle,\n            controlLineAngle = _ref5$controlLineAngl === undefined ? 13 * Math.PI / 24 : _ref5$controlLineAngl,\n            controlRate = _ref5.controlRate,\n            _ref5$divisions = _ref5.divisions,\n            divisions = _ref5$divisions === undefined ? 50 : _ref5$divisions;\n        classCallCheck(this, DrawParabola);\n\n        var _this = possibleConstructorReturn(this, (DrawParabola.__proto__ || Object.getPrototypeOf(DrawParabola)).call(this));\n\n        _this.lnglatA = lnglatA;\n        _this.lnglatB = lnglatB;\n        _this.sphereRadius = sphereRadius;\n        _this.controlLineAngle = controlLineAngle;\n        _this.controlRate = controlRate;\n        _this.divisions = divisions;\n\n        _this.bufferGeometryType = 'BufferGeometry';\n        _this.materialType = 'LineBasicMaterial';\n        _this.objectType = 'Line';\n\n        return _this;\n    }\n\n    createClass(DrawParabola, [{\n        key: 'init',\n        value: function init() {\n\n            if (this.object) return;\n\n            var _getCubicBezierPoints = getCubicBezierPoints(this.lnglatA, this.lnglatB, this.sphereRadius, this.controlLineAngle, this.controlRate),\n                pointMoveA = _getCubicBezierPoints.pointMoveA,\n                pointMoveB = _getCubicBezierPoints.pointMoveB,\n                controlPA = _getCubicBezierPoints.controlPA,\n                controlPB = _getCubicBezierPoints.controlPB;\n\n            var curve = new THREE.CubicBezierCurve3(new (Function.prototype.bind.apply(THREE.Vector3, [null].concat(toConsumableArray(pointMoveA))))(), new (Function.prototype.bind.apply(THREE.Vector3, [null].concat(toConsumableArray(controlPA))))(), new (Function.prototype.bind.apply(THREE.Vector3, [null].concat(toConsumableArray(controlPB))))(), new (Function.prototype.bind.apply(THREE.Vector3, [null].concat(toConsumableArray(pointMoveB))))());\n\n            this.points = curve.getPoints(this.divisions);\n\n            this.createObject();\n\n            this.geometry.setFromPoints(this.points);\n\n            return this;\n        }\n    }]);\n    return DrawParabola;\n}(SpherePendantBase);\n\nfunction setQuaternion(lnglat, sphereRadius) {\n\n    var start = new THREE.Vector3(0, 0, sphereRadius);\n    var end = new (Function.prototype.bind.apply(THREE.Vector3, [null].concat(toConsumableArray(lglt2xyz.apply(undefined, toConsumableArray(lnglat).concat([sphereRadius]))))))();\n    //求两向量的夹角\n    var angle = start.angleTo(end);\n    //求两向量法向量\n    var axis = start.cross(end);\n    //创建一个四元数\n    var quaternion = new THREE.Quaternion();\n    //设置四元数的旋转轴和角度\n    quaternion.setFromAxisAngle(axis.normalize(), angle);\n    return quaternion;\n}\n\n\n\n/*\n    基于CircleBufferGeometry的球面点 class\n    @parma [lnglat] {Array<Number>:require} <defualt:null> 经纬度\n    @parma [sphereRadius] {Number:require} <defualt:null> 球半径\n    @parma [bufferGeometryOptions] {Array} <defualt:[5, 60]> bufferGeometry几何图形参数\n    @prototype [init] {Function} 初始化图形\n    @prototype [reload] {Function} 重新初始化图形\n        @parma [scene] {Scene} THREE Scene 对象实例\n        @parma [options] {Object} 同init传入参数\n    @prototype [geometry] {Geometry} Geometry对象实例\n    @prototype [material] {Material} Material对象实例 可以通过init之前修改\n    @prototype [object] {Object} THREE Object对象实例\n*/\n\nvar DrawCircle = function (_SphereBase) {\n    inherits(DrawCircle, _SphereBase);\n\n    function DrawCircle(_ref) {\n        var lnglat = _ref.lnglat,\n            _ref$sphereRadius = _ref.sphereRadius,\n            sphereRadius = _ref$sphereRadius === undefined ? 5 : _ref$sphereRadius,\n            _ref$bufferGeometryOp = _ref.bufferGeometryOptions,\n            bufferGeometryOptions = _ref$bufferGeometryOp === undefined ? [5, 60] : _ref$bufferGeometryOp;\n        classCallCheck(this, DrawCircle);\n\n        var _this = possibleConstructorReturn(this, (DrawCircle.__proto__ || Object.getPrototypeOf(DrawCircle)).call(this));\n\n        _this.lnglat = lnglat;\n        _this.sphereRadius = sphereRadius;\n        _this.bufferGeometryOptions = bufferGeometryOptions;\n\n        _this.bufferGeometryType = 'CircleBufferGeometry';\n        _this.materialType = 'MeshBasicMaterial';\n        _this.objectType = 'Mesh';\n\n        return _this;\n    }\n\n    createClass(DrawCircle, [{\n        key: 'init',\n        value: function init() {\n\n            if (this.object) return;\n\n            var quaternion = setQuaternion(this.lnglat, this.sphereRadius);\n\n            this.createObject();\n\n            this.material.side = THREE.DoubleSide;\n            this.object.applyQuaternion(quaternion);\n            this.object.translateZ(this.sphereRadius);\n\n            return this;\n        }\n\n        // reload({\n        //     lnglat,\n        //     sphereRadius = 5,\n        //     BufferGeometryOptions = []\n        // }){\n\n        //     this.lnglat = lnglat;\n        //     this.sphereRadius = sphereRadius;\n        //     this.BufferGeometryOptions = BufferGeometryOptions;\n\n        //     this.init();\n\n        // }\n\n\n    }]);\n    return DrawCircle;\n}(SpherePendantBase);\n\nfunction compute$2(lnglats, sphereRadius, color) {\n    return lnglats.reduce(function (_ref, _ref2) {\n        var positions = _ref.positions,\n            colors = _ref.colors;\n        var lng = _ref2.lng,\n            lat = _ref2.lat;\n\n        // colors.push(color*Math.random(),color*Math.random(),color*Math.random())\n        positions.push.apply(positions, toConsumableArray(lglt2xyz(lng, lat, sphereRadius)));\n        return { colors: colors, positions: positions };\n    }, { positions: [], colors: [] });\n}\n\n/*\n    基于BufferGeometry的球面绘制边界类\n    @parma [lnglats] {Array<Object[lng,lat]>:require} <defualt:null> 经纬度数组集合\n    @parma [sphereRadius] {Number:require} <defualt:null> 球半径\n    @parma [bufferGeometryOptions] {Array} <defualt:[5, 60]> bufferGeometry几何图形参数\n    @prototype [init] {Function} 初始化图形\n    @prototype [reload] {Function} 重新初始化图形\n        @parma [scene] {Scene} THREE Scene 对象实例\n        @parma [options] {Object} 同init传入参数\n    @prototype [geometry] {Geometry} Geometry对象实例\n    @prototype [material] {Material} Material对象实例 可以通过init之前修改\n    @prototype [object] {Object} THREE Object对象实例\n*/\n\nvar DrawBoundary = function (_SphereBase) {\n    inherits(DrawBoundary, _SphereBase);\n\n    function DrawBoundary(_ref3) {\n        var lnglats = _ref3.lnglats,\n            _ref3$sphereRadius = _ref3.sphereRadius,\n            sphereRadius = _ref3$sphereRadius === undefined ? 5 : _ref3$sphereRadius,\n            _ref3$bufferGeometryO = _ref3.bufferGeometryOptions,\n            bufferGeometryOptions = _ref3$bufferGeometryO === undefined ? [5, 60] : _ref3$bufferGeometryO;\n        classCallCheck(this, DrawBoundary);\n\n        var _this = possibleConstructorReturn(this, (DrawBoundary.__proto__ || Object.getPrototypeOf(DrawBoundary)).call(this));\n\n        _this.lnglats = lnglats;\n        _this.sphereRadius = sphereRadius;\n        _this.bufferGeometryOptions = bufferGeometryOptions;\n\n        _this.bufferGeometryType = 'BufferGeometry';\n        _this.materialType = 'LineBasicMaterial';\n        _this.objectType = 'Line';\n\n        return _this;\n    }\n\n    createClass(DrawBoundary, [{\n        key: 'init',\n        value: function init() {\n\n            if (this.object) return;\n\n            this.createObject();\n\n            var _compute = compute$2(this.lnglats, this.sphereRadius, this.color),\n                positions = _compute.positions;\n\n            this.geometry.addAttribute('position', new THREE.Float32BufferAttribute(positions, 3));\n            // this.geometry.addAttribute('color', new THREE.Float32BufferAttribute(colors, 3));\n            this.geometry.computeBoundingSphere();\n\n            return this;\n        }\n\n        // reload({\n        //     lnglat,\n        //     sphereRadius = 5,\n        //     BufferGeometryOptions = []\n        // }){\n\n        //     this.lnglat = lnglat;\n        //     this.sphereRadius = sphereRadius;\n        //     this.BufferGeometryOptions = BufferGeometryOptions;\n\n        //     this.init();\n\n        // }\n\n\n    }]);\n    return DrawBoundary;\n}(SpherePendantBase);\n\nexports.DrawParabola = DrawParabola;\nexports.DrawCircle = DrawCircle;\nexports.DrawBoundary = DrawBoundary;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n"]}