Fix: Retour aux bonnes coordonnées pour les points et ajout données GeoJSON

This commit is contained in:
sucupira
2025-07-09 16:37:37 -04:00
parent ff47558783
commit 1c9d64d674
2 changed files with 88 additions and 2 deletions
+3 -2
View File
@@ -1,5 +1,6 @@
<script> <script>
import { onMount } from 'svelte'; import { onMount } from 'svelte';
import { worldData } from '../data/world.js';
let canvas; let canvas;
let visible = false; let visible = false;
@@ -84,7 +85,7 @@
canvas.addEventListener('touchmove', (e) => { canvas.addEventListener('touchmove', (e) => {
if (isDragging && e.touches.length === 1) { if (isDragging && e.touches.length === 1) {
const deltaX = e.touches[0].clientX - lastMouseX; const deltaX = e.touches[0].clientX - lastMouseX;
rotation += deltaX * 0.01; // Retour au + pour le tactile rotation -= deltaX * 0.01; // Garder le - pour le tactile aussi
lastMouseX = e.touches[0].clientX; lastMouseX = e.touches[0].clientX;
e.preventDefault(); e.preventDefault();
} }
@@ -242,7 +243,7 @@
// Dessiner les points et la vague // Dessiner les points et la vague
locations.forEach((loc, i) => { locations.forEach((loc, i) => {
const phi = (90 - loc.lat) * Math.PI / 180; const phi = (90 - loc.lat) * Math.PI / 180;
const theta = (loc.lon - rotation * 57.3) * Math.PI / 180; const theta = (-loc.lon - rotation * 57.3) * Math.PI / 180; // Remettre le - devant loc.lon
const x = currentRadius * Math.sin(phi) * Math.cos(theta); const x = currentRadius * Math.sin(phi) * Math.cos(theta);
const y = currentRadius * Math.cos(phi); const y = currentRadius * Math.cos(phi);
+85
View File
@@ -0,0 +1,85 @@
// Données simplifiées des continents en GeoJSON
// Source: Natural Earth (simplified)
export const worldData = {
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": { "name": "Africa" },
"geometry": {
"type": "Polygon",
"coordinates": [[
[-17.5, 35], [-5, 36], [10, 37], [35, 30], [42, 15],
[51, 12], [51, -2], [41, -12], [35, -25], [28, -33],
[20, -35], [18, -35], [12, -18], [10, -5], [8, 5],
[-5, 5], [-17, 15], [-17.5, 35]
]]
}
},
{
"type": "Feature",
"properties": { "name": "Europe" },
"geometry": {
"type": "Polygon",
"coordinates": [[
[-10, 36], [-5, 43], [0, 50], [10, 54], [20, 59],
[30, 60], [40, 55], [30, 45], [20, 40], [10, 45],
[0, 40], [-10, 36]
]]
}
},
{
"type": "Feature",
"properties": { "name": "Asia" },
"geometry": {
"type": "Polygon",
"coordinates": [[
[26, 40], [40, 45], [60, 50], [80, 55], [100, 60],
[120, 60], [140, 50], [145, 40], [135, 30], [120, 20],
[100, 10], [80, 15], [70, 25], [60, 30], [45, 35],
[26, 40]
]]
}
},
{
"type": "Feature",
"properties": { "name": "North America" },
"geometry": {
"type": "Polygon",
"coordinates": [[
[-170, 65], [-165, 68], [-150, 70], [-130, 70], [-100, 70],
[-80, 68], [-65, 60], [-55, 50], [-65, 45], [-75, 40],
[-80, 35], [-85, 30], [-90, 25], [-95, 20], [-105, 20],
[-110, 25], [-115, 30], [-120, 35], [-125, 40], [-130, 45],
[-135, 50], [-140, 55], [-150, 58], [-160, 60], [-170, 65]
]]
}
},
{
"type": "Feature",
"properties": { "name": "South America" },
"geometry": {
"type": "Polygon",
"coordinates": [[
[-35, -5], [-38, -15], [-40, -20], [-48, -25], [-58, -35],
[-65, -45], [-70, -55], [-68, -55], [-73, -45], [-72, -35],
[-70, -25], [-75, -15], [-78, -5], [-80, 0], [-77, 5],
[-75, 10], [-70, 12], [-60, 8], [-50, 5], [-35, -5]
]]
}
},
{
"type": "Feature",
"properties": { "name": "Australia" },
"geometry": {
"type": "Polygon",
"coordinates": [[
[113, -22], [130, -12], [135, -12], [140, -18], [145, -20],
[150, -25], [153, -30], [150, -35], [145, -38], [140, -38],
[135, -35], [130, -32], [125, -32], [120, -35], [115, -35],
[113, -30], [113, -22]
]]
}
}
]
};