From 4fb8dc2b62009019c887f4428b329bed18e4e043 Mon Sep 17 00:00:00 2001 From: Arne Zitting Date: Tue, 12 May 2026 21:42:04 +0200 Subject: [PATCH] pitch gefixt --- main.js | 49 +++++++++-------------------------------------- package-lock.json | 8 ++++---- package.json | 2 +- 3 files changed, 14 insertions(+), 45 deletions(-) diff --git a/main.js b/main.js index 3416775..9177be7 100644 --- a/main.js +++ b/main.js @@ -106,77 +106,46 @@ function syncCamera() { // ----------------------------------------- // Abstand abhängig vom Zoom // ----------------------------------------- - const earthCircumference = 40075016.686; - - const metersPerPixel = - earthCircumference * - Math.cos(center.lat * Math.PI / 180) / - Math.pow(2, zoom + 8); - - const distance = - metersPerPixel * map.getCanvas().height; + const metersPerPixel = earthCircumference * Math.cos(center.lat * Math.PI / 180) / Math.pow(2, zoom + 8); + const distance = metersPerPixel * map.getCanvas().height; // ----------------------------------------- // Zielpunkt = Kartenzentrum // ----------------------------------------- - - const target = new THREE.Vector3( - x, - y, - 0 - ); + const target = new THREE.Vector3(x, y, 0); // ----------------------------------------- // Kameraoffset // ----------------------------------------- - - const offset = new THREE.Vector3( - 0, - -distance * Math.cos(pitch), - distance * Math.sin(pitch) + const offset = new THREE.Vector3(0, -distance * Math.sin(pitch), distance * Math.cos(pitch) ); // Bearing rotieren - offset.applyAxisAngle( - new THREE.Vector3(0, 0, 1), - -bearing - ); + offset.applyAxisAngle(new THREE.Vector3(0, 0, 1), -bearing); // ----------------------------------------- // Kameraposition // ----------------------------------------- - - const cameraPosition = - target.clone().add(offset); + const cameraPosition = target.clone().add(offset); // ----------------------------------------- // Potree Kamera setzen // ----------------------------------------- - - const camera = - viewer.scene.getActiveCamera(); - + const camera = viewer.scene.getActiveCamera(); camera.position.copy(cameraPosition); - camera.lookAt(target); - viewer.scene.view.position.copy(cameraPosition); - viewer.scene.view.lookAt(target); - camera.updateMatrixWorld(); - viewer.renderer.render( viewer.scene.scene, camera ); } - map.on('move', ()=>{ - console.log(viewer.scene.view) - syncCamera(); - }); +// Kameras bei jeder Kartenbewegung synchronisieren + map.on('move', syncCamera); map.on('zoom', syncCamera); map.on('pitch', syncCamera); map.on('rotate', syncCamera); diff --git a/package-lock.json b/package-lock.json index a0d8f89..908c146 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ "deck.gl": "^9.3.1", "maplibre-gl": "^5.22.0", "proj4": "^2.20.8", - "three": "^0.184.0", + "three": "^0.124.0", "vite": "^8.0.7" } }, @@ -4916,9 +4916,9 @@ } }, "node_modules/three": { - "version": "0.184.0", - "resolved": "https://registry.npmjs.org/three/-/three-0.184.0.tgz", - "integrity": "sha512-wtTRjG92pM5eUg/KuUnHsqSAlPM296brTOcLgMRqEeylYTh/CdtvKUvCyyCQTzFuStieWxvZb8mVTMvdPyUpxg==", + "version": "0.124.0", + "resolved": "https://registry.npmjs.org/three/-/three-0.124.0.tgz", + "integrity": "sha512-ROXp1Ly7YyF+jC910DQyAWj++Qlw2lQv0qwYLNQwdDbjk4bsOXAfGO92wYTMPNei1GMJUmCxSxc3MjGBTS09Rg==", "license": "MIT" }, "node_modules/timezone-groups": { diff --git a/package.json b/package.json index aa4f7e5..949cc99 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "deck.gl": "^9.3.1", "maplibre-gl": "^5.22.0", "proj4": "^2.20.8", - "three": "^0.184.0", + "three": "^0.124.0", "vite": "^8.0.7" } }