UNPKG

vue-cesium

Version:
1 lines 30 kB
{"version":3,"file":"CameraFlightPath.mjs","sources":["../../../../../../packages/components/controls/compass/CameraFlightPath.ts"],"sourcesContent":["import { AnyFunction } from '@vue-cesium/utils/types'\n/**\n * Creates tweens for camera flights.\n * <br /><br />\n * Mouse interaction is disabled during flights.\n *\n * @private\n */\nclass CameraFlightPath {\n static createTween(scene, options) {\n const { Cartesian2, Cartesian3, defaultValue, defined, DeveloperError, EasingFunction, Math: CesiumMath, SceneMode } = Cesium\n options = defaultValue(options, {})\n let destination = options.destination\n\n // >>includeStart('debug', pragmas.debug);\n if (!defined(scene)) {\n throw new DeveloperError('scene is required.')\n }\n if (!defined(destination)) {\n throw new DeveloperError('destination is required.')\n }\n // >>includeEnd('debug');\n const mode = scene.mode\n\n if (mode === SceneMode.MORPHING) {\n return emptyFlight()\n }\n\n const convert = defaultValue(options.convert, true)\n const projection = scene.mapProjection\n const ellipsoid = projection.ellipsoid\n const maximumHeight = options.maximumHeight\n const flyOverLongitude = options.flyOverLongitude\n const flyOverLongitudeWeight = options.flyOverLongitudeWeight\n const pitchAdjustHeight = options.pitchAdjustHeight\n let easingFunction = options.easingFunction\n\n if (convert && mode !== SceneMode.SCENE3D) {\n ellipsoid.cartesianToCartographic(destination, scratchCartographic)\n destination = projection.project(scratchCartographic, scratchDestination)\n }\n\n const camera = scene.camera\n const transform = options.endTransform\n if (defined(transform)) {\n camera._setTransform(transform)\n }\n\n let duration = options.duration\n if (!defined(duration)) {\n duration = Math.ceil(Cartesian3.distance(camera.position, destination) / 1000000.0) + 2.0\n duration = Math.min(duration, 3.0)\n }\n\n const heading = defaultValue(options.heading, 0.0)\n const pitch = defaultValue(options.pitch, -CesiumMath.PI_OVER_TWO)\n const roll = defaultValue(options.roll, 0.0)\n\n const controller = scene.screenSpaceCameraController\n controller.enableInputs = false\n\n const complete = wrapCallback(controller, options.complete)\n const cancel = wrapCallback(controller, options.cancel)\n\n const frustum = camera.frustum\n\n let empty = scene.mode === SceneMode.SCENE2D\n empty = empty && Cartesian2.equalsEpsilon(camera.position, destination, CesiumMath.EPSILON6)\n empty =\n empty && CesiumMath.equalsEpsilon(Math.max(frustum.right - frustum.left, frustum.top - frustum.bottom), destination.z, CesiumMath.EPSILON6)\n\n empty = empty || (scene.mode !== SceneMode.SCENE2D && Cartesian3.equalsEpsilon(destination, camera.position, CesiumMath.EPSILON10))\n\n empty =\n empty &&\n CesiumMath.equalsEpsilon(CesiumMath.negativePiToPi(heading), CesiumMath.negativePiToPi(camera.heading), CesiumMath.EPSILON10) &&\n CesiumMath.equalsEpsilon(CesiumMath.negativePiToPi(pitch), CesiumMath.negativePiToPi(camera.pitch), CesiumMath.EPSILON10) &&\n CesiumMath.equalsEpsilon(CesiumMath.negativePiToPi(roll), CesiumMath.negativePiToPi(camera.roll), CesiumMath.EPSILON10)\n\n if (empty) {\n return emptyFlight(complete, cancel)\n }\n\n const updateFunctions = new Array(4)\n updateFunctions[SceneMode.SCENE2D] = createUpdate2D\n updateFunctions[SceneMode.SCENE3D] = createUpdate3D\n updateFunctions[SceneMode.COLUMBUS_VIEW] = createUpdateCV\n\n if (duration <= 0.0) {\n const newOnComplete = function () {\n const update = updateFunctions[mode](\n scene,\n 1.0,\n destination,\n heading,\n pitch,\n roll,\n maximumHeight,\n flyOverLongitude,\n flyOverLongitudeWeight,\n pitchAdjustHeight\n )\n update({ time: 1.0 })\n\n if (typeof complete === 'function') {\n complete()\n }\n }\n return emptyFlight(newOnComplete, cancel)\n }\n\n const update = updateFunctions[mode](\n scene,\n duration,\n destination,\n heading,\n pitch,\n roll,\n maximumHeight,\n flyOverLongitude,\n flyOverLongitudeWeight,\n pitchAdjustHeight\n )\n\n if (!defined(easingFunction)) {\n const startHeight = camera.positionCartographic.height\n const endHeight = mode === SceneMode.SCENE3D ? ellipsoid.cartesianToCartographic(destination).height : destination.z\n\n if (startHeight > endHeight && startHeight > 11500.0) {\n easingFunction = EasingFunction.CUBIC_OUT\n } else {\n easingFunction = EasingFunction.QUINTIC_IN_OUT\n }\n }\n\n return {\n duration: duration,\n easingFunction: easingFunction,\n startObject: {\n time: 0.0\n },\n stopObject: {\n time: duration\n },\n update: update,\n complete: complete,\n cancel: cancel\n }\n }\n}\n\nfunction getAltitude(frustum, dx, dy) {\n const { PerspectiveFrustum, PerspectiveOffCenterFrustum } = Cesium\n let near\n let top\n let right\n if (frustum instanceof PerspectiveFrustum) {\n const tanTheta = Math.tan(0.5 * frustum.fovy)\n near = frustum.near\n top = frustum.near * tanTheta\n right = frustum.aspectRatio * top\n return Math.max((dx * near) / right, (dy * near) / top)\n } else if (frustum instanceof PerspectiveOffCenterFrustum) {\n near = frustum.near\n top = frustum.top\n right = frustum.right\n return Math.max((dx * near) / right, (dy * near) / top)\n }\n\n return Math.max(dx, dy)\n}\n\nconst scratchCart: any = {}\nconst scratchCart2: any = {}\n\nfunction createPitchFunction(startPitch, endPitch, heightFunction, pitchAdjustHeight) {\n const { defined, Math: CesiumMath } = Cesium\n if (defined(pitchAdjustHeight) && heightFunction(0.5) > pitchAdjustHeight) {\n const startHeight = heightFunction(0.0)\n const endHeight = heightFunction(1.0)\n const middleHeight = heightFunction(0.5)\n\n const d1 = middleHeight - startHeight\n const d2 = middleHeight - endHeight\n\n return function (time) {\n const altitude = heightFunction(time)\n if (time <= 0.5) {\n const t1 = (altitude - startHeight) / d1\n return CesiumMath.lerp(startPitch, -CesiumMath.PI_OVER_TWO, t1)\n }\n\n const t2 = (altitude - endHeight) / d2\n return CesiumMath.lerp(-CesiumMath.PI_OVER_TWO, endPitch, 1 - t2)\n }\n }\n return function (time) {\n return CesiumMath.lerp(startPitch, endPitch, time)\n }\n}\n\nfunction createHeightFunction(\n camera: Cesium.Camera,\n destination: Cesium.Cartesian3,\n startHeight: number,\n endHeight: number,\n optionAltitude\n): AnyFunction<any> {\n const { Cartesian3, defined, Math: CesiumMath } = Cesium\n let altitude = optionAltitude\n const maxHeight = Math.max(startHeight, endHeight)\n\n if (!defined(altitude)) {\n const start = camera.position\n const end = destination\n const up = camera.up\n const right = camera.right\n const frustum = camera.frustum\n\n const diff = Cartesian3.subtract(start, end, scratchCart)\n const verticalDistance = Cartesian3.magnitude(Cartesian3.multiplyByScalar(up, Cartesian3.dot(diff, up), scratchCart2))\n const horizontalDistance = Cartesian3.magnitude(Cartesian3.multiplyByScalar(right, Cartesian3.dot(diff, right), scratchCart2))\n\n altitude = Math.min(getAltitude(frustum, verticalDistance, horizontalDistance) * 0.2, 1000000000.0)\n }\n\n if (maxHeight < altitude) {\n const power = 8.0\n const factor = 1000000.0\n\n const s = -Math.pow((altitude - startHeight) * factor, 1.0 / power)\n const e = Math.pow((altitude - endHeight) * factor, 1.0 / power)\n\n return function (t) {\n const x = t * (e - s) + s\n return -Math.pow(x, power) / factor + altitude\n }\n }\n\n return function (t) {\n return CesiumMath.lerp(startHeight, endHeight, t)\n }\n}\n\nfunction adjustAngleForLERP(startAngle: number, endAngle: number) {\n const { Math: CesiumMath } = Cesium\n if (CesiumMath.equalsEpsilon(startAngle, CesiumMath.TWO_PI, CesiumMath.EPSILON11)) {\n startAngle = 0.0\n }\n\n if (endAngle > startAngle + Math.PI) {\n startAngle += CesiumMath.TWO_PI\n } else if (endAngle < startAngle - Math.PI) {\n startAngle -= CesiumMath.TWO_PI\n }\n\n return startAngle\n}\n\nconst scratchStart: any = {}\n\nfunction createUpdateCV(\n scene: Cesium.Scene,\n duration: number,\n destination: Cesium.Cartesian3,\n heading: number,\n pitch: number,\n roll: number,\n optionAltitude\n) {\n const { Cartesian2, Cartesian3, Math: CesiumMath } = Cesium\n const camera = scene.camera\n\n const start = Cartesian3.clone(camera.position, scratchStart)\n const startPitch = camera.pitch\n const startHeading = adjustAngleForLERP(camera.heading, heading)\n const startRoll = adjustAngleForLERP(camera.roll, roll)\n\n const heightFunction = createHeightFunction(camera, destination, start.z, destination.z, optionAltitude)\n\n function update(value) {\n const time = value.time / duration\n\n camera.setView({\n orientation: {\n heading: CesiumMath.lerp(startHeading, heading, time),\n pitch: CesiumMath.lerp(startPitch, pitch, time),\n roll: CesiumMath.lerp(startRoll, roll, time)\n }\n })\n\n Cartesian2.lerp(start, destination, time, camera.position)\n camera.position.z = heightFunction(time)\n }\n return update\n}\n\nfunction useLongestFlight(startCart, destCart) {\n const { Math: CesiumMath } = Cesium\n if (startCart.longitude < destCart.longitude) {\n startCart.longitude += CesiumMath.TWO_PI\n } else {\n destCart.longitude += CesiumMath.TWO_PI\n }\n}\n\nfunction useShortestFlight(startCart, destCart) {\n const { Math: CesiumMath } = Cesium\n const diff = startCart.longitude - destCart.longitude\n if (diff < -CesiumMath.PI) {\n startCart.longitude += CesiumMath.TWO_PI\n } else if (diff > CesiumMath.PI) {\n destCart.longitude += CesiumMath.TWO_PI\n }\n}\n\nconst scratchStartCart: any = {}\nconst scratchEndCart: any = {}\n\nfunction createUpdate3D(\n scene: Cesium.Scene,\n duration,\n destination,\n heading,\n pitch,\n roll,\n optionAltitude,\n optionFlyOverLongitude,\n optionFlyOverLongitudeWeight,\n optionPitchAdjustHeight\n) {\n const { Cartesian3, Cartographic, defined, Math: CesiumMath } = Cesium\n const camera = scene.camera\n const projection = scene.mapProjection\n const ellipsoid = projection.ellipsoid\n\n const startCart = Cartographic.clone(camera.positionCartographic, scratchStartCart)\n const startPitch = camera.pitch\n const startHeading = adjustAngleForLERP(camera.heading, heading)\n const startRoll = adjustAngleForLERP(camera.roll, roll)\n\n const destCart = ellipsoid.cartesianToCartographic(destination, scratchEndCart)\n startCart.longitude = CesiumMath.zeroToTwoPi(startCart.longitude)\n destCart.longitude = CesiumMath.zeroToTwoPi(destCart.longitude)\n\n let useLongFlight = false\n\n if (defined(optionFlyOverLongitude)) {\n const hitLon = CesiumMath.zeroToTwoPi(optionFlyOverLongitude)\n\n const lonMin = Math.min(startCart.longitude, destCart.longitude)\n const lonMax = Math.max(startCart.longitude, destCart.longitude)\n\n const hitInside = hitLon >= lonMin && hitLon <= lonMax\n\n if (defined(optionFlyOverLongitudeWeight)) {\n // Distance inside (0...2Pi)\n const din = Math.abs(startCart.longitude - destCart.longitude)\n // Distance outside (0...2Pi)\n const dot = CesiumMath.TWO_PI - din\n\n const hitDistance = hitInside ? din : dot\n const offDistance = hitInside ? dot : din\n\n if (hitDistance < offDistance * optionFlyOverLongitudeWeight && !hitInside) {\n useLongFlight = true\n }\n } else if (!hitInside) {\n useLongFlight = true\n }\n }\n\n if (useLongFlight) {\n useLongestFlight(startCart, destCart)\n } else {\n useShortestFlight(startCart, destCart)\n }\n\n const heightFunction = createHeightFunction(camera, destination, startCart.height, destCart.height, optionAltitude)\n const pitchFunction = createPitchFunction(startPitch, pitch, heightFunction, optionPitchAdjustHeight)\n\n // Isolate scope for update function.\n // to have local copies of vars used in lerp\n // Othervise, if you call nex\n // createUpdate3D (createAnimationTween)\n // before you played animation, variables will be overwriten.\n function isolateUpdateFunction() {\n const startLongitude = startCart.longitude\n const destLongitude = destCart.longitude\n const startLatitude = startCart.latitude\n const destLatitude = destCart.latitude\n\n return function update(value) {\n const time = value.time / duration\n\n const position = Cartesian3.fromRadians(\n CesiumMath.lerp(startLongitude, destLongitude, time),\n CesiumMath.lerp(startLatitude, destLatitude, time),\n heightFunction(time),\n scene.globe.ellipsoid\n )\n\n camera.setView({\n destination: position,\n orientation: {\n heading: CesiumMath.lerp(startHeading, heading, time),\n pitch: pitchFunction(time),\n roll: CesiumMath.lerp(startRoll, roll, time)\n }\n })\n }\n }\n return isolateUpdateFunction()\n}\n\nfunction createUpdate2D(scene, duration, destination, heading, pitch, roll, optionAltitude) {\n const { Cartesian2, Cartesian3, Math: CesiumMath } = Cesium\n const camera = scene.camera\n\n const start = Cartesian3.clone(camera.position, scratchStart)\n const startHeading = adjustAngleForLERP(camera.heading, heading)\n\n const startHeight = camera.frustum.right - camera.frustum.left\n const heightFunction = createHeightFunction(camera, destination, startHeight, destination.z, optionAltitude)\n\n function update(value) {\n const time = value.time / duration\n\n camera.setView({\n orientation: {\n heading: CesiumMath.lerp(startHeading, heading, time)\n }\n })\n\n Cartesian2.lerp(start, destination, time, camera.position)\n\n const zoom = heightFunction(time)\n\n const frustum = camera.frustum\n const ratio = frustum.top / frustum.right\n\n const incrementAmount = (zoom - (frustum.right - frustum.left)) * 0.5\n frustum.right += incrementAmount\n frustum.left -= incrementAmount\n frustum.top = ratio * frustum.right\n frustum.bottom = -frustum.top\n }\n return update\n}\n\nconst scratchCartographic = {}\nconst scratchDestination = {}\n\nfunction emptyFlight(complete?, cancel?) {\n return {\n startObject: {},\n stopObject: {},\n duration: 0.0,\n complete: complete,\n cancel: cancel\n }\n}\n\nfunction wrapCallback(controller, cb) {\n function wrapped() {\n if (typeof cb === 'function') {\n cb()\n }\n\n controller.enableInputs = true\n }\n return wrapped\n}\n\nexport default CameraFlightPath\n"],"names":["update"],"mappings":"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"}