Domanda

Attualmente sono coinvolto in un progetto in cui sarebbe utile visualizzare punti geografici come sovrapposizioni in cima a VIDEO elemento (dimensione 512x288).

Il VIDEO L'elemento contiene una trasmissione in diretta e ho anche un feed in tempo reale di cuscinetti, latitudine, longitudine e altitudine che viene alimentato nel sito come variabili JavaScript.

Ho anche una serie di POI (punti di interesse) inclusi nel sito. I POI sono nel seguente formato:

var points = [['Landmark name', 'latitude', 'longitude'], […]];

Ogni cinque secondi o giù di lì, voglio passare attraverso la serie di POI e controllare se qualcuno di essi è all'interno dell'attuale viewport del video - e se vero, sovrappongono a loro in cima al VIDEO elemento.

Qualcuno potrebbe indicarmi nella giusta direzione su cosa dovrei guardare? Presumo di dover mappare i punti su un piano 2D usando la proiezione EG Mercator.

Ma sono un po 'perso quando si tratta di mappare la posizione di pixel relativa del POI sulla video.

Non vedo l'ora di ottenere alcuni consigli!

È stato utile?

Soluzione

Dopo averlo fatto prima, l'elemento più critico è determinare accuratamente il campo di vista della telecamera (almeno al centesimo di grado) in direzione verticale o orizzontale. Quindi, usa il rapporto di aspetto (512/288 = 1,78) del video per determinare l'altro angolo (se necessario) usando la formula Atan (non commettere l'errore comune di moltiplicare il campo visivo verticale per proporzione per ottenere l'orizzontale campo visivo. Il campo visivo è angolare, le proporzioni sono lineari). Pensala in termini di creazione di una fotocamera, ad esempio, in OpenGL tranne che la fotocamera è nel mondo reale. Invece di scegliere il campo di vista e l'orientamento della fotocamera, dovrai misurarlo.

Dovrai conoscere l'atteggiamento della fotocamera (PAN/TILT o Pitch/Roll/Yaw) per sovrapporre la grafica correttamente.

Non avrai bisogno di una proiezione Mercator. Suppongo che il campo visivo della fotocamera sia relativamente piccolo (cioè 40 gradi H circa), quindi di solito si può presumere che la superficie proiettata sia un rettangolo (tecnicamente, è una piccola patch da una sfera).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top