Java - Detectar linhas retas com coordenadas dadas

INFORMAÇÃO ADICIONADA:

Eu estou usando o interior de um quadrado como uma arena. Na partida, o quadrado aparece em uma posição aleatória, e rotação, e eunão pode acessar qualquer um dos atributos dos quadrados.

Eu então tenho um objeto em movimento dentro do quadrado, para o qual estou construindo AI, e quero que o objeto 'aprenda' onde estão as paredes da arena. Toda vez que o objeto bate em uma parede, eu recebo um retorno de toque, então eu sei se ele acertou ou não. Eu estou usando isso para mapear a posição global de onde o objeto atingiu a parede e salvá-lo ... Depois de 3 batidas na mesma parede, eu quero matematicamente 'desenhar uma linha reta' abaixo dos pontos que representarão as paredes da arena - Com isso, posso dizer ao meu objeto para não chegar perto dessas coordenadas.

O motivo de 3 pontos? Bem, se o objeto bateu em um lado de uma parede, então foi para bater no outro lado de uma parede, eu terei uma linha desenhada de um lado para outro, dando dados falsos sobre onde está a parede.

Se Java vê três (ou mais) pontos em linha, ele sabe que o objeto atingiu a mesma parede (estando mais ou menos).

CONTÍNUO:

Estou tentando mapear linhas com dados de coordenadas dados. Basicamente eu tenho uma matriz que contém as coordenadas X e Y, e eu quero ser capaz de detectar matematicamente se elas formam uma linha reta (mais ou menos alguns pixels). (A coordenada é uma pensionista de um quadrado)

Por exemplo, o array pode ser assim:

[x0] [y0] - 1,1

[x1] [y1] - 2,2

[x2] [y2] - 5,5

Que apresentará uma linha diagonal do lado do quadrado, assim:

Mas às vezes eu posso obter uma coordenada de um lado do quadrado e, em seguida, outro lado, tudo misturado (e não necessariamente em um ângulo de 90 graus também!). Então, eu quero ser capaz de percorrer o array e detectar quais coordenadas formam uma linha (ou o lado do boarder do quadrado), assim:

Então, agora, eu tenho uma matriz 2D:

private double wallLocations[][] = new double[10][10];

e um loop while que não faz o trabalho. Eu realmente não sei onde começar com este:

for(int r = 0; r < wallIndex; r++){
            for(int c = 0; c < wallIndex; c++){

                int index = 0;
                if(wallLocations[r][index] == wallLocations[r][c] && wallLocations[r][index + 1] == wallLocations[r][c] &&
                        wallLocations[r][index + 2] == wallLocations[r][c]){

                    System.out.println("***** Wall Here! *****");
                    index++;
                }

            }
        }

---- ATUALIZAR ----

Aqui está um exemplo melhor do que estou procurando. Os pontos vermelhos representam as coordenadas que chegam, uma linha é detectada quando 3 ou mais pontos se alinham (se fosse 2 pontos, então ele detectaria qualquer ponto e sempre) ... Você percebe que isso está começando a parecer com o pensionista de um quadrado?

questionAnswers(2)

yourAnswerToTheQuestion