Punto medio tra due punti su una sfera
Salve ho bisogno di calcolare, a partire da due punti geografici dati, il punto medio tra di essi. Per fare questo non si può di certo utilizzare il calcolo del punto medio tra due punti in un piano cartesiano, vista la sfericità della Terra. Di conseguenza ho bisogno di sapere come si calcolano le coordinate del punto medio tra due punti su una sfera.
Potreste aiutarmi?
Grazie
Potreste aiutarmi?
Grazie
Risposte
Cosa succede se si prende il punto medio del segmento tra i due punti (che quindi si trova all'interno della sfera) e lo si proietta sulla superficie sferica lungo la retta che passa per il centro?
A questo ci avevo pensato anche io ma è di difficile applicazione a quello che mi serve.
Ma tu hai il punto espresso in latitudine e longitudine?
si ho due punti espressi in latitudine e longitudine devo trovare il punto medio tra questi due
Come ti hanno già suggerito, puoi procedere determinando il punto medio della corda:
$\{(x_1=Rcosphi_1sintheta_1),(y_1=Rsinphi_1sintheta_1),(z_1=Rcostheta_1):} ^^ \{(x_2=Rcosphi_2sintheta_2),(y_2=Rsinphi_2sintheta_2),(z_2=Rcostheta_2):} rarr \{(x_M=(x_1+x_2)/2),(y_M=(y_1+y_2)/2),(z_M=(z_1+z_2)/2):}$
ed il punto d'intersezione della sfera con la retta passante per l'origine ed il punto medio appena trovato:
$\{(x/x_M=y/y_M),(x/x_M=z/z_M),(x^2+y^2+z^2=R^2):} rarr \{(x=+-(Rx_M)/sqrt(x_M^2+y_M^2+z_M^2)),(y=+-(Ry_M)/sqrt(x_M^2+y_M^2+z_M^2)),(z=+-(Rz_M)/sqrt(x_M^2+y_M^2+z_M^2)):}$
Ovviamente, se devi esprimere il risultato mediante la longitudine e la latitudine, è necessario fare un po' di conti.
$\{(x_1=Rcosphi_1sintheta_1),(y_1=Rsinphi_1sintheta_1),(z_1=Rcostheta_1):} ^^ \{(x_2=Rcosphi_2sintheta_2),(y_2=Rsinphi_2sintheta_2),(z_2=Rcostheta_2):} rarr \{(x_M=(x_1+x_2)/2),(y_M=(y_1+y_2)/2),(z_M=(z_1+z_2)/2):}$
ed il punto d'intersezione della sfera con la retta passante per l'origine ed il punto medio appena trovato:
$\{(x/x_M=y/y_M),(x/x_M=z/z_M),(x^2+y^2+z^2=R^2):} rarr \{(x=+-(Rx_M)/sqrt(x_M^2+y_M^2+z_M^2)),(y=+-(Ry_M)/sqrt(x_M^2+y_M^2+z_M^2)),(z=+-(Rz_M)/sqrt(x_M^2+y_M^2+z_M^2)):}$
Ovviamente, se devi esprimere il risultato mediante la longitudine e la latitudine, è necessario fare un po' di conti.
Perfetto ti ringrazio molto. Tutto ciò mi serviva per implementare un metodo di un'applicazione in java. Per quanto riguarda l'uso di valori di latitudine e longitudine basta convertirli in radianti. Una volta ottenuto il risultato basterà riconvertirlo in double che è la notazione utilizzata per esprimere la latitudine e la longitudine.
Grazie ancora.
Grazie ancora.
Sinceramente vedendo la definizione di latitudine e longitudine e assimilando latitudine con \(\displaystyle \vartheta \) e longitudine con \(\displaystyle \varphi \) direi che una parametrizzazione più corretta è:
\(\displaystyle \begin{cases} x = R\cos\varphi \cos\vartheta \\ y = R\sin\varphi \cos\vartheta \\ z = R\sin\vartheta \end{cases}\)
con \(\displaystyle \varphi \in [0, 2\pi) \) e \(\displaystyle \vartheta \in \biggl(-\frac{\pi}{2}, +\frac{\pi}{2}\biggr) \) e la parametrizzazione non comprende i poli.
Dato che l'angolo è indipendente dalla scelta di R direi che è conveniente supporre che il tutto sia su una sfera unitaria.
\(\displaystyle \begin{cases} x = \cos\varphi \cos\vartheta \\ y = \sin\varphi \cos\vartheta \\ z = \sin\vartheta \end{cases}\)
A questo punto puoi fare i vari passaggi presentati da speculor (probabilmente c'é un metodo che non passi da \(\displaystyle \mathbb{R}^3 \) ma dovrei pensarci per bene).
Nel passaggio \(\displaystyle z_M = (z_1 + z_2)/2 \), utilizzando il fatto che \(\displaystyle \sin x \cos y = \bigl(\sin(x+y) + \sin(x-y)\bigr)/2 \) si ricava che \(\displaystyle z_M = (\sin\vartheta_1 + \sin\vartheta_2)/2 = \sin \vartheta_M \cos \bigl(\Delta\vartheta/2\bigr)\) ma non so quanto possa aiutare.
\(\displaystyle \begin{cases} x = R\cos\varphi \cos\vartheta \\ y = R\sin\varphi \cos\vartheta \\ z = R\sin\vartheta \end{cases}\)
con \(\displaystyle \varphi \in [0, 2\pi) \) e \(\displaystyle \vartheta \in \biggl(-\frac{\pi}{2}, +\frac{\pi}{2}\biggr) \) e la parametrizzazione non comprende i poli.
Dato che l'angolo è indipendente dalla scelta di R direi che è conveniente supporre che il tutto sia su una sfera unitaria.
\(\displaystyle \begin{cases} x = \cos\varphi \cos\vartheta \\ y = \sin\varphi \cos\vartheta \\ z = \sin\vartheta \end{cases}\)
A questo punto puoi fare i vari passaggi presentati da speculor (probabilmente c'é un metodo che non passi da \(\displaystyle \mathbb{R}^3 \) ma dovrei pensarci per bene).
Nel passaggio \(\displaystyle z_M = (z_1 + z_2)/2 \), utilizzando il fatto che \(\displaystyle \sin x \cos y = \bigl(\sin(x+y) + \sin(x-y)\bigr)/2 \) si ricava che \(\displaystyle z_M = (\sin\vartheta_1 + \sin\vartheta_2)/2 = \sin \vartheta_M \cos \bigl(\Delta\vartheta/2\bigr)\) ma non so quanto possa aiutare.