Java - обнаружение прямых линий с заданными координатами
ДОБАВЛЕННАЯ ИНФОРМАЦИЯ:
Я использую внутреннюю часть квадрата как арену. При запуске квадрат появляется в случайном положении, и вращение, и яне может получить доступ к любому из атрибутов квадратов.
Затем у меня есть движущийся объект внутри квадрата, для которого я строю ИИ, и я хочу, чтобы объект «узнал», где находятся стены арены. Каждый раз, когда объект врезается в стену, я возвращаюсь прикосновением, поэтому я знаю, ударил он или нет. Я использую это, чтобы отобразить глобальное положение места, где объект врезался в стену, и сохранить его ... После 3 ударов по одной стене я хочу математически «нарисовать прямую линию» вниз по тем точкам, которые будут представлять стены арены. - с этим я могу сказать своему объекту не приближаться к этим координатам.
Причина 3 точки? Хорошо, если объект ударил по одной стороне стены, а затем поразил другую сторону стены, у меня будет линия, проведенная от одной стороны к другой, дающая ложные данные о том, где находится стена.
Если Java видит три (или более) встроенных точек, она знает, что объект попал в ту же стену (либо дальше вверх, либо около того).
ПРОДОЛЖЕНИЕ:
Я пытаюсь наметить линии с данными координат. В основном у меня есть массив, который содержит координаты X и Y, и я хочу иметь возможность математически определить, составляют ли они прямую линию (дать или взять несколько пикселей). (Координата - это граница квадрата)
Например, массив может быть таким:
[x0] [y0] - 1,1
[x1] [y1] - 2,2
[x2] [y2] - 5,5
Который представит диагональную линию на стороне квадрата, вот так:
Но иногда я могу получить одну координату одной стороны квадрата, а затем другую сторону, все смешанные (и не обязательно под углом 90 градусов!). Поэтому я хочу иметь возможность проходить через массив и определять, какие координаты образуют линию (или границу стороны квадрата), например так:
Итак, сейчас у меня есть 2D-массив:
private double wallLocations[][] = new double[10][10];
и цикл while, который не выполняет работу. Я даже не знаю, с чего начать:
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++;
}
}
}
---- ОБНОВИТЬ ----
Вот лучший пример того, что я ищу. Красные точки представляют входящие координаты, линия обнаруживается, когда 3 или более точек выстраиваются в линию (если бы это были 2 точки, то это обнаружило бы любую и всегда точку) ... Вы замечаете, что это начинает выглядеть как граница площади?