{"version":3,"file":"cesium-helpers.mjs","sources":["../../../../packages/utils/cesium-helpers.ts"],"sourcesContent":["import type {\n  AnyFunction,\n  Cartesian2Option,\n  Cartesian3Option,\n  Cartesian4Option,\n  PolygonHierarchyOption,\n  CartographicInDegreeOption,\n  NearFarScalarOption,\n  DistanceDisplayConditionOption,\n  ColorInByteOption,\n  MaterialOption,\n  VcComponentInternalInstance,\n  RectangleInDegreeOption,\n  BoundingRectangleOption,\n  PlaneOption,\n  TranslationRotationScaleOption,\n  VcCamera,\n  HeadingPitchRollOption,\n  CesiumAppearance,\n  VcPosition,\n  CesiumPosition,\n  VcRectangle,\n  CesiumRectangle,\n  VcColor,\n  CesiumColor,\n  VcAppearance,\n  CesiumDistanceDisplayCondition,\n  VcDistanceDisplayCondition,\n  VcCartesian2,\n  CesiumCartesian2,\n  CesiumCartesian3Array,\n  VcCartesian3Array,\n  VcCartesian2Array,\n  CesiumCartesian2Array,\n  CesiumNearFarScalar,\n  VcNearFarScalar,\n  VcPolygonHierarchy,\n  CesiumPolygonHierarchy,\n  VcMaterial,\n  VcMaterialProperty,\n  CesiumMaterialProperty,\n  CesiumMaterial,\n  VcBoundingRectangle,\n  CesiumBoundingRectangle,\n  VcHeadingPitchRoll,\n  VcHeadingPitchRange,\n  VcPlane,\n  CesiumPlane,\n  VcImageBasedLighting\n} from './types'\nimport { compare, CompareOperator } from 'compare-versions'\nimport { hasOwn, isFunction, isArray, isString, isPlainObject, isEmptyObj, getObjClassName, isUndefined } from './util'\nimport { VcCircleWaveMaterialProperty, VcLineFlowMaterialProperty } from '@vue-cesium/shared/extends/materials'\n\n/**\n * 将对象或数组转换为 Cesium.Cartesian2\n * @param {Object} val\n * @returns {Cartesian2 | CallbackProperty} 返回 Cartesian2 或者 CallbackProperty\n * @example\n * const options = [100, 100]\n * // const options = [x: 100, y: 100]\n * const position = makeCartesian2(options)\n */\nexport function makeCartesian2(val: VcCartesian2, isConstant = false): CesiumCartesian2 | undefined {\n  const { Cartesian2, CallbackProperty } = Cesium\n\n  if (val instanceof Cesium.Cartesian2 || val instanceof CallbackProperty) {\n    return val\n  }\n\n  if (isPlainObject(val)) {\n    if (hasOwn(val, 'x') && hasOwn(val, 'y')) {\n      const value = val as Cartesian2Option\n      return new Cartesian2(value.x, value.y)\n    }\n  }\n\n  if (isArray(val)) {\n    return new Cartesian2(val[0], val[1])\n  }\n\n  if (isFunction(val)) {\n    return new CallbackProperty(val, isConstant)\n  }\n\n  return undefined\n}\n\n/**\n * 将对象或者数组转换为 Cesium.Cartesian3\n * @param {Object} val 传入的对象或数组\n * @param {Boolean} isConstant 传入function时生效，true 代表回调 function 每时每刻都返回值， false 代表改变才会返回值。默认false。\n * @returns 返回 Cartesian3 或者 CallbackProperty\n * @example\n * const options = {\n *  lng: 108,\n *  lat: 35,\n *  height: 1000\n * }\n * // const options = [108, 35, 1000]\n * const position = makeCartesian3 (options) // return Cesium.Cartesian3\n */\nexport function makeCartesian3(val: VcPosition, ellipsoid?: Cesium.Ellipsoid, isConstant = false): CesiumPosition | undefined {\n  const {\n    CallbackProperty,\n    Cartesian3,\n    Ellipsoid,\n    SampledPositionProperty,\n    CompositePositionProperty,\n    ConstantPositionProperty,\n    TimeIntervalCollectionPositionProperty\n  } = Cesium\n\n  if (\n    val instanceof Cartesian3 ||\n    val instanceof CallbackProperty ||\n    val instanceof SampledPositionProperty ||\n    val instanceof CompositePositionProperty ||\n    val instanceof ConstantPositionProperty ||\n    val instanceof TimeIntervalCollectionPositionProperty\n  ) {\n    return val\n  }\n\n  ellipsoid = ellipsoid || Ellipsoid.WGS84\n\n  if (isPlainObject(val)) {\n    if (hasOwn(val, 'x') && hasOwn(val, 'y') && hasOwn(val, 'z')) {\n      const value = val as Cartesian3Option\n      return new Cartesian3(value.x, value.y, value.z)\n    } else if (hasOwn(val, 'lng') && hasOwn(val, 'lat')) {\n      const value = val as CartographicInDegreeOption\n      return Cartesian3.fromDegrees(value.lng!, value.lat!, value.height || 0, ellipsoid)\n    }\n  }\n  // 经纬度数组\n  if (isArray(val)) {\n    return Cartesian3.fromDegrees(val[0], val[1], val[2] || 0, ellipsoid)\n  }\n\n  if (isFunction(val)) {\n    return new CallbackProperty(val, isConstant)\n  }\n\n  return undefined\n}\n\n/**\n * 将数组 [lng, lat, height, ……，lng, lat, height] 转换为 Cesium.Cartesian3 数组\n * @param {Array} val\n * @returns {Array<Cartesian3>}\n */\nexport function makeCartesian3Array(vals: VcCartesian3Array, ellipsoid?: Cesium.Ellipsoid, isConstant = false): CesiumCartesian3Array | undefined {\n  const { CallbackProperty, Cartesian3, Ellipsoid } = Cesium\n\n  if (vals instanceof CallbackProperty) {\n    return vals\n  }\n\n  if (isFunction(vals)) {\n    return new CallbackProperty(vals, isConstant)\n  }\n\n  ellipsoid = ellipsoid || Ellipsoid.WGS84\n\n  if (isArray(vals)) {\n    if (isArray(vals[0]) || isPlainObject(vals[0])) {\n      const results: Array<any> = []\n      vals.forEach(val => {\n        results.push(makeCartesian3(val, ellipsoid))\n      })\n      return results\n    }\n\n    return Cartesian3.fromDegreesArrayHeights(vals as Array<number>, ellipsoid)\n  }\n\n  return undefined\n}\n\n/**\n * 将形如 [lng, lat, ……，lng, lat] 数组转换为 Cesium.Cartesian2 数组\n * @param {Array} vals\n * @returns {Array<Cartesian2>}\n */\nexport function makeCartesian2Array(vals: VcCartesian2Array, isConstant): CesiumCartesian2Array | undefined {\n  const { CallbackProperty } = Cesium\n\n  if (vals instanceof CallbackProperty) {\n    return vals\n  }\n\n  if (isFunction(vals)) {\n    return new CallbackProperty(vals, isConstant)\n  }\n\n  if (isArray(vals)) {\n    const points: Array<Cesium.Cartesian2> = []\n    vals.forEach(val => {\n      points.push(makeCartesian2(val) as Cesium.Cartesian2)\n    })\n    return points\n  }\n\n  return undefined\n}\n\n/**\n * 将对象或数组 转换为 Cesium.Quaternion\n * @param {Object} val\n * @example\n * const options = {x: 0, y: 0, z: 0, w: 0}\n * // const options = [0, 0, 0, 0]\n * const orientation = makeQuaternion(options) // returns Cesium.Quaternion\n */\nexport function makeQuaternion(\n  val: Cesium.CallbackProperty | Cesium.Quaternion | Cartesian4Option | Array<number> | AnyFunction<any>,\n  isConstant = false\n): Cesium.CallbackProperty | Cesium.Quaternion | Cesium.VelocityOrientationProperty | undefined {\n  const { CallbackProperty, Quaternion, VelocityOrientationProperty } = Cesium\n\n  if (val instanceof Quaternion || val instanceof CallbackProperty || val instanceof VelocityOrientationProperty) {\n    return val\n  }\n\n  if (isPlainObject(val) && hasOwn(val, 'x') && hasOwn(val, 'y')) {\n    const value = val as Cartesian4Option\n    return new Quaternion(value.x, value.y, value.z, value.w)\n  }\n\n  if (isArray(val)) {\n    return new Quaternion(val[0], val[1], val[2], val[3])\n  }\n\n  if (isFunction(val)) {\n    return new CallbackProperty(val, isConstant)\n  }\n\n  return undefined\n}\n\n/**\n * 解析 HierarchyJson\n * @param {Object} val\n */\nfunction parsePolygonHierarchyJson(val: Array<PolygonHierarchyOption>, ellipsoid?: Cesium.Ellipsoid) {\n  val.forEach(item => {\n    item.positions = makeCartesian3Array(item.positions, ellipsoid) as Array<Cesium.Cartesian3>\n    if (item.holes) {\n      parsePolygonHierarchyJson(item.holes, ellipsoid)\n    }\n  })\n}\n\n/**\n * 普通数组或对象转 Cesium.PolygonHierarchy 对象。\n * @param {Object|Array} val\n */\nexport function makePolygonHierarchy(val: VcPolygonHierarchy, ellipsoid?: Cesium.Ellipsoid, isConstant = false): CesiumPolygonHierarchy | undefined {\n  const { PolygonHierarchy, CallbackProperty } = Cesium\n\n  if (val instanceof PolygonHierarchy || val instanceof CallbackProperty) {\n    return val\n  }\n\n  if (isFunction(val)) {\n    return new CallbackProperty(val, isConstant)\n  }\n\n  if (isArray(val) && val.length >= 3) {\n    const points = makeCartesian3Array(val, ellipsoid) as Array<Cesium.Cartesian3>\n    return new PolygonHierarchy(points)\n  }\n\n  if (isPlainObject(val) && hasOwn(val, 'positions')) {\n    const value = val as PolygonHierarchyOption\n    value.positions = makeCartesian3Array(value.positions, ellipsoid) as Array<Cesium.Cartesian3>\n    value.holes?.length && parsePolygonHierarchyJson(value.holes, ellipsoid)\n    return value\n  }\n\n  return undefined\n}\n\n/**\n * 对象或数组转 Cesium.NearFarScalar。\n * @param {Object} val\n * @returns {NearFarScalar}\n * @example\n * const options = {near: 1000, nearValue: 1.0, far: 10000, farValue: 0.5}\n * // const options = [1000, 1.0, 10000, 1.5]\n * const nearFarScalar = makeNearFarScalar(options)\n */\nexport function makeNearFarScalar(val: VcNearFarScalar, isConstant = false): CesiumNearFarScalar | undefined {\n  const { NearFarScalar, CallbackProperty } = Cesium\n\n  if (val instanceof NearFarScalar || val instanceof CallbackProperty) {\n    return val\n  }\n\n  if (isPlainObject(val) && hasOwn(val, 'near') && hasOwn(val, 'far')) {\n    const value = val as NearFarScalarOption\n    return new NearFarScalar(value.near, value.nearValue || 0.0, value.far, value.farValue || 1.0)\n  }\n\n  if (isArray(val)) {\n    return new NearFarScalar(val[0], val[1], val[2], val[3])\n  }\n\n  if (isFunction(val)) {\n    return new CallbackProperty(val, isConstant)\n  }\n\n  return undefined\n}\n/**\n * 对象或数组转 Cesium.DistanceDisplayCondition。\n * @param {Object} val\n * @returns {DistanceDisplayCondition}\n * @example\n * const options = [0, 1000]\n * // const options = {near: 0, far: 1000}\n * const distanceDisplayCondition = makeDistanceDisplayCondition(options) // return Cesium.DistanceDisplayCondition\n */\nexport function makeDistanceDisplayCondition(val: VcDistanceDisplayCondition, isConstant = false): CesiumDistanceDisplayCondition | undefined {\n  const { DistanceDisplayCondition, CallbackProperty } = Cesium\n\n  if (val instanceof DistanceDisplayCondition || val instanceof CallbackProperty) {\n    return val\n  }\n\n  if (isPlainObject(val) && hasOwn(val, 'near') && hasOwn(val, 'far')) {\n    const value = val as DistanceDisplayConditionOption\n    return new DistanceDisplayCondition(value.near, value.far)\n  }\n\n  if (isArray(val)) {\n    return new DistanceDisplayCondition(val[0], val[1])\n  }\n\n  if (isFunction(val)) {\n    return new CallbackProperty(val, isConstant)\n  }\n\n  return undefined\n}\n\n/**\n * 普通对象、数组或字符串转 Cesium.Color。\n * @param {String|Array|Object|Function} val\n * @returns {Color}\n * @example\n * const options = 'red'\n * // const options = [1, 0, 0, 1.0] // r g b a\n * // const options = {red: 255, green: 0, bule: 0, alpha: 255}\n * const color = makeColor(options) // return Cesium.Color\n */\nexport function makeColor(val: VcColor, isConstant = false): CesiumColor | undefined {\n  const { Color, CallbackProperty, defaultValue } = Cesium\n\n  if (val instanceof Color || val instanceof CallbackProperty) {\n    return val\n  }\n\n  if (isString(val)) {\n    return Color.fromCssColorString(val)\n  }\n\n  if (isPlainObject(val)) {\n    if (hasOwn(val, 'red')) {\n      const value = val as ColorInByteOption\n      return Color.fromBytes(\n        defaultValue(value.red, 255),\n        defaultValue(value.green, 255),\n        defaultValue(value.blue, 255),\n        defaultValue(value.alpha, 255)\n      )\n    } else if (hasOwn(val, 'x')) {\n      const value = val as Cartesian4Option\n      return new Color(defaultValue(value.x, 1), defaultValue(value.y, 1), defaultValue(value.z, 1), defaultValue(value.w, 1))\n    }\n  }\n\n  if (isArray(val)) {\n    return Color.fromBytes(val[0], val[1], val[2], defaultValue(val[3], 255))\n  }\n\n  if (isFunction(val)) {\n    return new CallbackProperty(val, isConstant)\n  }\n\n  return undefined\n}\n\nexport function makeColors(vals: VcColor[]): Cesium.Color[] {\n  if (isArray(vals)) {\n    const results: Cesium.Color[] = []\n    vals.forEach(val => {\n      results.push(makeColor(val) as Cesium.Color)\n    })\n\n    return results\n  } else {\n    return vals\n  }\n}\n\n/**\n * 普通对象或数组 [r, g, b, a] 或字符串转 MaterialProperty\n * @param {String|Array|Object} val\n */\nexport function makeMaterialProperty(val: VcMaterialProperty, isConstant = false): CesiumMaterialProperty {\n  const {\n    CallbackProperty,\n    Color,\n    CheckerboardMaterialProperty,\n    ColorMaterialProperty,\n    CompositeMaterialProperty,\n    GridMaterialProperty,\n    ImageMaterialProperty,\n    MaterialProperty,\n    PolylineArrowMaterialProperty,\n    PolylineDashMaterialProperty,\n    PolylineGlowMaterialProperty,\n    PolylineOutlineMaterialProperty,\n    StripeMaterialProperty,\n    StripeOrientation,\n    defaultValue,\n    Cartesian2,\n    Material\n  } = Cesium\n\n  if (\n    val instanceof CallbackProperty ||\n    val instanceof Color ||\n    val instanceof CheckerboardMaterialProperty ||\n    val instanceof ColorMaterialProperty ||\n    val instanceof CompositeMaterialProperty ||\n    val instanceof GridMaterialProperty ||\n    val instanceof ImageMaterialProperty ||\n    val instanceof MaterialProperty ||\n    val instanceof PolylineArrowMaterialProperty ||\n    val instanceof PolylineDashMaterialProperty ||\n    val instanceof PolylineGlowMaterialProperty ||\n    val instanceof PolylineOutlineMaterialProperty ||\n    val instanceof StripeMaterialProperty ||\n    val instanceof VcCircleWaveMaterialProperty ||\n    val instanceof VcLineFlowMaterialProperty\n    // getObjClassName(val as any).indexOf('MaterialProperty') !== -1\n  ) {\n    return val as CesiumMaterialProperty\n  }\n  if (\n    (isString(val) && /(.*)\\.(jpg|bmp|gif|ico|pcx|jpeg|tif|png|raw|tga)$/.test(val)) ||\n    val instanceof HTMLImageElement ||\n    val instanceof HTMLCanvasElement ||\n    val instanceof HTMLVideoElement\n  ) {\n    return new ImageMaterialProperty({\n      image: val,\n      repeat: makeCartesian2({ x: 1.0, y: 1.0 }),\n      color: Color.WHITE,\n      transparent: true\n    })\n  }\n\n  if (isArray(val) || isString(val)) {\n    return new ColorMaterialProperty(makeColor(val))\n  }\n\n  if (isPlainObject(val) && hasOwn(val, 'fabric')) {\n    const value = val as MaterialOption\n    switch (value.fabric.type) {\n      case 'Image':\n        return new ImageMaterialProperty({\n          image: value.fabric.uniforms.image,\n          repeat: makeCartesian2(defaultValue(value.fabric.uniforms.repeat as Cartesian2Option, { x: 1.0, y: 1.0 })),\n          color: defaultValue(makeColor(value.fabric.uniforms.color), Color.WHITE),\n          transparent: defaultValue(value.fabric.uniforms.transparent, false)\n        })\n      case 'Color':\n        return new ColorMaterialProperty(makeColor(defaultValue(value.fabric.uniforms.color, Color.WHITE)))\n      case 'PolylineArrow':\n        return new PolylineArrowMaterialProperty(makeColor(defaultValue(value.fabric.uniforms.color, Color.WHITE)))\n      case 'PolylineDash':\n        return new PolylineDashMaterialProperty({\n          color: makeColor(defaultValue(value.fabric.uniforms.color, 'white')),\n          gapColor: makeColor(defaultValue(value.fabric.uniforms.gapColor, Color.TRANSPARENT)),\n          dashLength: defaultValue(value.fabric.uniforms.taperPower, 16.0),\n          dashPattern: defaultValue(value.fabric.uniforms.taperPower, 255.0)\n        })\n      case 'PolylineGlow':\n        return new PolylineGlowMaterialProperty({\n          color: makeColor(defaultValue(value.fabric.uniforms.color, Color.WHITE)),\n          glowPower: defaultValue(value.fabric.uniforms.glowPower, 0.25),\n          taperPower: defaultValue(value.fabric.uniforms.taperPower, 1.0)\n        })\n      case 'PolylineOutline':\n        return new PolylineOutlineMaterialProperty({\n          color: makeColor(defaultValue(value.fabric.uniforms.color, Color.WHITE)),\n          outlineColor: makeColor(defaultValue(value.fabric.uniforms.outlineColor, Color.BLACK)),\n          outlineWidth: defaultValue(value.fabric.uniforms.outlineWidth, 1.0)\n        })\n      case 'Checkerboard':\n        return new CheckerboardMaterialProperty({\n          evenColor: makeColor(defaultValue(value.fabric.uniforms.evenColor, Color.WHITE)),\n          oddColor: makeColor(defaultValue(value.fabric.uniforms.oddColor, Color.BLACK)),\n          repeat: defaultValue(makeCartesian2(value.fabric.uniforms.repeat as Cartesian2Option), { x: 2, y: 2 })\n        })\n      case 'Grid':\n        return new GridMaterialProperty({\n          color: makeColor(defaultValue(value.fabric.uniforms.color, Color.WHITE)),\n          cellAlpha: defaultValue(value.fabric.uniforms.cellAlpha, 0.1),\n          lineCount: defaultValue(makeCartesian2(value.fabric.uniforms.lineCount as Cartesian2Option), { x: 8, y: 8 }),\n          lineThickness: defaultValue(makeCartesian2(value.fabric.uniforms.lineThickness as Cartesian2Option), { x: 1, y: 1 }),\n          lineOffset: defaultValue(makeCartesian2(value.fabric.uniforms.lineOffset as Cartesian2Option), { x: 0, y: 0 })\n        })\n      case 'Stripe':\n        return new StripeMaterialProperty({\n          orientation: defaultValue(value.fabric.uniforms.orientation, StripeOrientation.HORIZONTAL),\n          evenColor: makeColor(defaultValue(value.fabric.uniforms.evenColor, 'white')),\n          oddColor: makeColor(defaultValue(value.fabric.uniforms.oddColor, 'black')),\n          offset: defaultValue(value.fabric.uniforms.offset, 0),\n          repeat: defaultValue(value.fabric.uniforms.repeat as number, 1)\n        })\n      case 'VcCircleWave': {\n        return new VcCircleWaveMaterialProperty({\n          duration: defaultValue(value.fabric.uniforms.duration, 3000),\n          gradient: defaultValue(value.fabric.uniforms.gradient, 0.5),\n          color: makeColor(defaultValue(value.fabric.uniforms.color, Color.RED)),\n          count: defaultValue(value.fabric.uniforms.count, 3)\n        })\n      }\n      case 'VcLineFlow': {\n        return new VcLineFlowMaterialProperty({\n          image: defaultValue(value.fabric.uniforms.image, Material.DefaultImageId),\n          color: makeColor(defaultValue(value.fabric.uniforms.color, new Color(1, 1, 1, 1))),\n          repeat: makeCartesian2(defaultValue(value.fabric.uniforms.repeat, new Cartesian2(1, 1))),\n          axisY: defaultValue(value.fabric.uniforms.axisY, false),\n          mixt: defaultValue(value.fabric.uniforms.mixt, false),\n          speed: defaultValue(value.fabric.uniforms.speed, 10),\n          time: defaultValue(value.fabric.uniforms.time, -1)\n        })\n      }\n    }\n  }\n\n  if (isFunction(val)) {\n    return new CallbackProperty(val, isConstant)\n  }\n\n  return val as unknown as CesiumMaterialProperty\n}\n\n/**\n * 转 Material\n * @param {String|Array|Object} val\n */\nexport function makeMaterial(this, val: VcMaterial): CesiumMaterial {\n  const vcInstance = this as VcComponentInternalInstance\n  const cmpName = vcInstance?.proxy?.$options.name\n  if (\n    cmpName &&\n    (cmpName.indexOf('Graphics') !== -1 || cmpName.indexOf('Datasource') !== -1 || cmpName === 'VcOverlayDynamic' || cmpName === 'VcEntity')\n  ) {\n    return makeMaterialProperty(val as VcMaterialProperty)\n  }\n  const { Material, combine } = Cesium\n  if (val instanceof Material) {\n    return val\n  }\n  if (isPlainObject(val) && hasOwn(val, 'fabric')) {\n    const f = obj => {\n      for (const i in obj) {\n        if (!isArray(obj[i]) && isPlainObject(obj[i])) {\n          f(obj[i])\n        } else {\n          if (i.toLocaleLowerCase().indexOf('color') !== -1 && !isEmptyObj(obj[i])) {\n            const result = makeColor(obj[i])\n            // Cesium 通过对象属性个数判断具体材质类型的，通过 Cesium.combine 移除 vue 传的一些属性\n            obj[i] = combine(result, result, true)\n          }\n        }\n      }\n    }\n    f(val)\n    return new Material(val as MaterialOption)\n  }\n\n  if (isArray(val) || isString(val)) {\n    const material = Material.fromType('Color')\n    material.uniforms.color = makeColor(val)\n    return material\n  }\n\n  return undefined\n}\n\nexport function makeAppearance(this: VcComponentInternalInstance, val: VcAppearance): CesiumAppearance | undefined {\n  const {\n    Appearance,\n    DebugAppearance,\n    MaterialAppearance,\n    PolylineColorAppearance,\n    EllipsoidSurfaceAppearance,\n    PerInstanceColorAppearance,\n    PolylineMaterialAppearance\n  } = Cesium\n\n  if (\n    val instanceof Appearance ||\n    val instanceof DebugAppearance ||\n    val instanceof MaterialAppearance ||\n    val instanceof PolylineColorAppearance ||\n    val instanceof EllipsoidSurfaceAppearance ||\n    val instanceof PerInstanceColorAppearance ||\n    val instanceof PolylineMaterialAppearance\n    // getObjClassName(val as any).indexOf('Appearance') !== -1\n  ) {\n    return val as CesiumAppearance\n  }\n\n  if (isPlainObject(val) && hasOwn(val, 'type')) {\n    const options: any = {\n      ...val.options\n    }\n    if (val.options?.material) {\n      options.material = makeMaterial.call(this, val.options.material as any)\n    }\n\n    return new Cesium[val.type!]({\n      ...options\n    })\n  }\n\n  return undefined\n}\n\n/**\n * 将对象 {west: number, south: number, east: number, north: number} 或者[west, south, east, north]数组 转 Cesium.Rectangle 对象。\n * @param {Object} val\n * @returns {Rectangle}\n */\nexport function makeRectangle(val: VcRectangle, isConstant = false): CesiumRectangle | Cesium.RectangleGraphics | undefined {\n  const { Rectangle, RectangleGraphics, CallbackProperty } = Cesium\n  // Entiy 的 rectangle 属性不能调用这个方法\n  if (val instanceof RectangleGraphics || val instanceof Rectangle || val instanceof CallbackProperty) {\n    return val\n  }\n\n  if (isArray(val)) {\n    return Rectangle.fromDegrees(val[0], val[1], val[2], val[3])\n  }\n\n  if (isPlainObject(val)) {\n    if (hasOwn(val, 'west')) {\n      const value = val as RectangleInDegreeOption\n      return Rectangle.fromDegrees(value.west, value.south, value.east, value.north)\n    } else if (hasOwn(val, 'x')) {\n      const value = val as Cartesian4Option\n      return new Rectangle(value.x, value.y, value.z, value.w)\n    }\n  }\n\n  if (isFunction(val)) {\n    return new CallbackProperty(val, isConstant)\n  }\n\n  return undefined\n}\n\n/**\n * 对象或数组转 Cesium.BoundingRectangle。\n * @param {Object} val\n * @returns {Cesium.BoundingRectangle}\n * @example\n * const options = [0, 0, 100, 100]\n * // const options = {x: 0, y: 0, width: 100, height: 100}\n * const boundingRectangle = makeBoundingRectangle(options)\n */\nexport function makeBoundingRectangle(val: VcBoundingRectangle, isConstant = false): CesiumBoundingRectangle | undefined {\n  const { BoundingRectangle, CallbackProperty } = Cesium\n\n  if (val instanceof BoundingRectangle || val instanceof CallbackProperty) {\n    return val\n  }\n\n  if (isPlainObject(val) && hasOwn(val, 'x')) {\n    const value = val as BoundingRectangleOption\n    return new BoundingRectangle(value.x, value.y, value.width, value.height)\n  }\n\n  if (isArray(val)) {\n    return new BoundingRectangle(val[0], val[1], val[2], val[3])\n  }\n\n  if (isFunction(val)) {\n    return new CallbackProperty(val, isConstant)\n  }\n\n  return undefined\n}\n\n/**\n * 普通对象 {normal: number, distance: number} 转 Cesium.Plane 对象。\n * @param {Object} val\n * @returns {Plane}\n */\nexport function makePlane(val: VcPlane, isConstant = false): CesiumPlane {\n  const { Cartesian3, Plane, PlaneGraphics, CallbackProperty } = Cesium\n\n  // Entiy 和 PlaneGraphics 都有个 plane 属性 要区别一下\n  if (val instanceof PlaneGraphics || val instanceof Plane || val instanceof CallbackProperty) {\n    return val\n  }\n\n  if (isPlainObject(val) && hasOwn(val, 'normal')) {\n    const value = val as PlaneOption\n    // normal 法向量 需要写成 {x: number, y: number, z: number} 形式\n    Cartesian3.normalize(makeCartesian3(value.normal) as Cesium.Cartesian3, value.normal as Cesium.Cartesian3)\n    return new Plane(value.normal as Cesium.Cartesian3, value.distance)\n  }\n\n  if (isArray(val)) {\n    const point3D = makeCartesian3(val[0]) as Cesium.Cartesian3\n    const normalizePoint3D = Cartesian3.normalize(point3D, new Cartesian3())\n    return new Plane(normalizePoint3D, val[1])\n  }\n\n  if (isFunction(val)) {\n    return new CallbackProperty(val, isConstant)\n  }\n\n  return undefined\n}\n\n/**\n * 普通对象转平移、旋转、缩放变换对象。\n * @param {*} val\n */\nexport function makeTranslationRotationScale(\n  val: Cesium.TranslationRotationScale | Cesium.CallbackProperty | TranslationRotationScaleOption | AnyFunction<any> | Array<any>,\n  isConstant = false\n) {\n  const { TranslationRotationScale, CallbackProperty } = Cesium\n  if (val instanceof CallbackProperty || val instanceof TranslationRotationScale) {\n    return val\n  }\n\n  if (isPlainObject(val) && hasOwn(val, 'translation')) {\n    const value = val as TranslationRotationScaleOption\n    // note\n    // translation scale需要写成 { x: number, y: number, z: number } 的形式\n    return new TranslationRotationScale(\n      makeCartesian3(value.translation) as Cesium.Cartesian3,\n      makeQuaternion(value.rotation) as Cesium.Quaternion,\n      makeCartesian3(value.scale) as Cesium.Cartesian3\n    )\n  }\n\n  if (isArray(val)) {\n    return new TranslationRotationScale(\n      makeCartesian3(val[0]) as Cesium.Cartesian3,\n      makeQuaternion(val[1]) as Cesium.Quaternion,\n      makeCartesian3(val[2]) as Cesium.Cartesian3\n    )\n  }\n\n  if (isFunction(val)) {\n    return new CallbackProperty(val, isConstant)\n  }\n  return val\n}\n\nexport function makeOptions(this, val) {\n  const vcInstance = this as VcComponentInternalInstance\n  const cmpName = vcInstance.proxy?.$options.name\n  const result: any = {}\n  switch (cmpName) {\n    case 'VcDatasourceGeojson':\n      Object.assign(result, val)\n      result && result.markerColor && (result.markerColor = makeColor(result.markerColor))\n      result && result.stroke && (result.stroke = makeColor(result.stroke))\n      result && result.fill && (result.fill = makeColor(result.fill))\n      return result\n  }\n  return val\n}\n\nexport function captureScreenshot(viewer: Cesium.Viewer) {\n  const scene = viewer.scene\n  const promise: Promise<string> = new Promise((resolve, reject) => {\n    const removeCallback = viewer.scene.postRender.addEventListener(() => {\n      removeCallback()\n      try {\n        const cesiumCanvas = viewer.scene.canvas\n        const canvas = cesiumCanvas\n        resolve(canvas.toDataURL('image/png'))\n      } catch (e) {\n        reject(e)\n      }\n    })\n  })\n\n  scene.render(viewer.clock.currentTime)\n  return promise\n}\n\nexport function makeCameraOptions(camera: VcCamera, ellipsoid?: Cesium.Ellipsoid) {\n  const { Math: CesiumMath, Rectangle, defaultValue } = Cesium\n\n  let destination: Cesium.Cartesian3 | Cesium.Rectangle | undefined = undefined\n  let orientation: HeadingPitchRollOption = {}\n\n  if (hasOwn(camera, 'position')) {\n    const position = camera.position\n    destination = makeCartesian3(position!, ellipsoid) as Cesium.Cartesian3\n    if ((hasOwn(position!, 'lng') && hasOwn(position!, 'lat')) || isArray(position)) {\n      orientation = {\n        heading: CesiumMath.toRadians(defaultValue(camera.heading, 360)),\n        pitch: CesiumMath.toRadians(defaultValue(camera.pitch, -90)),\n        roll: CesiumMath.toRadians(defaultValue(camera.roll, 0))\n      }\n    } else {\n      orientation = {\n        heading: defaultValue(camera.heading, 2 * Math.PI),\n        pitch: defaultValue(camera.pitch, -Math.PI / 2),\n        roll: defaultValue(camera.roll, 0)\n      }\n    }\n  } else if (hasOwn(camera, 'rectangle')) {\n    const rectangle = camera.rectangle\n    destination = makeRectangle(rectangle!) as Cesium.Rectangle\n    Rectangle.validate(destination)\n    if (\n      (hasOwn(rectangle!, 'west') && hasOwn(rectangle!, 'south') && hasOwn(rectangle!, 'east') && hasOwn(rectangle!, 'north')) ||\n      isArray(rectangle)\n    ) {\n      orientation = {\n        heading: CesiumMath.toRadians(defaultValue(camera.heading, 360)),\n        pitch: CesiumMath.toRadians(defaultValue(camera.pitch, -90)),\n        roll: CesiumMath.toRadians(defaultValue(camera.roll, 0))\n      }\n    } else {\n      orientation = {\n        heading: defaultValue(camera.heading, 2 * Math.PI),\n        pitch: defaultValue(camera.pitch, -Math.PI / 2),\n        roll: defaultValue(camera.roll, 0)\n      }\n    }\n  }\n\n  return {\n    destination,\n    orientation\n  }\n}\n\nexport function setViewerCamera(viewer: Cesium.Viewer, camera: VcCamera) {\n  const { destination, orientation } = makeCameraOptions(camera, viewer.scene.globe.ellipsoid)\n  viewer.camera.setView({\n    destination: destination,\n    orientation: orientation\n  })\n}\n\nexport function flyToCamera(\n  viewer: Cesium.Viewer,\n  cameraOpts: VcCamera,\n  options?: {\n    destination?: Cesium.Cartesian3 | Cesium.Rectangle\n    orientation?: any\n    duration?: number\n    complete?: Cesium.Camera.FlightCompleteCallback\n    cancel?: Cesium.Camera.FlightCancelledCallback\n    endTransform?: Cesium.Matrix4\n    maximumHeight?: number\n    pitchAdjustHeight?: number\n    flyOverLongitude?: number\n    flyOverLongitudeWeight?: number\n    convert?: boolean\n    easingFunction?: Cesium.EasingFunction.Callback\n  }\n) {\n  const { destination, orientation } = makeCameraOptions(cameraOpts, viewer.scene.globe.ellipsoid)\n  viewer.camera.flyTo({\n    ...options,\n    destination: options?.destination || destination,\n    orientation: options?.orientation || orientation\n  })\n}\n\nexport function getGeodesicDistance(start: Cesium.Cartesian3, end: Cesium.Cartesian3, ellipsoid: Cesium.Ellipsoid) {\n  const { EllipsoidGeodesic, Ellipsoid } = Cesium\n  ellipsoid = ellipsoid || Ellipsoid.WGS84\n  const pickedPointCartographic = ellipsoid.cartesianToCartographic(start)\n  const lastPointCartographic = ellipsoid.cartesianToCartographic(end)\n  const geodesic = new EllipsoidGeodesic(pickedPointCartographic, lastPointCartographic)\n  return geodesic.surfaceDistance\n}\n\nexport function getHeadingPitchRoll(start: Cesium.Cartesian3, end: Cesium.Cartesian3, scene: Cesium.Scene, result?: Array<number>) {\n  const { Cartesian3 } = Cesium\n  if (Cartesian3.equals(start, end)) {\n    return undefined\n  }\n\n  //向量AB\n  const vector2 = Cesium.Cartesian3.subtract(end, start, new Cesium.Cartesian3())\n  //归一化\n  const normal = Cesium.Cartesian3.normalize(vector2, new Cesium.Cartesian3())\n  //旋转矩阵 rotationMatrixFromPositionVelocity源码中有，并未出现在cesiumAPI中\n  const rotationMatrix3 = Cesium.Transforms.rotationMatrixFromPositionVelocity(start, normal, scene.globe.ellipsoid)\n  const m = Cesium.Matrix4.fromRotationTranslation(rotationMatrix3, start)\n  const m1 = Cesium.Transforms.eastNorthUpToFixedFrame(\n    Cesium.Matrix4.getTranslation(m, new Cesium.Cartesian3()),\n    Cesium.Ellipsoid.WGS84,\n    new Cesium.Matrix4()\n  )\n  // 矩阵相除\n  const m3 = Cesium.Matrix4.multiply(Cesium.Matrix4.inverse(m1, new Cesium.Matrix4()), m, new Cesium.Matrix4())\n  // 得到旋转矩阵\n  const mat3 = Cesium.Matrix4.getMatrix3(m3, new Cesium.Matrix3())\n  // 计算四元数\n  const q = Cesium.Quaternion.fromRotationMatrix(mat3)\n  // 计算旋转角(弧度)\n  const hpr = Cesium.HeadingPitchRoll.fromQuaternion(q)\n  return hpr\n}\n\nexport function getOrientation(start: Cesium.Cartesian3, end: Cesium.Cartesian3, scene?: Cesium.Scene) {\n  const hpr = getHeadingPitchRoll(start, end, scene)\n  hpr.pitch = hpr.pitch + Math.PI / 2 + Math.PI\n  return Cesium.Transforms.headingPitchRollQuaternion(start, hpr)\n}\n\nexport function getPolylineSegmentEndpoint(start: Cesium.Cartesian3, heading: number, distance: number, ellipsoid: Cesium.Ellipsoid) {\n  const { HeadingPitchRoll, Transforms, Matrix4, Cartesian3, Cartesian4, Quaternion, Cartographic, Ellipsoid } = Cesium\n  ellipsoid = ellipsoid || Ellipsoid.WGS84\n  const hpr = new HeadingPitchRoll(heading, 0, 0)\n  const scale = new Cartesian3(1, 1, 1)\n  const matrix = Transforms.headingPitchRollToFixedFrame(start, hpr)\n  const translation = Matrix4.getColumn(matrix, 1, new Cartesian4())\n  const axis = new Cartesian3(translation.x, translation.y, translation.z)\n  const quaternion = Quaternion.fromAxisAngle(axis, distance * ellipsoid.oneOverRadii.x)\n  const hprMatrix = Matrix4.fromTranslationQuaternionRotationScale(Cartesian3.ZERO, quaternion, scale)\n  const position = Matrix4.multiplyByPoint(hprMatrix, start, new Cartesian3())\n  const startCartographic = Cartographic.fromCartesian(start, ellipsoid)\n  const positionCartographic = Cartographic.fromCartesian(position, ellipsoid)\n  positionCartographic.height = startCartographic.height\n  return Cartographic.toCartesian(positionCartographic, ellipsoid)\n}\n\nexport function calculateAreaByPostions(positions: Array<Cesium.Cartesian3>) {\n  let area = 0\n  const { CoplanarPolygonGeometry, VertexFormat, defined, Cartesian3 } = Cesium\n  const geometry = CoplanarPolygonGeometry.createGeometry(\n    CoplanarPolygonGeometry.fromPositions({\n      positions: positions,\n      vertexFormat: VertexFormat.POSITION_ONLY\n    })\n  )\n\n  if (!isUndefined(geometry) && defined(geometry)) {\n    const indices = geometry.indices\n    const positionValues = geometry.attributes.position.values as number[]\n    for (let i = 0; i < indices.length; i += 3) {\n      const indice0 = indices[i]\n      const indice1 = indices[i + 1]\n      const indice2 = indices[i + 2]\n\n      area += triangleArea(\n        Cartesian3.unpack(positionValues, 3 * indice0, {} as any),\n        Cartesian3.unpack(positionValues, 3 * indice1, {} as any),\n        Cartesian3.unpack(positionValues, 3 * indice2, {} as any)\n      )\n    }\n  }\n\n  return area\n}\n\nconst triangleArea = (vertexA, vertexB, vertexC) => {\n  const { Cartesian3 } = Cesium\n  const vectorBA = Cartesian3.subtract(vertexA, vertexB, {} as any)\n  const vectorBC = Cartesian3.subtract(vertexC, vertexB, {} as any)\n  const crossProduct = Cartesian3.cross(vectorBA, vectorBC, vectorBA)\n  return 0.5 * Cartesian3.magnitude(crossProduct)\n}\n\nconst restoreCursors: Array<string> = []\nexport function setViewerCursor(viewer: Cesium.Viewer, cursor: string) {\n  const restoreCursor = getComputedStyle(viewer.canvas).cursor\n  restoreCursors[restoreCursors.length - 1] !== restoreCursor && restoreCursors.push(restoreCursor)\n  viewer.canvas.setAttribute('style', `cursor: ${cursor}`)\n}\n\nexport function restoreViewerCursor(viewer: Cesium.Viewer, count = 1) {\n  for (let i = 0; i < count; i++) {\n    const cursor = restoreCursors.pop()\n    viewer.canvas.setAttribute('style', `cursor: ${cursor}`)\n  }\n}\n\nexport function makeJulianDate(val: string | Date | Cesium.JulianDate): Cesium.JulianDate {\n  const { JulianDate } = Cesium\n  if (val instanceof JulianDate) {\n    return val\n  } else if (isString(val)) {\n    return Cesium.JulianDate.fromDate(new Date(val))\n  } else if (val instanceof Date) {\n    return Cesium.JulianDate.fromDate(val)\n  }\n\n  return Cesium.JulianDate.now()\n}\n\nexport function makeHeadingPitchRoll(val: VcHeadingPitchRoll): Cesium.HeadingPitchRoll {\n  const { HeadingPitchRoll, Math: CesiumMath } = Cesium\n  if (val instanceof Cesium.HeadingPitchRoll) {\n    return val\n  } else if (Array.isArray(val)) {\n    // 认为是经纬度数组\n    return new HeadingPitchRoll(CesiumMath.toRadians(val[0]) || 0, CesiumMath.toRadians(val[1]) || 0, CesiumMath.toRadians(val[2]) || 0)\n  } else if (isPlainObject(val)) {\n    return new HeadingPitchRoll(val.heading || 0, val.pitch || 0, val.roll || 0)\n  }\n\n  return new HeadingPitchRoll()\n}\n\nexport function makeHeadingPitchRang(val: VcHeadingPitchRange): Cesium.HeadingPitchRange {\n  const { HeadingPitchRange, Math: CesiumMath } = Cesium\n  if (val instanceof Cesium.HeadingPitchRange) {\n    return val\n  } else if (Array.isArray(val)) {\n    return new HeadingPitchRange(CesiumMath.toRadians(val[0]) || 0, CesiumMath.toRadians(val[1]) || 0, val[2] || 0)\n  } else if (isPlainObject(val)) {\n    return new HeadingPitchRange(val.heading || 0, val.pitch || 0, val.range || 0)\n  }\n\n  return new HeadingPitchRange()\n}\n\nexport function getPolylineSegmentHeading(start: Cesium.Cartesian3, end: Cesium.Cartesian3) {\n  const { Cartesian3, Matrix4, Transforms, Math: CesiumMath } = Cesium\n  const cartesian3Scratch = new Cartesian3()\n  const matrix4Scratch = Transforms.eastNorthUpToFixedFrame(start)\n  Matrix4.inverse(matrix4Scratch, matrix4Scratch)\n  Matrix4.multiplyByPoint(matrix4Scratch, end, cartesian3Scratch)\n  Cartesian3.normalize(cartesian3Scratch, cartesian3Scratch)\n  return CesiumMath.toDegrees(Math.atan2(cartesian3Scratch.x, cartesian3Scratch.y))\n}\n\nexport function getPolylineSegmentPitch(start: Cesium.Cartesian3, end: Cesium.Cartesian3) {\n  const { Cartesian3, Matrix4, Transforms, Math: CesiumMath } = Cesium\n  const cartesian3Scratch = new Cartesian3()\n  const matrix4Scratch = Transforms.eastNorthUpToFixedFrame(start)\n  Matrix4.inverse(matrix4Scratch, matrix4Scratch)\n  Matrix4.multiplyByPoint(matrix4Scratch, end, cartesian3Scratch)\n  Cartesian3.normalize(cartesian3Scratch, cartesian3Scratch)\n  return CesiumMath.toDegrees(Math.asin(cartesian3Scratch.z))\n}\n\nexport function getFirstIntersection(\n  start: Cesium.Cartesian3,\n  end: Cesium.Cartesian3,\n  viewer: Cesium.Viewer,\n  objectsToExclude = []\n): Cesium.Cartesian3 {\n  const { Cartesian3, Ray, defined } = Cesium\n  const direction = Cartesian3.normalize(Cartesian3.subtract(end, start, new Cartesian3()), new Cartesian3())\n  const ray = new Ray(start, direction)\n  const result = viewer.scene.pickFromRay(ray, objectsToExclude)\n  if (defined(result)) {\n    if (defined(result.position)) {\n      const intersection = result.position\n      return intersection\n    }\n  }\n\n  return undefined\n}\n\nexport function heightToLevel(altitude: number) {\n  // 粗略计算\n  const A = 40487.57\n  const B = 0.00007096758\n  const C = 91610.74\n  const D = -40467.74\n\n  return Math.round(D + (A - D) / (1 + Math.pow(altitude / C, B)))\n}\n\nexport function compareCesiumVersion(a, b, operator: CompareOperator = '>=') {\n  return compare(a, b, operator)\n}\n\nexport function makeImageBasedLighting(options: VcImageBasedLighting) {\n  const { ImageBasedLighting, defined } = Cesium\n\n  if (options instanceof Cesium.ImageBasedLighting) {\n    return options\n  }\n\n  const imageBasedLighting = new ImageBasedLighting()\n\n  if (imageBasedLighting.imageBasedLightingFactor) {\n    imageBasedLighting.imageBasedLightingFactor = makeCartesian2(options.imageBasedLightingFactor) as Cesium.Cartesian2\n  }\n\n  if (imageBasedLighting.sphericalHarmonicCoefficients) {\n    imageBasedLighting.sphericalHarmonicCoefficients = makeCartesian3Array(options.sphericalHarmonicCoefficients) as Cesium.Cartesian3[]\n  }\n\n  if (imageBasedLighting.luminanceAtZenith) {\n    imageBasedLighting.luminanceAtZenith = Number(options.luminanceAtZenith)\n  }\n\n  if (defined(imageBasedLighting.specularEnvironmentMaps)) {\n    imageBasedLighting.specularEnvironmentMaps = options.specularEnvironmentMaps\n  }\n\n  return imageBasedLighting\n}\n"],"names":[],"mappings":"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"}