Verificar se Três pontos gps estão em uma reta[RESOLVIDO]

Bom dia, eu estou tentando verificar se três pontos gps estão em linha reta, mas nao estou consiguindo aplicar uma formula e não sei se é possivel
tentei utilizar a formula Pontos colineares.

Mas surgiu a seguinte duvidas como latitude e longitude são linhas no globo que são formados por graus apos chegarem na linha do equador os valor volta a zero.

Tentei utilizar da seguinte forma e sem muito sucesso.

        Double MBA= ((53.443360- 53.447952)/(24.937761- 24.931301));
        Double MBC= ((53.443360- 53.450591)/(24.937761- 24.938967));
        
        if(MBA == MBC) 
            System.out.println("os Pontos estão em linha"); 

Peguei as coordenadas no google maps.

Pode ser falta de conhecimento meu mas não consigui solucionar esse problema.

[quote=wilkem]Bom dia, eu estou tentando verificar se três pontos gps estão em linha reta, mas nao estou consiguindo aplicar uma formula e não sei se é possivel
tentei utilizar a formula Pontos colineares.

Mas surgiu a seguinte duvidas como latitude e longitude são linhas no globo que são formados por graus apos chegarem na linha do equador os valor volta a zero.

Tentei utilizar da seguinte forma e sem muito sucesso.

        Double MBA= ((53.443360- 53.447952)/(24.937761- 24.931301));
        Double MBC= ((53.443360- 53.450591)/(24.937761- 24.938967));
        
        if(MBA == MBC) 
            System.out.println("os Pontos estão em linha"); 

Peguei as coordenadas no google maps.

Pode ser falta de conhecimento meu mas não consigui solucionar esse problema.[/quote]
Ola amigo, tudo bem?

Segue um exemplo de como você pode fazer isso de uma maneira mais elegante.

[code]// Define uma classe Coord para inserir as coordenadas
public class Coord {
double x, y;
public Coord(double x, double y) {
this.x = x;
this.y = y;
}
}

    // Função para efetuar o cálculo da linearidade
public static boolean isLinear(Coord c1, Coord c2, Coord c3	) {
	double d1 = (c2.x - c1.x)/(c2.y - c1.y);
	double d2 = (c3.x - c1.x)/(c3.y - c1.y);

	return (d2 == d1);
}

[/code]

Espero ter ajudado…

Acho que você precisa definir o que é “três pontos em linha reta”. Pelo fato da Terra ser redonda, um trecho que parece ser “linha reta” no mapa, deixa de ser no globo. Por exemplo: se você der uma volta “em cima” da linha do equador, você andou em “linha reta” pela sua definição, ou não. Se sim, acredito que você queira três pontos coplanares e não colineares.

Bom dia galera consigui resolver meu problema utilizando o algoritmo do Ramer Douglas Peucker.

Ué, mas esse é um algoritmo para simplificar curvas. Você considera “reta” quando todos os pontos podem ser simplificados?

Então eu iria fazer através da equação da reta para diminuir o numero de pontos em um área mapeada, pois verifiquei que havia muitos pontos na reta mais seria necessário um certa tolerância com auxilio desse algoritmo me ajudou.

Então so um exemplo que ja testei numa área com 421 pontos utilizando a tolerância de 5.5 diminui para 98 pontos.