From 6ce770b83fc4d8358c327a13b01c5d7f4c50f622 Mon Sep 17 00:00:00 2001 From: Christian Neumann Date: Tue, 13 Aug 2024 11:50:03 +0200 Subject: [PATCH 01/10] Revert "Remove padding from camera elevation if inside terrain." This reverts commit 644ae1f38142e5ab20c83fd0269ec6dd9b49a919. --- src/ui/camera.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/ui/camera.ts b/src/ui/camera.ts index 40d33381d73..03f24a094f9 100644 --- a/src/ui/camera.ts +++ b/src/ui/camera.ts @@ -1119,7 +1119,9 @@ export abstract class Camera extends Evented { */ _elevateCameraIfInsideTerrain(tr: Transform) : { pitch?: number; zoom?: number } { const camera = tr.getCameraPosition(); - const minAltitude = this.terrain.getElevationForLngLatZoom(camera.lngLat, tr.zoom); + const surfacePadding = Math.min(500, 20 * (25 - tr.zoom)); + const minAltitude = this.terrain.getElevationForLngLatZoom( + camera.lngLat, tr.zoom) + surfacePadding; if (camera.altitude < minAltitude) { const newCamera = this.calculateCameraOptionsFromTo( camera.lngLat, minAltitude, tr.center, tr.elevation); From 2efeea57c9c5bd42282cfb7ceab84e6cfb1c7c2d Mon Sep 17 00:00:00 2001 From: Christian Neumann Date: Tue, 13 Aug 2024 11:50:18 +0200 Subject: [PATCH 02/10] Reapply "Fix render tests for terrain." This reverts commit b104163c0ea621c9c3e95c92ed6dcedfbddedcd9. --- .../tests/terrain/fog-sky-blend/expected.png | Bin 2066 -> 2081 bytes .../render/tests/terrain/fog/expected.png | Bin 86698 -> 109698 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/test/integration/render/tests/terrain/fog-sky-blend/expected.png b/test/integration/render/tests/terrain/fog-sky-blend/expected.png index a9b443b46ddd56315b8e23d31506ac47966deca5..eb712372acbd984ba1245a9a91f836efdac1d00c 100644 GIT binary patch literal 2081 zcmeAS@N?(olHy`uVBq!ia0y~yU;;9k7&zE~)R&4YzZe+UUwFDWhEy=VJ$SKDmR*3^ z;GL~k*rS;~b(b1{=YI_1U^L0U$G{LQ#gO2~%y1@?p}~@u!C*Nf!!r|x19R9IW?W`q zC?1s@4FoEtguj#R85y>H+5bnJA;J6qSup4OZ)=7F)Bc^i50Y8`hlSzBrTO30K|)W! z5>@rAK%w}bd<+|w-hUs?(4hPG9GI-z&%}`P^7?O4pjrEYi8cDxc90RTbAd{7feF`p z|2;OK&VBPiQouAlt?r&bNXibR>T?}XbLMAGprP}>3j-C~SAt9f3%^tcY58>$Bs~8+ zSV;{?ax%zOc3^er%(!_V9Zx`N{XxvCogf0CG)@nw^`0%r<{}XB3FOVwAdl_l2I`p( zB6fm|hbW8%y3-e=1?rP21Bq2 xh;s+z0Hg%|4iqM%<-llRI9ekNp_=crz2PaTzx)1F?*LZ)44$rjF6*2UngCJmd};sy literal 2066 zcmeAS@N?(olHy`uVBq!ia0y~yU;;9k7&zE~)R&4YzZe+UZ+f~ohEy=VJ$QSogewEH zL4WzXW)_Qw+`Ah7&5q{UxMZ?HV&%hA-IA-t?G1wcNG=DO(07 z=7D4&ih$W}!&5VmqH179%-Q)Im^r6aUjpjSJI4u>ng`6K(eF-zn9t@QM2kVzAVl9; zf=rl=Q1Fa}L85rFFwmiAIT;L|sez<{S-!Z~59rj#gg=1|BXO64${Hm4{fbILL2;!Y^1G%<$^IVYtY+6-Y! zgj!2ZrDD$NMp6z5IiG&7KA-PD@w={%OW}RxeR#f}ugB^6j&5OoR%F+KUE8*86Cslb z=eKPW2Hy&AgYE=h{)BX`ZWAgclL-b^AwpBH>DTRhvWtE$4PD+2A&YRw6e;NrtW{p+ zwDb`{>sqUz?=oodPnEh&&V@-3-6sbKBQ(+ma*9y-I}K@A-`akpnDP5H<#<=2hSbGU)SCEs;cl8 z4$RJgpHb_FVotS)IFBbc-sBB^)1A`~OgK&AEfuUYbT_8{;zjJ^WVLxM_HkbLw?`1( z0BuJ3G-HbPPulLeJ6BDX>qxz6Gy49^>r3Z^LY?v>uK&Gur6ZO zdkZ;D$*QLbH8^|d%-Kb&h@-=&puy0dmb&oGy5g5a4VO(u`|JFCL$oUP*uj}*9@V>}IF5R0k`GuCA)BWGG ztdy7hYgnUVFQ(Frp`Cewl5|5qhX{jvv1^gDZLX{Ct}&@${B~##cTtu$Z71h zZLa^8sujTmCo~F?4(%LoyxA%OiZN82{}&+j)-j#5*{HkJhA0l*j-}#l<=Dmui^=q(8 zu;#*!$gO>hf&X{69Us$vZ_wU)2Ynd0U;ZKVwr{gv<-c9YHEF2I6BB2rVk+cj?nMpm zQ^DF7`!*XsJ<9VNW($8ky>;gw*wQYWZ->6+MQncR2(5#E!T8F(G$>0^PBEF&A9nus z4*mu0+v3=pYLdUTx&81+XUAV|kU78A>9p0}^@Kx5EDJg!TfP!|q0eLTsstxz=2q7e zW9%*b)6N*2_;vQBp6$UyL5t>2_mTd)uR!gF*LKYuIr@#w%lp>a^EKjq{WlT4tsmp| zu;(#8ygRh3iuS2KkQC+6y~9J_-XZ;Ac9l@OK!aa%D>Hikq5t<`L*sPSvU;4~=e*5y z+Df0?xBqtN9u(I1sV31q(ICnxa!&dSN_+jMYX0L&PqU)#?c|F;1HL4{&Lzsg+AKc{yJYy^p+pIMJ#-_`6MO&9{bvGDe-qgezvX%)d_e%oo= ze7i+j_r@wZ^2+!V@RG^>J&e%2=f(~OORWM>eZ3lSPHK-sLkLrz6(0 zDjvmMLOpzlI@a{xf_KucR{Rckqe~y}HLfqHLOkP1xo*gu-_IL2VnS)5G^edOZC}MJ zvNM=wv*CDq*k1W7(3`{41QnWgi}gj?kxGUSudvyuhU}k~w{6aKcc!qj?A*>iB-B}T z_&`d99Gr2+7D_0C1ta=)X+uIn7jx>GKeWuk;0+1e#wW#}x2$zG`PBzUv~K=Zl@D{; zS}!kG9Ao@ZD@RyZSlY5bSZ333-+sVQ!lQzJ;Sl8hD6M@~RuYwHIM;}Wf$hGf=@ZgtH)&V%2H^~m7jj1de5WN{P4lI(w^fRl(ax;g zOu0(rf)z7DMfsAUl00ih42=lkWi

T0?EV-H95+(DH1?%U_sD%&D|02Mz?xM7=cd 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 MrTTW!U!MK{0HhT1T>t<8 literal 86698 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 Date: Tue, 13 Aug 2024 12:35:24 +0200 Subject: [PATCH 03/10] Don't directly update transform in _finalizeElevation. --- src/ui/camera.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/ui/camera.ts b/src/ui/camera.ts index 03f24a094f9..db89678616c 100644 --- a/src/ui/camera.ts +++ b/src/ui/camera.ts @@ -1085,7 +1085,9 @@ export abstract class Camera extends Evented { _finalizeElevation() { this._elevationFreeze = false; - this.transform.recalculateZoom(this.terrain); + const tr = this._getTransformForUpdate(); + tr.recalculateZoom(this.terrain); + this._applyUpdatedTransform(tr); } /** From fe6191c166ac876ad07af08b277ec3e3d4538a9b Mon Sep 17 00:00:00 2001 From: Christian Neumann Date: Tue, 13 Aug 2024 12:35:50 +0200 Subject: [PATCH 04/10] Prevent throwing in case of wrong zoom calculation. --- src/geo/transform.ts | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/geo/transform.ts b/src/geo/transform.ts index b5cae076340..3e5648f9463 100644 --- a/src/geo/transform.ts +++ b/src/geo/transform.ts @@ -538,12 +538,15 @@ export class Transform { const requiredWorldSize = requiredPixelPerMeter / mercatorZfromAltitude(1, center.lat); // Since worldSize = this.tileSize * scale: const requiredScale = requiredWorldSize / this.tileSize; - const zoom = this.scaleZoom(requiredScale); - - // update matrices - this._elevation = elevation; - this._center = center; - this.zoom = zoom; + try { + const zoom = this.scaleZoom(requiredScale); + // update matrices + this._elevation = elevation; + this._center = center; + this.zoom = zoom; + } catch (_e) { + console.error(`Could not recalculate zoom. requiredScale: ${requiredScale}`); + } } setLocationAtPoint(lnglat: LngLat, point: Point) { From 3484b914ce2647f30872140debec2171740d3e44 Mon Sep 17 00:00:00 2001 From: Christian Neumann Date: Thu, 12 Sep 2024 10:05:54 +0200 Subject: [PATCH 05/10] Rework catching of errors on zoom recalculation. --- src/geo/transform.ts | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/geo/transform.ts b/src/geo/transform.ts index de385422cc2..bf537316020 100644 --- a/src/geo/transform.ts +++ b/src/geo/transform.ts @@ -518,6 +518,10 @@ export class Transform { * This method works in combination with freezeElevation activated. * freezeElevation is enabled during map-panning because during this the camera should sit in constant height. * After panning finished, call this method to recalculate the zoomlevel for the current camera-height in current terrain. + * + * If any of the values would lead to an invalid zoom, the recalculation is + * skipped and an error logged to the console. + * * @param terrain - the terrain */ recalculateZoom(terrain: Terrain) { @@ -539,15 +543,20 @@ export class Transform { const requiredWorldSize = requiredPixelPerMeter / mercatorZfromAltitude(1, center.lat); // Since worldSize = this.tileSize * scale: const requiredScale = requiredWorldSize / this.tileSize; + const zoom = this.scaleZoom(requiredScale); + + // First try the recalculation on a clone. If setting the zoom throws, + // don't recalculate the zoom. + const clonedTransform = this.clone(); + clonedTransform._elevation = elevation; + clonedTransform._center = center; try { - const zoom = this.scaleZoom(requiredScale); - // update matrices - this._elevation = elevation; - this._center = center; - this.zoom = zoom; + clonedTransform.zoom = zoom; } catch (_e) { console.error(`Could not recalculate zoom. requiredScale: ${requiredScale}`); + return; } + this.apply(clonedTransform); } setLocationAtPoint(lnglat: LngLat, point: Point) { From 103794de219a287701f450f9215b205f38ef449e Mon Sep 17 00:00:00 2001 From: Christian Neumann Date: Thu, 19 Sep 2024 08:56:07 +0200 Subject: [PATCH 06/10] Fix camera unit test. --- src/ui/camera.test.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/ui/camera.test.ts b/src/ui/camera.test.ts index bff2be07dc0..8eeb21e44df 100644 --- a/src/ui/camera.test.ts +++ b/src/ui/camera.test.ts @@ -1785,7 +1785,9 @@ describe('#flyTo', () => { }; camera.transform = { elevation: 0, - recalculateZoom: () => true + recalculateZoom: () => true, + clone: () => camera.transform, + apply: () => {}, }; camera._prepareElevation([10, 0]); From 1ee53eeb35b9f0deca7f666b1fadcef845575609 Mon Sep 17 00:00:00 2001 From: Christian Neumann Date: Thu, 19 Sep 2024 17:12:39 +0200 Subject: [PATCH 07/10] Fix render test. --- .../terrain/fog-no-sky-blend/expected.png | Bin 1937 -> 1937 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/test/integration/render/tests/terrain/fog-no-sky-blend/expected.png b/test/integration/render/tests/terrain/fog-no-sky-blend/expected.png index 0046b82647819ec551b0c253ebd73f0cc6ff01a3..f62de64e672c93d6f0a6c7a516b3a9f0cd2ee9f5 100644 GIT binary patch delta 44 zcmbQpKaqdKDkfI_oeT`Yn=dl2X5JW}#3;(2KAH1>_?onE1|aZs^>bP0l+XkKLQD=0 delta 42 xcmbQpKaqdKDyE4Gl31t5Ff?dx7G%z05joMp`Cs#u_8tZx@O1TaS?83{1OPu}4qyNP From cd886150a12b2ee24b93f6a9cc84df491068d03b Mon Sep 17 00:00:00 2001 From: Christian Neumann Date: Mon, 30 Sep 2024 11:28:01 +0200 Subject: [PATCH 08/10] Add changelog entry. --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f0a9646174d..871d5c9dfc3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ - _...Add new stuff here..._ ### 🐞 Bug fixes -- _...Add new stuff here..._ +- Fix crashes when camera is inside terrain. Add padding between camera and surface to prevent cases like this. ([#1542](https://github.com/maplibre/maplibre-gl-js/issues/1542)) ## 5.0.0-pre.1 From 9940ea59f6e6380490ac96090e01f03531c05e33 Mon Sep 17 00:00:00 2001 From: Christian Neumann Date: Mon, 30 Sep 2024 17:41:41 +0200 Subject: [PATCH 09/10] Remove old transform, apply changes to mercator transform. --- src/geo/projection/mercator_transform.ts | 20 + src/geo/transform.ts | 1084 ---------------------- 2 files changed, 20 insertions(+), 1084 deletions(-) delete mode 100644 src/geo/transform.ts diff --git a/src/geo/projection/mercator_transform.ts b/src/geo/projection/mercator_transform.ts index 0347a4ecd61..bc18a86a1a6 100644 --- a/src/geo/projection/mercator_transform.ts +++ b/src/geo/projection/mercator_transform.ts @@ -260,6 +260,14 @@ export class MercatorTransform implements ITransform { return mercatorCoveringTiles(this, options, this._invViewProjMatrix); } + /** + * Recalculates the zoom. + * + * If any of the values would lead to an invalid zoom, the recalculation is + * skipped and an error logged to the console. + * + * @param terrain - the terrain + */ recalculateZoom(terrain: Terrain): void { const origElevation = this.elevation; const origAltitude = Math.cos(this._helper._pitch) * this._cameraToCenterDistance / this._helper._pixelPerMeter; @@ -281,6 +289,18 @@ export class MercatorTransform implements ITransform { const requiredScale = requiredWorldSize / this.tileSize; const zoom = scaleZoom(requiredScale); + // First try the recalculation on a clone. If setting the zoom throws, + // don't recalculate the zoom. + const clonedTransform = this.clone(); + clonedTransform.setElevation(elevation); + clonedTransform.setCenter(center); + try { + clonedTransform.setZoom(zoom); + } catch (_e) { + console.error(`Could not recalculate zoom. requiredScale: ${requiredScale}`); + return; + } + // update matrices this._helper._elevation = elevation; this._helper._center = center; diff --git a/src/geo/transform.ts b/src/geo/transform.ts deleted file mode 100644 index 64719108485..00000000000 --- a/src/geo/transform.ts +++ /dev/null @@ -1,1084 +0,0 @@ -import {LngLat} from './lng_lat'; -import {LngLatBounds} from './lng_lat_bounds'; -import {MercatorCoordinate, mercatorXfromLng, mercatorYfromLat, mercatorZfromAltitude} from './mercator_coordinate'; -import Point from '@mapbox/point-geometry'; -import {wrap, clamp} from '../util/util'; -import {interpolates} from '@maplibre/maplibre-gl-style-spec'; -import {EXTENT} from '../data/extent'; -import {vec3, vec4, mat4, mat2, vec2} from 'gl-matrix'; -import {Aabb, Frustum} from '../util/primitives'; -import {EdgeInsets} from './edge_insets'; - -import {UnwrappedTileID, OverscaledTileID, CanonicalTileID} from '../source/tile_id'; -import type {PaddingOptions} from './edge_insets'; -import {Terrain} from '../render/terrain'; - -export const MAX_VALID_LATITUDE = 85.051129; - -/** - * @internal - * A single transform, generally used for a single tile to be - * scaled, rotated, and zoomed. - */ -export class Transform { - tileSize: number; - tileZoom: number; - lngRange: [number, number]; - latRange: [number, number]; - scale: number; - width: number; - height: number; - angle: number; - rotationMatrix: mat2; - pixelsToGLUnits: [number, number]; - cameraToCenterDistance: number; - mercatorMatrix: mat4; - projectionMatrix: mat4; - modelViewProjectionMatrix: mat4; - invModelViewProjectionMatrix: mat4; - alignedModelViewProjectionMatrix: mat4; - fogMatrix: mat4; - pixelMatrix: mat4; - pixelMatrix3D: mat4; - pixelMatrixInverse: mat4; - glCoordMatrix: mat4; - labelPlaneMatrix: mat4; - minElevationForCurrentTile: number; - _fov: number; - _pitch: number; - _zoom: number; - _unmodified: boolean; - _renderWorldCopies: boolean; - _minZoom: number; - _maxZoom: number; - _minPitch: number; - _maxPitch: number; - _center: LngLat; - _elevation: number; - _pixelPerMeter: number; - _edgeInsets: EdgeInsets; - _constraining: boolean; - _posMatrixCache: {[_: string]: mat4}; - _alignedPosMatrixCache: {[_: string]: mat4}; - _fogMatrixCache: {[_: string]: mat4}; - /** - * This value represents the distance from the camera to the far clipping plane. - * It is used in the calculation of the projection matrix to determine which objects are visible. - * farZ should be larger than nearZ. - */ - farZ: number; - /** - * This value represents the distance from the camera to the near clipping plane. - * It is used in the calculation of the projection matrix to determine which objects are visible. - * nearZ should be smaller than farZ. - */ - nearZ: number; - - constructor(minZoom?: number, maxZoom?: number, minPitch?: number, maxPitch?: number, renderWorldCopies?: boolean) { - this.tileSize = 512; // constant - - this._renderWorldCopies = renderWorldCopies === undefined ? true : !!renderWorldCopies; - this._minZoom = minZoom || 0; - this._maxZoom = maxZoom || 22; - - this._minPitch = (minPitch === undefined || minPitch === null) ? 0 : minPitch; - this._maxPitch = (maxPitch === undefined || maxPitch === null) ? 60 : maxPitch; - - this.setMaxBounds(); - - this.width = 0; - this.height = 0; - this._center = new LngLat(0, 0); - this._elevation = 0; - this.zoom = 0; - this.angle = 0; - this._fov = 0.6435011087932844; - this._pitch = 0; - this._unmodified = true; - this._edgeInsets = new EdgeInsets(); - this._posMatrixCache = {}; - this._alignedPosMatrixCache = {}; - this._fogMatrixCache = {}; - this.minElevationForCurrentTile = 0; - } - - clone(): Transform { - const clone = new Transform(this._minZoom, this._maxZoom, this._minPitch, this.maxPitch, this._renderWorldCopies); - clone.apply(this); - return clone; - } - - apply(that: Transform) { - this.tileSize = that.tileSize; - this.latRange = that.latRange; - this.lngRange = that.lngRange; - this.width = that.width; - this.height = that.height; - this._center = that._center; - this._elevation = that._elevation; - this.minElevationForCurrentTile = that.minElevationForCurrentTile; - this.zoom = that.zoom; - this.angle = that.angle; - this._fov = that._fov; - this._pitch = that._pitch; - this._unmodified = that._unmodified; - this._edgeInsets = that._edgeInsets.clone(); - this._calcMatrices(); - } - - get minZoom(): number { return this._minZoom; } - set minZoom(zoom: number) { - if (this._minZoom === zoom) return; - this._minZoom = zoom; - this.zoom = Math.max(this.zoom, zoom); - } - - get maxZoom(): number { return this._maxZoom; } - set maxZoom(zoom: number) { - if (this._maxZoom === zoom) return; - this._maxZoom = zoom; - this.zoom = Math.min(this.zoom, zoom); - } - - get minPitch(): number { return this._minPitch; } - set minPitch(pitch: number) { - if (this._minPitch === pitch) return; - this._minPitch = pitch; - this.pitch = Math.max(this.pitch, pitch); - } - - get maxPitch(): number { return this._maxPitch; } - set maxPitch(pitch: number) { - if (this._maxPitch === pitch) return; - this._maxPitch = pitch; - this.pitch = Math.min(this.pitch, pitch); - } - - get renderWorldCopies(): boolean { return this._renderWorldCopies; } - set renderWorldCopies(renderWorldCopies: boolean) { - if (renderWorldCopies === undefined) { - renderWorldCopies = true; - } else if (renderWorldCopies === null) { - renderWorldCopies = false; - } - - this._renderWorldCopies = renderWorldCopies; - } - - get worldSize(): number { - return this.tileSize * this.scale; - } - - get centerOffset(): Point { - return this.centerPoint._sub(this.size._div(2)); - } - - get size(): Point { - return new Point(this.width, this.height); - } - - get bearing(): number { - return -this.angle / Math.PI * 180; - } - set bearing(bearing: number) { - const b = -wrap(bearing, -180, 180) * Math.PI / 180; - if (this.angle === b) return; - this._unmodified = false; - this.angle = b; - this._calcMatrices(); - - // 2x2 matrix for rotating points - this.rotationMatrix = mat2.create(); - mat2.rotate(this.rotationMatrix, this.rotationMatrix, this.angle); - } - - get pitch(): number { - return this._pitch / Math.PI * 180; - } - set pitch(pitch: number) { - const p = clamp(pitch, this.minPitch, this.maxPitch) / 180 * Math.PI; - if (this._pitch === p) return; - this._unmodified = false; - this._pitch = p; - this._calcMatrices(); - } - - get fov(): number { - return this._fov / Math.PI * 180; - } - set fov(fov: number) { - fov = Math.max(0.01, Math.min(60, fov)); - if (this._fov === fov) return; - this._unmodified = false; - this._fov = fov / 180 * Math.PI; - this._calcMatrices(); - } - - get zoom(): number { return this._zoom; } - set zoom(zoom: number) { - const constrainedZoom = Math.min(Math.max(zoom, this.minZoom), this.maxZoom); - if (this._zoom === constrainedZoom) return; - this._unmodified = false; - this._zoom = constrainedZoom; - this.tileZoom = Math.max(0, Math.floor(constrainedZoom)); - this.scale = this.zoomScale(constrainedZoom); - this._constrain(); - this._calcMatrices(); - } - - get center(): LngLat { return this._center; } - set center(center: LngLat) { - if (center.lat === this._center.lat && center.lng === this._center.lng) return; - this._unmodified = false; - this._center = center; - this._constrain(); - this._calcMatrices(); - } - - /** - * Elevation at current center point, meters above sea level - */ - get elevation(): number { return this._elevation; } - set elevation(elevation: number) { - if (elevation === this._elevation) return; - this._elevation = elevation; - this._constrain(); - this._calcMatrices(); - } - - get padding(): PaddingOptions { return this._edgeInsets.toJSON(); } - set padding(padding: PaddingOptions) { - if (this._edgeInsets.equals(padding)) return; - this._unmodified = false; - //Update edge-insets in place - this._edgeInsets.interpolate(this._edgeInsets, padding, 1); - this._calcMatrices(); - } - - /** - * The center of the screen in pixels with the top-left corner being (0,0) - * and +y axis pointing downwards. This accounts for padding. - */ - get centerPoint(): Point { - return this._edgeInsets.getCenter(this.width, this.height); - } - - /** - * Returns if the padding params match - * - * @param padding - the padding to check against - * @returns true if they are equal, false otherwise - */ - isPaddingEqual(padding: PaddingOptions): boolean { - return this._edgeInsets.equals(padding); - } - - /** - * Helper method to update edge-insets in place - * - * @param start - the starting padding - * @param target - the target padding - * @param t - the step/weight - */ - interpolatePadding(start: PaddingOptions, target: PaddingOptions, t: number) { - this._unmodified = false; - this._edgeInsets.interpolate(start, target, t); - this._constrain(); - this._calcMatrices(); - } - - /** - * Return a zoom level that will cover all tiles the transform - * @param options - the options - * @returns zoom level An integer zoom level at which all tiles will be visible. - */ - coveringZoomLevel(options: { - /** - * Target zoom level. If true, the value will be rounded to the closest integer. Otherwise the value will be floored. - */ - roundZoom?: boolean; - /** - * Tile size, expressed in screen pixels. - */ - tileSize: number; - }): number { - const z = (options.roundZoom ? Math.round : Math.floor)( - this.zoom + this.scaleZoom(this.tileSize / options.tileSize) - ); - // At negative zoom levels load tiles from z0 because negative tile zoom levels don't exist. - return Math.max(0, z); - } - - /** - * Return any "wrapped" copies of a given tile coordinate that are visible - * in the current view. - */ - getVisibleUnwrappedCoordinates(tileID: CanonicalTileID) { - const result = [new UnwrappedTileID(0, tileID)]; - if (this._renderWorldCopies) { - const utl = this.pointCoordinate(new Point(0, 0)); - const utr = this.pointCoordinate(new Point(this.width, 0)); - const ubl = this.pointCoordinate(new Point(this.width, this.height)); - const ubr = this.pointCoordinate(new Point(0, this.height)); - const w0 = Math.floor(Math.min(utl.x, utr.x, ubl.x, ubr.x)); - const w1 = Math.floor(Math.max(utl.x, utr.x, ubl.x, ubr.x)); - - // Add an extra copy of the world on each side to properly render ImageSources and CanvasSources. - // Both sources draw outside the tile boundaries of the tile that "contains them" so we need - // to add extra copies on both sides in case offscreen tiles need to draw into on-screen ones. - const extraWorldCopy = 1; - - for (let w = w0 - extraWorldCopy; w <= w1 + extraWorldCopy; w++) { - if (w === 0) continue; - result.push(new UnwrappedTileID(w, tileID)); - } - } - return result; - } - - /** - * Return all coordinates that could cover this transform for a covering - * zoom level. - * @param options - the options - * @returns OverscaledTileIDs - */ - coveringTiles( - options: { - tileSize: number; - minzoom?: number; - maxzoom?: number; - roundZoom?: boolean; - reparseOverscaled?: boolean; - renderWorldCopies?: boolean; - terrain?: Terrain; - } - ): Array { - let z = this.coveringZoomLevel(options); - const actualZ = z; - - if (options.minzoom !== undefined && z < options.minzoom) return []; - if (options.maxzoom !== undefined && z > options.maxzoom) z = options.maxzoom; - - const cameraCoord = this.pointCoordinate(this.getCameraPoint()); - const centerCoord = MercatorCoordinate.fromLngLat(this.center); - const numTiles = Math.pow(2, z); - const cameraPoint = [numTiles * cameraCoord.x, numTiles * cameraCoord.y, 0]; - const centerPoint = [numTiles * centerCoord.x, numTiles * centerCoord.y, 0]; - const cameraFrustum = Frustum.fromInvProjectionMatrix(this.invModelViewProjectionMatrix, this.worldSize, z); - - // No change of LOD behavior for pitch lower than 60 and when there is no top padding: return only tile ids from the requested zoom level - let minZoom = options.minzoom || 0; - // Use 0.1 as an epsilon to avoid for explicit == 0.0 floating point checks - if (!options.terrain && this.pitch <= 60.0 && this._edgeInsets.top < 0.1) - minZoom = z; - - // There should always be a certain number of maximum zoom level tiles surrounding the center location in 2D or in front of the camera in 3D - const radiusOfMaxLvlLodInTiles = options.terrain ? 2 / Math.min(this.tileSize, options.tileSize) * this.tileSize : 3; - - const newRootTile = (wrap: number): any => { - return { - aabb: new Aabb([wrap * numTiles, 0, 0], [(wrap + 1) * numTiles, numTiles, 0]), - zoom: 0, - x: 0, - y: 0, - wrap, - fullyVisible: false - }; - }; - - // Do a depth-first traversal to find visible tiles and proper levels of detail - const stack = []; - const result = []; - const maxZoom = z; - const overscaledZ = options.reparseOverscaled ? actualZ : z; - - if (this._renderWorldCopies) { - // Render copy of the globe thrice on both sides - for (let i = 1; i <= 3; i++) { - stack.push(newRootTile(-i)); - stack.push(newRootTile(i)); - } - } - - stack.push(newRootTile(0)); - - while (stack.length > 0) { - const it = stack.pop(); - const x = it.x; - const y = it.y; - let fullyVisible = it.fullyVisible; - - // Visibility of a tile is not required if any of its ancestor if fully inside the frustum - if (!fullyVisible) { - const intersectResult = it.aabb.intersects(cameraFrustum); - - if (intersectResult === 0) - continue; - - fullyVisible = intersectResult === 2; - } - - const refPoint = options.terrain ? cameraPoint : centerPoint; - const distanceX = it.aabb.distanceX(refPoint); - const distanceY = it.aabb.distanceY(refPoint); - const longestDim = Math.max(Math.abs(distanceX), Math.abs(distanceY)); - - // We're using distance based heuristics to determine if a tile should be split into quadrants or not. - // radiusOfMaxLvlLodInTiles defines that there's always a certain number of maxLevel tiles next to the map center. - // Using the fact that a parent node in quadtree is twice the size of its children (per dimension) - // we can define distance thresholds for each relative level: - // f(k) = offset + 2 + 4 + 8 + 16 + ... + 2^k. This is the same as "offset+2^(k+1)-2" - const distToSplit = radiusOfMaxLvlLodInTiles + (1 << (maxZoom - it.zoom)) - 2; - - // Have we reached the target depth or is the tile too far away to be any split further? - if (it.zoom === maxZoom || (longestDim > distToSplit && it.zoom >= minZoom)) { - const dz = maxZoom - it.zoom, dx = cameraPoint[0] - 0.5 - (x << dz), dy = cameraPoint[1] - 0.5 - (y << dz); - result.push({ - tileID: new OverscaledTileID(it.zoom === maxZoom ? overscaledZ : it.zoom, it.wrap, it.zoom, x, y), - distanceSq: vec2.sqrLen([centerPoint[0] - 0.5 - x, centerPoint[1] - 0.5 - y]), - // this variable is currently not used, but may be important to reduce the amount of loaded tiles - tileDistanceToCamera: Math.sqrt(dx * dx + dy * dy) - }); - continue; - } - - for (let i = 0; i < 4; i++) { - const childX = (x << 1) + (i % 2); - const childY = (y << 1) + (i >> 1); - const childZ = it.zoom + 1; - let quadrant = it.aabb.quadrant(i); - if (options.terrain) { - const tileID = new OverscaledTileID(childZ, it.wrap, childZ, childX, childY); - const minMax = options.terrain.getMinMaxElevation(tileID); - const minElevation = minMax.minElevation ?? this.elevation; - const maxElevation = minMax.maxElevation ?? this.elevation; - quadrant = new Aabb( - [quadrant.min[0], quadrant.min[1], minElevation] as vec3, - [quadrant.max[0], quadrant.max[1], maxElevation] as vec3 - ); - } - stack.push({aabb: quadrant, zoom: childZ, x: childX, y: childY, wrap: it.wrap, fullyVisible}); - } - } - - return result.sort((a, b) => a.distanceSq - b.distanceSq).map(a => a.tileID); - } - - resize(width: number, height: number) { - this.width = width; - this.height = height; - - this.pixelsToGLUnits = [2 / width, -2 / height]; - this._constrain(); - this._calcMatrices(); - } - - get unmodified(): boolean { return this._unmodified; } - - zoomScale(zoom: number) { return Math.pow(2, zoom); } - scaleZoom(scale: number) { return Math.log(scale) / Math.LN2; } - - /** - * Convert from LngLat to world coordinates (Mercator coordinates scaled by 512) - * @param lnglat - the lngLat - * @returns Point - */ - project(lnglat: LngLat) { - const lat = clamp(lnglat.lat, -MAX_VALID_LATITUDE, MAX_VALID_LATITUDE); - return new Point( - mercatorXfromLng(lnglat.lng) * this.worldSize, - mercatorYfromLat(lat) * this.worldSize); - } - - /** - * Convert from world coordinates ([0, 512],[0, 512]) to LngLat ([-180, 180], [-90, 90]) - * @param point - world coordinate - * @returns LngLat - */ - unproject(point: Point): LngLat { - return new MercatorCoordinate(point.x / this.worldSize, point.y / this.worldSize).toLngLat(); - } - - get point(): Point { return this.project(this.center); } - - /** - * get the camera position in LngLat and altitudes in meter - * @returns An object with lngLat & altitude. - */ - getCameraPosition(): { - lngLat: LngLat; - altitude: number; - } { - const lngLat = this.pointLocation(this.getCameraPoint()); - const altitude = Math.cos(this._pitch) * this.cameraToCenterDistance / this._pixelPerMeter; - return {lngLat, altitude: altitude + this.elevation}; - } - - /** - * This method works in combination with freezeElevation activated. - * freezeElevation is enabled during map-panning because during this the camera should sit in constant height. - * After panning finished, call this method to recalculate the zoomlevel for the current camera-height in current terrain. - * - * If any of the values would lead to an invalid zoom, the recalculation is - * skipped and an error logged to the console. - * - * @param terrain - the terrain - */ - recalculateZoom(terrain: Terrain) { - const origElevation = this.elevation; - const origAltitude = Math.cos(this._pitch) * this.cameraToCenterDistance / this._pixelPerMeter; - - // find position the camera is looking on - const center = this.pointLocation(this.centerPoint, terrain); - const elevation = terrain.getElevationForLngLatZoom(center, this.tileZoom); - const deltaElevation = this.elevation - elevation; - if (!deltaElevation) return; - - // The camera's altitude off the ground + the ground's elevation = a constant: - // this means the camera stays at the same total height. - const requiredAltitude = origAltitude + origElevation - elevation; - // Since altitude = Math.cos(this._pitch) * this.cameraToCenterDistance / pixelPerMeter: - const requiredPixelPerMeter = Math.cos(this._pitch) * this.cameraToCenterDistance / requiredAltitude; - // Since pixelPerMeter = mercatorZfromAltitude(1, center.lat) * worldSize: - const requiredWorldSize = requiredPixelPerMeter / mercatorZfromAltitude(1, center.lat); - // Since worldSize = this.tileSize * scale: - const requiredScale = requiredWorldSize / this.tileSize; - const zoom = this.scaleZoom(requiredScale); - - // First try the recalculation on a clone. If setting the zoom throws, - // don't recalculate the zoom. - const clonedTransform = this.clone(); - clonedTransform._elevation = elevation; - clonedTransform._center = center; - try { - clonedTransform.zoom = zoom; - } catch (_e) { - console.error(`Could not recalculate zoom. requiredScale: ${requiredScale}`); - return; - } - this.apply(clonedTransform); - } - - setLocationAtPoint(lnglat: LngLat, point: Point) { - const a = this.pointCoordinate(point); - const b = this.pointCoordinate(this.centerPoint); - const loc = this.locationCoordinate(lnglat); - const newCenter = new MercatorCoordinate( - loc.x - (a.x - b.x), - loc.y - (a.y - b.y)); - this.center = this.coordinateLocation(newCenter); - if (this._renderWorldCopies) { - this.center = this.center.wrap(); - } - } - - /** - * Given a LngLat location, return the screen point that corresponds to it - * @param lnglat - location - * @param terrain - optional terrain - * @returns screen point - */ - locationPoint(lnglat: LngLat, terrain?: Terrain): Point { - return terrain ? - this.coordinatePoint(this.locationCoordinate(lnglat), terrain.getElevationForLngLatZoom(lnglat, this.tileZoom), this.pixelMatrix3D) : - this.coordinatePoint(this.locationCoordinate(lnglat)); - } - - /** - * Given a point on screen, return its lnglat - * @param p - screen point - * @param terrain - optional terrain - * @returns lnglat location - */ - pointLocation(p: Point, terrain?: Terrain): LngLat { - return this.coordinateLocation(this.pointCoordinate(p, terrain)); - } - - /** - * Given a geographical lnglat, return an unrounded - * coordinate that represents it at low zoom level. - * @param lnglat - the location - * @returns The mercator coordinate - */ - locationCoordinate(lnglat: LngLat): MercatorCoordinate { - return MercatorCoordinate.fromLngLat(lnglat); - } - - /** - * Given a Coordinate, return its geographical position. - * @param coord - mercator coordinates - * @returns lng and lat - */ - coordinateLocation(coord: MercatorCoordinate): LngLat { - return coord && coord.toLngLat(); - } - - /** - * Given a Point, return its mercator coordinate. - * @param p - the point - * @param terrain - optional terrain - * @returns lnglat - */ - pointCoordinate(p: Point, terrain?: Terrain): MercatorCoordinate { - // get point-coordinate from terrain coordinates framebuffer - if (terrain) { - const coordinate = terrain.pointCoordinate(p); - if (coordinate != null) { - return coordinate; - } - } - - // calculate point-coordinate on flat earth - const targetZ = 0; - // since we don't know the correct projected z value for the point, - // unproject two points to get a line and then find the point on that - // line with z=0 - - const coord0 = [p.x, p.y, 0, 1] as vec4; - const coord1 = [p.x, p.y, 1, 1] as vec4; - - vec4.transformMat4(coord0, coord0, this.pixelMatrixInverse); - vec4.transformMat4(coord1, coord1, this.pixelMatrixInverse); - - const w0 = coord0[3]; - const w1 = coord1[3]; - const x0 = coord0[0] / w0; - const x1 = coord1[0] / w1; - const y0 = coord0[1] / w0; - const y1 = coord1[1] / w1; - const z0 = coord0[2] / w0; - const z1 = coord1[2] / w1; - - const t = z0 === z1 ? 0 : (targetZ - z0) / (z1 - z0); - - return new MercatorCoordinate( - interpolates.number(x0, x1, t) / this.worldSize, - interpolates.number(y0, y1, t) / this.worldSize); - } - - /** - * Given a coordinate, return the screen point that corresponds to it - * @param coord - the coordinates - * @param elevation - the elevation - * @param pixelMatrix - the pixel matrix - * @returns screen point - */ - coordinatePoint(coord: MercatorCoordinate, elevation: number = 0, pixelMatrix = this.pixelMatrix): Point { - const p = [coord.x * this.worldSize, coord.y * this.worldSize, elevation, 1] as vec4; - vec4.transformMat4(p, p, pixelMatrix); - return new Point(p[0] / p[3], p[1] / p[3]); - } - - /** - * Returns the map's geographical bounds. When the bearing or pitch is non-zero, the visible region is not - * an axis-aligned rectangle, and the result is the smallest bounds that encompasses the visible region. - * @returns Returns a {@link LngLatBounds} object describing the map's geographical bounds. - */ - getBounds(): LngLatBounds { - const top = Math.max(0, this.height / 2 - this.getHorizon()); - return new LngLatBounds() - .extend(this.pointLocation(new Point(0, top))) - .extend(this.pointLocation(new Point(this.width, top))) - .extend(this.pointLocation(new Point(this.width, this.height))) - .extend(this.pointLocation(new Point(0, this.height))); - } - - /** - * Returns the maximum geographical bounds the map is constrained to, or `null` if none set. - * @returns max bounds - */ - getMaxBounds(): LngLatBounds | null { - if (!this.latRange || this.latRange.length !== 2 || - !this.lngRange || this.lngRange.length !== 2) return null; - - return new LngLatBounds([this.lngRange[0], this.latRange[0]], [this.lngRange[1], this.latRange[1]]); - } - - /** - * Calculate pixel height of the visible horizon in relation to map-center (e.g. height/2), - * multiplied by a static factor to simulate the earth-radius. - * The calculated value is the horizontal line from the camera-height to sea-level. - * @returns Horizon above center in pixels. - */ - getHorizon(): number { - return Math.tan(Math.PI / 2 - this._pitch) * this.cameraToCenterDistance * 0.85; - } - - /** - * Sets or clears the map's geographical constraints. - * @param bounds - A {@link LngLatBounds} object describing the new geographic boundaries of the map. - */ - setMaxBounds(bounds?: LngLatBounds | null) { - if (bounds) { - this.lngRange = [bounds.getWest(), bounds.getEast()]; - this.latRange = [bounds.getSouth(), bounds.getNorth()]; - this._constrain(); - } else { - this.lngRange = null; - this.latRange = [-MAX_VALID_LATITUDE, MAX_VALID_LATITUDE]; - } - } - - calculateTileMatrix(unwrappedTileID: UnwrappedTileID): mat4 { - const canonical = unwrappedTileID.canonical; - const scale = this.worldSize / this.zoomScale(canonical.z); - const unwrappedX = canonical.x + Math.pow(2, canonical.z) * unwrappedTileID.wrap; - - const worldMatrix = mat4.identity(new Float64Array(16) as any); - mat4.translate(worldMatrix, worldMatrix, [unwrappedX * scale, canonical.y * scale, 0]); - mat4.scale(worldMatrix, worldMatrix, [scale / EXTENT, scale / EXTENT, 1]); - return worldMatrix; - } - - /** - * Calculate the posMatrix that, given a tile coordinate, would be used to display the tile on a map. - * @param unwrappedTileID - the tile ID - */ - calculatePosMatrix(unwrappedTileID: UnwrappedTileID, aligned: boolean = false): mat4 { - const posMatrixKey = unwrappedTileID.key; - const cache = aligned ? this._alignedPosMatrixCache : this._posMatrixCache; - if (cache[posMatrixKey]) { - return cache[posMatrixKey]; - } - - const posMatrix = this.calculateTileMatrix(unwrappedTileID); - mat4.multiply(posMatrix, aligned ? this.alignedModelViewProjectionMatrix : this.modelViewProjectionMatrix, posMatrix); - - cache[posMatrixKey] = new Float32Array(posMatrix); - return cache[posMatrixKey]; - } - - /** - * Calculate the fogMatrix that, given a tile coordinate, would be used to calculate fog on the map. - * @param unwrappedTileID - the tile ID - * @private - */ - calculateFogMatrix(unwrappedTileID: UnwrappedTileID): mat4 { - const posMatrixKey = unwrappedTileID.key; - const cache = this._fogMatrixCache; - if (cache[posMatrixKey]) { - return cache[posMatrixKey]; - } - - const fogMatrix = this.calculateTileMatrix(unwrappedTileID); - mat4.multiply(fogMatrix, this.fogMatrix, fogMatrix); - - cache[posMatrixKey] = new Float32Array(fogMatrix); - return cache[posMatrixKey]; - } - - customLayerMatrix(): mat4 { - return this.mercatorMatrix.slice() as any; - } - - /** - * Get center lngLat and zoom to ensure that - * 1) everything beyond the bounds is excluded - * 2) a given lngLat is as near the center as possible - * Bounds are those set by maxBounds or North & South "Poles" and, if only 1 globe is displayed, antimeridian. - */ - getConstrained(lngLat: LngLat, zoom: number): {center: LngLat; zoom: number} { - zoom = clamp(+zoom, this.minZoom, this.maxZoom); - const result = { - center: new LngLat(lngLat.lng, lngLat.lat), - zoom - }; - - let lngRange = this.lngRange; - - if (!this._renderWorldCopies && lngRange === null) { - const almost180 = 180 - 1e-10; - lngRange = [-almost180, almost180]; - } - - const worldSize = this.tileSize * this.zoomScale(result.zoom); // A world size for the requested zoom level, not the current world size - let minY = 0; - let maxY = worldSize; - let minX = 0; - let maxX = worldSize; - let scaleY = 0; - let scaleX = 0; - const {x: screenWidth, y: screenHeight} = this.size; - - if (this.latRange) { - const latRange = this.latRange; - minY = mercatorYfromLat(latRange[1]) * worldSize; - maxY = mercatorYfromLat(latRange[0]) * worldSize; - const shouldZoomIn = maxY - minY < screenHeight; - if (shouldZoomIn) scaleY = screenHeight / (maxY - minY); - } - - if (lngRange) { - minX = wrap( - mercatorXfromLng(lngRange[0]) * worldSize, - 0, - worldSize - ); - maxX = wrap( - mercatorXfromLng(lngRange[1]) * worldSize, - 0, - worldSize - ); - - if (maxX < minX) maxX += worldSize; - - const shouldZoomIn = maxX - minX < screenWidth; - if (shouldZoomIn) scaleX = screenWidth / (maxX - minX); - } - - const {x: originalX, y: originalY} = this.project.call({worldSize}, lngLat); - let modifiedX, modifiedY; - - const scale = Math.max(scaleX || 0, scaleY || 0); - - if (scale) { - // zoom in to exclude all beyond the given lng/lat ranges - const newPoint = new Point( - scaleX ? (maxX + minX) / 2 : originalX, - scaleY ? (maxY + minY) / 2 : originalY); - result.center = this.unproject.call({worldSize}, newPoint).wrap(); - result.zoom += this.scaleZoom(scale); - return result; - } - - if (this.latRange) { - const h2 = screenHeight / 2; - if (originalY - h2 < minY) modifiedY = minY + h2; - if (originalY + h2 > maxY) modifiedY = maxY - h2; - } - - if (lngRange) { - const centerX = (minX + maxX) / 2; - let wrappedX = originalX; - if (this._renderWorldCopies) { - wrappedX = wrap(originalX, centerX - worldSize / 2, centerX + worldSize / 2); - } - const w2 = screenWidth / 2; - - if (wrappedX - w2 < minX) modifiedX = minX + w2; - if (wrappedX + w2 > maxX) modifiedX = maxX - w2; - } - - // pan the map if the screen goes off the range - if (modifiedX !== undefined || modifiedY !== undefined) { - const newPoint = new Point(modifiedX ?? originalX, modifiedY ?? originalY); - result.center = this.unproject.call({worldSize}, newPoint).wrap(); - } - - return result; - } - - _constrain() { - if (!this.center || !this.width || !this.height || this._constraining) return; - this._constraining = true; - const unmodified = this._unmodified; - const {center, zoom} = this.getConstrained(this.center, this.zoom); - this.center = center; - this.zoom = zoom; - this._unmodified = unmodified; - this._constraining = false; - } - - _calcMatrices() { - if (!this.height) return; - - const halfFov = this._fov / 2; - const offset = this.centerOffset; - const x = this.point.x, y = this.point.y; - this.cameraToCenterDistance = 0.5 / Math.tan(halfFov) * this.height; - this._pixelPerMeter = mercatorZfromAltitude(1, this.center.lat) * this.worldSize; - - let m = mat4.identity(new Float64Array(16) as any); - mat4.scale(m, m, [this.width / 2, -this.height / 2, 1]); - mat4.translate(m, m, [1, -1, 0]); - this.labelPlaneMatrix = m; - - m = mat4.identity(new Float64Array(16) as any); - mat4.scale(m, m, [1, -1, 1]); - mat4.translate(m, m, [-1, -1, 0]); - mat4.scale(m, m, [2 / this.width, 2 / this.height, 1]); - this.glCoordMatrix = m; - - // Calculate the camera to sea-level distance in pixel in respect of terrain - const cameraToSeaLevelDistance = this.cameraToCenterDistance + this._elevation * this._pixelPerMeter / Math.cos(this._pitch); - // In case of negative minimum elevation (e.g. the dead see, under the sea maps) use a lower plane for calculation - const minElevation = Math.min(this.elevation, this.minElevationForCurrentTile); - const cameraToLowestPointDistance = cameraToSeaLevelDistance - minElevation * this._pixelPerMeter / Math.cos(this._pitch); - const lowestPlane = minElevation < 0 ? cameraToLowestPointDistance : cameraToSeaLevelDistance; - - // Find the distance from the center point [width/2 + offset.x, height/2 + offset.y] to the - // center top point [width/2 + offset.x, 0] in Z units, using the law of sines. - // 1 Z unit is equivalent to 1 horizontal px at the center of the map - // (the distance between[width/2, height/2] and [width/2 + 1, height/2]) - const groundAngle = Math.PI / 2 + this._pitch; - const fovAboveCenter = this._fov * (0.5 + offset.y / this.height); - const topHalfSurfaceDistance = Math.sin(fovAboveCenter) * lowestPlane / Math.sin(clamp(Math.PI - groundAngle - fovAboveCenter, 0.01, Math.PI - 0.01)); - - // Find the distance from the center point to the horizon - const horizon = this.getHorizon(); - const horizonAngle = Math.atan(horizon / this.cameraToCenterDistance); - const fovCenterToHorizon = 2 * horizonAngle * (0.5 + offset.y / (horizon * 2)); - const topHalfSurfaceDistanceHorizon = Math.sin(fovCenterToHorizon) * lowestPlane / Math.sin(clamp(Math.PI - groundAngle - fovCenterToHorizon, 0.01, Math.PI - 0.01)); - - // Calculate z distance of the farthest fragment that should be rendered. - // Add a bit extra to avoid precision problems when a fragment's distance is exactly `furthestDistance` - const topHalfMinDistance = Math.min(topHalfSurfaceDistance, topHalfSurfaceDistanceHorizon); - this.farZ = (Math.cos(Math.PI / 2 - this._pitch) * topHalfMinDistance + lowestPlane) * 1.01; - - // The larger the value of nearZ is - // - the more depth precision is available for features (good) - // - clipping starts appearing sooner when the camera is close to 3d features (bad) - // - // Other values work for mapbox-gl-js but deck.gl was encountering precision issues - // when rendering custom layers. This value was experimentally chosen and - // seems to solve z-fighting issues in deck.gl while not clipping buildings too close to the camera. - this.nearZ = this.height / 50; - - // matrix for conversion from location to clip space(-1 .. 1) - m = new Float64Array(16) as any; - mat4.perspective(m, this._fov, this.width / this.height, this.nearZ, this.farZ); - - // Apply center of perspective offset - m[8] = -offset.x * 2 / this.width; - m[9] = offset.y * 2 / this.height; - this.projectionMatrix = mat4.clone(m); - - mat4.scale(m, m, [1, -1, 1]); - mat4.translate(m, m, [0, 0, -this.cameraToCenterDistance]); - mat4.rotateX(m, m, this._pitch); - mat4.rotateZ(m, m, this.angle); - mat4.translate(m, m, [-x, -y, 0]); - - // The mercatorMatrix can be used to transform points from mercator coordinates - // ([0, 0] nw, [1, 1] se) to clip space. - this.mercatorMatrix = mat4.scale([] as any, m, [this.worldSize, this.worldSize, this.worldSize]); - - // scale vertically to meters per pixel (inverse of ground resolution): - mat4.scale(m, m, [1, 1, this._pixelPerMeter]); - - // matrix for conversion from world space to screen coordinates in 2D - this.pixelMatrix = mat4.multiply(new Float64Array(16) as any, this.labelPlaneMatrix, m); - - // matrix for conversion from world space to clip space (-1 .. 1) - mat4.translate(m, m, [0, 0, -this.elevation]); // elevate camera over terrain - this.modelViewProjectionMatrix = m; - this.invModelViewProjectionMatrix = mat4.invert([] as any, m); - - // create a fog matrix, same es proj-matrix but with near clipping-plane in mapcenter - // needed to calculate a correct z-value for fog calculation, because projMatrix z value is not - this.fogMatrix = new Float64Array(16) as any; - mat4.perspective(this.fogMatrix, this._fov, this.width / this.height, cameraToSeaLevelDistance, this.farZ); - this.fogMatrix[8] = -offset.x * 2 / this.width; - this.fogMatrix[9] = offset.y * 2 / this.height; - mat4.scale(this.fogMatrix, this.fogMatrix, [1, -1, 1]); - mat4.translate(this.fogMatrix, this.fogMatrix, [0, 0, -this.cameraToCenterDistance]); - mat4.rotateX(this.fogMatrix, this.fogMatrix, this._pitch); - mat4.rotateZ(this.fogMatrix, this.fogMatrix, this.angle); - mat4.translate(this.fogMatrix, this.fogMatrix, [-x, -y, 0]); - mat4.scale(this.fogMatrix, this.fogMatrix, [1, 1, this._pixelPerMeter]); - mat4.translate(this.fogMatrix, this.fogMatrix, [0, 0, -this.elevation]); // elevate camera over terrain - - // matrix for conversion from world space to screen coordinates in 3D - this.pixelMatrix3D = mat4.multiply(new Float64Array(16) as any, this.labelPlaneMatrix, m); - - // Make a second projection matrix that is aligned to a pixel grid for rendering raster tiles. - // We're rounding the (floating point) x/y values to achieve to avoid rendering raster images to fractional - // coordinates. Additionally, we adjust by half a pixel in either direction in case that viewport dimension - // is an odd integer to preserve rendering to the pixel grid. We're rotating this shift based on the angle - // of the transformation so that 0°, 90°, 180°, and 270° rasters are crisp, and adjust the shift so that - // it is always <= 0.5 pixels. - const xShift = (this.width % 2) / 2, yShift = (this.height % 2) / 2, - angleCos = Math.cos(this.angle), angleSin = Math.sin(this.angle), - dx = x - Math.round(x) + angleCos * xShift + angleSin * yShift, - dy = y - Math.round(y) + angleCos * yShift + angleSin * xShift; - const alignedM = new Float64Array(m) as any as mat4; - mat4.translate(alignedM, alignedM, [dx > 0.5 ? dx - 1 : dx, dy > 0.5 ? dy - 1 : dy, 0]); - this.alignedModelViewProjectionMatrix = alignedM; - - // inverse matrix for conversion from screen coordinates to location - m = mat4.invert(new Float64Array(16) as any, this.pixelMatrix); - if (!m) throw new Error('failed to invert matrix'); - this.pixelMatrixInverse = m; - - this._posMatrixCache = {}; - this._alignedPosMatrixCache = {}; - this._fogMatrixCache = {}; - } - - maxPitchScaleFactor() { - // calcMatrices hasn't run yet - if (!this.pixelMatrixInverse) return 1; - - const coord = this.pointCoordinate(new Point(0, 0)); - const p = [coord.x * this.worldSize, coord.y * this.worldSize, 0, 1] as vec4; - const topPoint = vec4.transformMat4(p, p, this.pixelMatrix); - return topPoint[3] / this.cameraToCenterDistance; - } - - /** - * The camera looks at the map from a 3D (lng, lat, altitude) location. Let's use `cameraLocation` - * as the name for the location under the camera and on the surface of the earth (lng, lat, 0). - * `cameraPoint` is the projected position of the `cameraLocation`. - * - * This point is useful to us because only fill-extrusions that are between `cameraPoint` and - * the query point on the surface of the earth can extend and intersect the query. - * - * When the map is not pitched the `cameraPoint` is equivalent to the center of the map because - * the camera is right above the center of the map. - */ - getCameraPoint() { - const pitch = this._pitch; - const yOffset = Math.tan(pitch) * (this.cameraToCenterDistance || 1); - return this.centerPoint.add(new Point(0, yOffset)); - } - - /** - * When the map is pitched, some of the 3D features that intersect a query will not intersect - * the query at the surface of the earth. Instead the feature may be closer and only intersect - * the query because it extrudes into the air. - * @param queryGeometry - For point queries, the line from the query point to the "camera point", - * for other geometries, the envelope of the query geometry and the "camera point" - * @returns a geometry that includes all of the original query as well as all possible ares of the - * screen where the *base* of a visible extrusion could be. - * - */ - getCameraQueryGeometry(queryGeometry: Array): Array { - const c = this.getCameraPoint(); - - if (queryGeometry.length === 1) { - return [queryGeometry[0], c]; - } else { - let minX = c.x; - let minY = c.y; - let maxX = c.x; - let maxY = c.y; - for (const p of queryGeometry) { - minX = Math.min(minX, p.x); - minY = Math.min(minY, p.y); - maxX = Math.max(maxX, p.x); - maxY = Math.max(maxY, p.y); - } - return [ - new Point(minX, minY), - new Point(maxX, minY), - new Point(maxX, maxY), - new Point(minX, maxY), - new Point(minX, minY) - ]; - } - } - /** - * Return the distance to the camera in clip space from a LngLat. - * This can be compared to the value from the depth buffer (terrain.depthAtPoint) - * to determine whether a point is occluded. - * @param lngLat - the point - * @param elevation - the point's elevation - * @returns depth value in clip space (between 0 and 1) - */ - lngLatToCameraDepth(lngLat: LngLat, elevation: number) { - const coord = this.locationCoordinate(lngLat); - const p = [coord.x * this.worldSize, coord.y * this.worldSize, elevation, 1] as vec4; - vec4.transformMat4(p, p, this.modelViewProjectionMatrix); - return (p[2] / p[3]); - } -} From a177ba476dd903c9ae4e5694aba0105a75d20246 Mon Sep 17 00:00:00 2001 From: Christian Neumann Date: Wed, 30 Oct 2024 12:03:39 +0100 Subject: [PATCH 10/10] Fix build and render tests. --- test/build/min.test.ts | 2 +- .../terrain/fog-sky-blend-roll/expected.png | Bin 52372 -> 60611 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/test/build/min.test.ts b/test/build/min.test.ts index 4f8c99fac39..3755a126483 100644 --- a/test/build/min.test.ts +++ b/test/build/min.test.ts @@ -37,7 +37,7 @@ describe('test min build', () => { const decreaseQuota = 4096; // feel free to update this value after you've checked that it has changed on purpose :-) - const expectedBytes = 889658; + const expectedBytes = 890731; expect(actualBytes).toBeLessThan(expectedBytes + increaseQuota); expect(actualBytes).toBeGreaterThan(expectedBytes - decreaseQuota); diff --git a/test/integration/render/tests/terrain/fog-sky-blend-roll/expected.png b/test/integration/render/tests/terrain/fog-sky-blend-roll/expected.png index 6fa175db323d742cde7b593e0b422468abd86101..e2357bd0bd37afee1a6bd087615f3b98eb2a92ee 100644 GIT binary patch literal 60611 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 %?VM0$F4UYK7^4bK~LKg%bYeKC& zSe_I)=^OQA&u8fH(R^S52mA{XUGq=mWc_olckjfGEYqHR!X4?@8uXWgwbS`y@qoYq zNf8&~0T{nyU7Ph@EMtp`=Kz~(@@{O93UjdzKhgbT?CnDls_8)Zl{otFQ+Y6$6nWk^ z5s+OlB>F{j~+Q=x~QRnP@mNv$~SCVSzOrr|> zEWIoHF0@D`msk;WGIN#YstW>pK96=>v>A>Vk$i5huE1xGfDMsk2j2~`fGmhPbU&RZFliq;pCj0QM7AXlu2R^5yjC^JFS^eQD z&YN;D417`n?KJ}!;P_=yWU}tkJSy>6`lPn4%08(JW3+5lC)bsm%hUTa2iH2jW&Z9T zDn}eDes2HIE)BUH_`kaBNvE<}=Ktc@H}1ddOFv22m+-{v<6^m5o-YxG&T}EU znefgv>;5xwB2e`*`YxC+hUT?RZYw#qXiQx81bF|i9NIADvqJjYjEYJU>235jj4y=0 zA>rKF`~+1sv8@fXwjm}3CIrU^XAA8&hrG4Rq`lsV*9XSfE97KILK*b3j%MiM+Jfw$ zR(Ksl(p#Zjq4^i3^4s*C@D|0_i}mL_t-Iy%jwnDW>fPeqWuhI#pZ@M&-nqHA9Xjrx zak(`(8t^t%JG33ib_l=4NQZDVH9XrvT)*+$*{ZV5@NQ;s;A&DPs9S?-)KZ9z_Zy2h zFWS6i`nb?`u#YidC=0VEB<|00&6(=^>8y+T_or{_o-^mHqO18pEc2Y)be z*)S+0@jjavdm2(wx(sAoGL625biO11bof@M?~YuIQKN&yOW1Q)IEiGNTd4NuJ63Y& z@U4moerI#h>shK}`a?g6mLnqqtQJ5wA<9QJoTM!L`Epx<4vgeuScw0Ycr7Gef7k{$ zg7@1MLQ~!TtH`y65_xsc2h9f?u09P41N03J9W|a57dV~tXi|z@B5p-k77|6F#f4C? z`;qQxBz}S6UFpC;H+#L4>8;`W0o_N9xpE~7xok0L7rz}^oHB~P@+zOWwu&*vfp6JX2lTvBemc3 z_n?5B$hxDbGqAqt`KFrZE3dApI@2b!8}n}IX0jr(0hS`%n#WQQtAEr>92D)}n4Ylt7Ra$nWla>KYaC`yZrgS|^LSE`k&0S)_fj4f z#-$VGle18cdEf`CKk@Xi6H9~)T>^SonC@Xx+n~0c7P({S2Y;Lwdg?n#L*P&9oCUMr Jo%J_A`ya11e8>O* literal 52372 zcmcJ23s{ubxo%ERcbjCN2IVx>G>JsT+?9hll_uLTjj`Y*k($KNpfY=liLGQrF$jV( z&tsYmMiL{9(u9~ft?4F_C?_$D;(+sXgPMd=P7YC0#(_eD774fU0wcrB`PTJc|NRGh z+9ox|nZ;V``@Z-6u50HnmL>n-<{#gD!won5VDX}bPu+0Cci@-bx#7m|!T(*(`|{ci zH~e|!;)RbrllNb~{nNi?-@W+l-z7&qbS|>dU;Dk@}nv|BLHx+H}Y1O?NmS&cgpZ(ztaq`sdU3zm%hY|I=`GJO1aPvPguzPIDexIM|=>o1S)e)<*qv&W?3jnCNqX7V?aXDv@$QOwTZ3A~3{(!VHWA4y@`ow57goq-P)yt$C= zXrHhnw8*_XONZ!<+`*3ocD6A1%=9IHSo;j!_3q!}UGu%%ygYi=fd%wmy4Y!>BViw0 zL}e#ZBRiXvTmKNdB+YU~ewS4aV z@0IRhKUfT28$SH`%s_GJy{`M={7Y{BU~TN)5_;aJ@0Xu9`O)vcZLze-J9>-EE&VZ- zj@`>8>A<%G2e*9s-V*pxzFb82;MqSd#SAXN%UaEunYgtWw_q`=U>$entg4 zlBjhVi)PJ)o&98P(%e(*&rMUwz`eKK3Jb#iUMtyC63@QaGNO8L=59=+9=bJF8OY zh;U~g?1?XpPdfD}{NeahRCQY4RH%+{IdG=vXO?|^vz4#E9Tsp?-H1GFcFakqruyJV z`slUieDsGpjrF-~fm$%%OPWi!fY*r6^s$Yc#v9T33@mXQoRb5#^3|yi9k=_gQpNQc zi0^0c8QA<>H#*+ikGLH#`abNVR%@PtjFraEg)_eGHnypGZpT^oYgDBoM(0V+JVi%e z3p;%M)pZ0zy!yuCy`)o%@cCjfMAt}mT;T9+sd9Me7eqclW>C}Gn0$dhvw%QVuEC)r z#YTsYM4MdkJdlk#x5Jm|+c4a=fr(a}`FCWzh`war3l85`ZrDqIwZoV0>)TS*=l1tf zxgp;o!iU0i2r|tN!`-^YVlV>v8`EVk4>!3&_f0L^M&i8SQGzA=uv`azrB!mHssXNG!;n3i33|$eHA8;4 zaFXb5Taln-*PQLHo)cGw)p#hCV5uf<5POBcl-R2hN0sCD;WoE}oFo#yvv8(o`_hh< zHCE55%Gp}8?L+p(zt9Jy34U=@91%|YYJ>B|K%0c693#NIQ|?yxYt(dLZD~84;{kDk zADbP;?kj=L?$&FA*oKGqD#@Q3!LUM4_5H5ek?|sY^|4mB1CGU4=LQ4itKM)F{(`ec z2Xd&fu{)z~TVAj_aa$gN^~gb@rD`6t2hlUOf3iF3ATqdM0 zuHFh;sMC9`GuKNDXyjW1)Q<&%0tQc_C<>ML_2+n6`?9ghH-Z_VDjyZ+JzHc?tgXtm z)s1c*yIf=o4b~474iir@^bkgXI8B~GSCmX_yc<9k@eEL`zI2}h)=NLy2qq@eKL=UE zv)$c+kJ1xsLuoOE!NC*lW0(7zujD#M%3}&gng+sDWLztd$RICMkJ<=Uoi9nOI>54p zTlCmMP0lO!v3~DJ7S)F&Gkp*l(RlSCcOZNs+z+BtALSj53l9*iv6UMTPD=cBZxd;| z*=>$uafLO5erGd5%ymy8({AcNP~MaQgo*Gb4`3Uj8X!aGu>I}MK7^EHPE2oiePh*? z&a$Y1UVq9!c$IUw$Q$e|>In5mn&_GaJ|A%_kPVe7pef20I-eW)5wWc?&l%WO45mOWxaXk& zQ*@!dTWSE2I9ZXSk*j^Ih6!!Z?>$2n3yhtan;nf?kzFlL2Q8{uM&E* z`+w=v8|p1f?#VfdHRTMXC9e<=d>$>zWRY{8*_6vU#j;wUr8uy z?9Q$Ur7qd_+mYz5Sq)2L(-+kKX5nudDq?TkdE?Hhizh8^C|)!pY2n;8CB^YcC6f;z zmCE=e{!H7{LzUGZRaT!p<94L_+^Zd}?iVZFD}29xuKJzoclI4vR@8FjmXxC8N4MpT ztd8mL4{yBG@ArOQj@DZhu8cjgc-u`wuw-=H^z;QY7IZxw4a+Vpi7k#@voLn@%o(@E zCpAo+d8!!0Ykb@9);mhho@x8)Oj_@HpS#lGJM7L}3CkVq`{cv4zoac|TwYP%^ITCy z{efwT^Fs%ta&w)>whs5(dz#RCb0W7!cf_9fO&%<{vusk_^vTnQ?z;(=osks1Fgkul zY4PMeB~xdvDVdznFcojn@kI5!q~7(8Z`U8nfyl`jx4W{hZJ*UuUlbMPy;$$}H#K>3BkQx~pd$^YF132186_w-BAlqZvKmgb?Xb~_u7DHW zu%R$-*xpGuxMXKmw0*(0on?z^VViJwDT^mXPmYc+y$fw_VM+1YhN+V?V3UZh#Gm?A z#=+|NwA9Ru)J(WX*?J%A9q0&1%q4p_UGRRg;NnT92a0#7KF~~G^=#ikIMN5#&0aUV zqWk@p&dVRxw{$L#ikVh;rpV(dFVBsf_x@ihGUNtFO7F5DF%XeZNemn(kr>Bwf6| z9iFzcTO1zu^DCC)PT zNcCZ8FqO4!)H4WqnbR9c?fn z!B#tJ>!UL2!CG%5Gf3gV%6x&fLXa8XnKm6O)A?Klvoatv*Xlv*o!_Hc-?3-p?jbnJ zVtp-K2sQ?^FbPE{L@jirW`a$FTRiOe>$8qZcgx4?AI^MucJlsPiq`Fa_m6Py>ocl_ zsn!iQ-lA}%3d1c^Lw=-SxbYPp*}56ajPn`u4HBh@U!$oM?!NW9N>N{5#h}o3fa*jt z+2AZwCDd8(taPB+XW_qTuRn6`&U(xQdEpinIALmKDDq;QSa;dHC5$qD3nD-xPw;#xqlr?@9~!7y9-{R{A`CAr=0RIz-2rqU}7ymIUo1^b@$C z?)~+3=59ZRTo%8_`6`jmQ4%&-YA&Cg?aGuLxUNbaS~xVUX6oQ9CCe39T~2aw`Ep1) zwRTsr?oJuGcIFLdg?~-R%fLNDPj&%Inq+>Q*kSqN)H9g}s=+Bcd^Qb-L^3@9>61v2y1h=myRGF-Bex7GeL$0`zhJsI$MqcCNNyIOPh)T4#)@3tx=6;2NY1;Kc*V z9(odU!Q)8vEO9}IiL52oW%vzKDu|*J2>g)yC!A*6Vd|>T)2w*@jDlIiX>LE}8AZ-m zQ~Na!LFp+-4qMDh4l17GILF2uCVq5nIwY5)FRXg2Ex* zM?;4x5A-Iiv>{9c)1fIP<{TCtoG30#jDQ#lTg>@4?l`+(WaX=?QEFUpdANhF%yMsDOsEf zxvmWYQ05J{ltY;G_*iT0F{pC%dDF46Et^!fXw`yMn#mX%CI!j?V4^ZcfR@CI5`07< zhS34lGUuD3sy0M&;$XSHt5tgmG#^{o72TyB6v9k^@How&rHToNH2i9RMM73#Ue4%f z-X;(1(7B%rv+jZ7ASt-_3@k{dtmBvo4y=1n7B$tmd31CuS@5-g+=4s`#RJ`- ztq{r2yL2&YgVRnk+-+97NgZi_C;fk2{x`IpRi&Bp|OQwLtY#C*)u<3dbprLUEYHyiN zXt^4EJueikMP;Se9UuFe=md35k-gOuQL2NStePslNd2*hqV+QBunyXY4o+Y_!dAhz zIZQlnmCmEYL1OJ_Pg8kJx<5RWeh%qi%mdi`EiGOeJ7@ZwiR43B`cBPParzDl#|F=z zsr1=S?}GdDjD2lx)GQ{qq_CGnSgWoL_WNVnYx8qPFHjXM!72!w+jHzU$Ba_issyYm zur4G-aiRhTzOaO%4YraEj$sC3XtgyrC^(BO6T@Q*Okz;Zp2I{lQ9-AjhT6t|gMI69 zMw{KBrpmWw4M1`$CVi}_&;B*Rr9#eGjcttJE{drGZ~T_&pk$(ypy6| z0*6cl&zrztJ~7&Mk{dBH+Q@$czY%4&i2qFwlyNMR1I zzs_5T*4y^6xYYIHk}5-jGop-aJExKLI(Qt+cs;^>#gYV~^q5&FN)o8jU&G9TS~ce! zx*qY2%|#TLw!*6646_ImiXxAeB2;PR$tCX6g-e)C7qU#&G$K1Y$?A;t90gj%od9 z3aRLV`W0jA2@0qv&oSK|Dgxx3(CHx8_n7JR(YP?FAQM6{P^^l|R1L2W88hOR**g&2 zj#ip$1C0wy+Mvid8CT>HPJi*Li)i282^i~fuZQRaaXUvVt%8vN4&z*pMt+(D$XJJ8 zH8<8YZoqvAWy+9wfxI41pxDTdhd2eOgRPldAW;W%w8dcxS;|mRQmH~eQc}q;kf`5Y z%Wgah!^kq|EQ!bVrvg6|rsbi#W(OIa&(W;eW?c7Z)yoNdR!hg&1lo=Mky<*j=S1X z+!b@rEu)cq6zFx%Gevibep0-sw7;TWcV^YXKzCl*L z`JASQ%gFVX(HI;?bN*<;8{};TB+lFT@qR@SJn~jh+!eQV|!9}RC?)KlP?@|F4-~ZuA6_{{(m0N$@$$Zjk;1@JIhKl zw(v6D-H*(_qaP}H`VS=51^dpQFH0?JjJT#iZGK=~*~s*v*$qdbj`ilDA3`0gU9XOH z-WnQz)~P*_;sOj-vo8R&S!VVM0dbSd9OA+ zU0i_@2&LL}!BE4Xs8quFMJYuhmgZj^+<2_jU*Q?P1__|1rnss(Ws%p(dA^Cy6V_S; zi{1?VDskHVDvNq-ZOH@&TfBW%*DrtiQWP|hY2Dk09upUbwpbG?^ z3T;QE6+mr@@PYOx`s-SY61-5Dhz``1hY$2_vfk23J1Zuop!oVM?S3P{twHr5FICfi zBh7@&`}Osm>A9}{_THBA4ye1_no|=>sXGRx*0x;@Q9HAypO{r_a(`l7_mgJ%+Aljh zH&%I4atE$-Hf1Fwcx#WZ3MZta%5K+VT}2H?VQ25o82Vw?eNfVUB39X~qLZZLu|!p= z8BvJiqZ@~p$FzsG5QT8|Vuh$A3IS_H!=fljxm4LProt{+$C%-PCSI)P2l{9&I#A~y z@qvQ&{k-eGhNn@eZLz9323OeVI*P24Tu&p8mY3VpSI=?A#i8~e`>dhIyH*y1wCI}{ zniW;1oRrmOLVXlAX*t6^{dI}8!M-Sn&ccEzWWnip!K|Sl>WV1!ya_p$`5M4HP~=OM z_U%!q1W=utP#qRgr`w{4A_FQ9cPm;C#1=d)5uJ=h6#A)EzhG9dc_Y^jMT^ubgc9InGR@Y zT!e4XMQ+egWLTDx)q5&~3%W}9(r`La!i#6R1G}$wp|;I0qHVD!UK#n3fr#Supk@M< zoe7~Y&c+$)O6*@aQV>ysy0&_JqRC6}iLTsX9VBG?6F`F3BQqld`*XF2u0jFyH7Fr+ zbz>`YAl4e}s=INByRTWcBtxYTy}>8&4aQi%LG8S@=?-gy^-Yz)W5B;bGFq_Is*LIc zG_33}sw#XQT3`tfrdVedUntc6IBojlm5LH4mobZ&4d4-X2dV;CNYk;9BATXa*VLto z@>XAUsbapu&LBG)S%U9yz}$|~^-w^OG?2(!i?td^w4lBc+tJ7&Q#;x~TAb8&4fXqJ z*Ye2@lu$L>%b2Qp_n1;&-Lxob443Mkv~h`3-)2I6Q!FDrmKU)cNnu9CjErPPp*Dz8 zr?)WDM|N68dJIdlo-sw0z8dL^Ji8_CYb(bG+Od}$r~%hzUO!$D)m^i^FU_fOjbOFA z?@Y_d`{}vf{uY1o_Pk3zdVvSXdgd3%P(rlYNvJhkw^kARF2_eXN+92*`64!=saAa# zgn?4+=ND((yz)X_8zdRgsH{S$rR@e(T1Qan0qY8njhaTxTcd+ZO9B5%6wr1ZCQZL^ zUSVM{*}juVXxzjXR8S|e^g?UF)nvhh>s%1%A+@1moIz{B{ba#=@Pg*<88iqm_lzPv z38Ziw6iXARjLO`JjwXzQUV?+B%tE~$iE9WjD8)6HjE=r9$>_k}u};{n>I68~fPz9j zv_ZWbTd$x>SdZwSi!il)cj*_Vx)1F%z z6c%a{xWO(U1{*JT5-<0F<>gS6Pb`~Zj*H=P`3xVtr3fFWpJeRHlk!;XnThM+m_7hJ zjp>^JeARi-g<$hwXgV=hB9TIwxBxV$Gw2e10dc9RfzsyeV9F3$ zE@#5aaU?Qb4zm~6H%J>YiHmC1nSEc0)fKFr02DR+}2y|H$)Ambb@!Hfn{0@nPip+95sS;nETsKw|8i zMvB*AdKgWQn2%$VwaaSOxe$yTfb>XxxgCwA$bpz;Grqnee0^dxUp4AV6%5uc1QF{b zNYJDR@>_!_zZF#lf&2)*ztg1ZQpj)V&0~`&sxo1y3nLqc#S4t|Av>EvQu_jqsBTa- z!cQik5{{@jv0Ol7E+GxvWUhfK%Fk1js8mU_JfB=)Oh43JN+NR_i_8;5WOnil-Z)QG z;sMGOEXp`RDHck>VhwcR4Gx*A1U*m*xRld3bb$HMZE&D5h<6Z+)?5H7!|*RjAu*~Ttk%mSTo5}lv}0HnCr_!eBr$G>UnVE*v=G8c{nX9owiq7%I` z;S;rlN#Jx7=2!!5)`ygr6!BJEXD5Rr{w2QwaN3l_r{^{(`1wZ)w zc}!IU!x)qrwUK*iP7r7{*1 z?5Ti8Q4r2}giFqMt>O|fGFme@3}wb&ZZA9zO;rH&F&7X{T%b)=Qd(OjG!zKAvyThh zSeu$=K^^rL;SQl~v#|+>PP$`I;y!qqmz>c$4?U|b1@=hYg~QaHD#*ntO2(UZqsUMw zgUAfb)1!qmIxr|?@T|jNK^5@OU=NYeX6!DKzD867VPdw05mY7OfGuveH6m??PF z3rS_=;-FWf6s5;AjF3LkN!*v+oyf}2zBnWHOWiY#_&O@@GAg||hs(PddD?_7G4c~r zGHTpPsX2>E^3Mb^dK&w?7fh8xe}9N+YmVB|M8dBzb=qu7ov1rMf&2kjHGz!AW9qcY zG8vT$TScXi5>Dz2mx4R3!b*38z6Qh3;RAee|8ApsH?EK3VW&B;BxK$9|$`XcZq z1Ts1eU0{R^Ofa-+hGB1M;*ZiDgo@lwOk`4Uxm=m83|*j;3@tJ8=&h=}azX5Wl8_7v z)CQolF}r4)c?99Q*Q+Q`t%9?3wV=qb%_`egPs`@r0jxxpk1!K}5IgjQSkxkkiMwtS zsxi_-GHF6Y?E;F_O4H}`0%}xTc)>X8+JqtqgGznLV58fsaG^4!?BFH9z>vo(@0H>| zC~I+`(xE7v7Y859b{A-As`R4T?H_cl>1(u`(rk#qDrOY%us#z`sg*?GnGs&!3fdRUHIKiV zSQj?>QJoW&yGhX3*c}*%CFsC2%xceCb9e|F3M`GgQ)ielMdN7XJ&bN|*LB{WX1V|T ziaZQu!F$~52FZgTR6OyZ1YLN)V_Hr=s<9#m+Cihlw z{QgKdD)r0Em(u_D!MP8unLV6!&to@EdS!Nx?a#k2xckqtmrqoJOowfuxiq;kiRWO( zXD+yJ+iT%(D=2X^7>tJx-XL4c4xYzs*sLuWOLKg5uoJyV0CvF{mj!?OIj0?Z@2rpr zN(13l>RK#TI3(~mIw#Uo)R8mXS&yES06gw!hO%AzlRN~b`+@}-gE@{`NILG_UtfiG zhsXZGaxG}N#dtZx0m8}%7#}mJH+`K=66^0w^=}{9hz39d8V~fMiq;v}EErCp)v3MI zpFKy13T+%7tn5$Rb_|cD%nlC20|CKQ0+L4WSCHf|>dKKPhYe7YjMzO^FtP#*Cyeig z3Z8ZVt{f~Y@LtW%fBa(vo+3LD7MS@5(t>WU>Ou3<)YS!=R8yDBYwj*wkpRU*79QuI zR-GsD_&_0f<*X1dZRT%D2+|qw=5MYE-AZ)bd{)06NNQDmQQOi#tq@Fm6pAc(5Z(8q z1HIegfkO3=Ug-%nE)q&o<02Q¬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