Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.08.27;
Скачать: CL | DM;

Вниз

SearchingPoint   Найти похожие ветки 

 
FASe   (2006-08-09 15:04) [0]

Здравствуйте. Подскажите (или поправьте мой) алгоритм поиска ближайшей точки. Т.е. есть массив точек Point: TPoint;
Нужно взять некую точку из массива и найти самую ближнюю к ней, я делаю так, но невсегда правильно находит.

var
Point: array of TPoint;

function FindPoint(const NP: Integer): Integer;
var X, Y, N, FoundN: Integer;
begin
 X:=Width; Y:=Height; Result:=-1;
 for N:=HIGH(Point) downto 0 do begin
  if (N<>NP) and ((ABS(Point[NP].X-Point[N].X)<X) and (ABS(Point[NP].Y-Point[N].Y)<Y)) then begin
   X:=ABS(Point[NP].X-Point[N].X);
   Y:=ABS(Point[NP].Y-Point[N].Y);
   Result:=N;
  end;
 end;
end;

procedure ButtonClick(Send...);
var N, FN: Integer;
begin
 SetLength(Point, 100);
 for N:=0 to 100 do begin
  Point[N].X:=Random(Width);
  Point[N].Y:=Random(Height);
 end;
 FN:=FindPoint(30);
 if FN>=0 then ShowMessage(Format("У точки с № %d самая ближняя точка с № %d",[30, FN])
  else ShowMessage("Не найдено");
end;


 
Сергей М. ©   (2006-08-09 15:08) [1]

Есть такая наука - геометрия ..

Знаком с ней хоть немного ?


 
MBo ©   (2006-08-09 15:10) [2]

по теореме Пифагора:

MinDistSqr := 10e12;
...
NewDist := Sqr(Point[NP].X-Point[N].X) + Sqr(Point[NP].Y-Point[N].Y);
if NewDist <  MinDistSqr then begin
 MinDistSqr := NewDist;
 Result := N;
end;


 
FASe   (2006-08-09 15:28) [3]


> Сергей М. ©   (09.08.06 15:08) [1]

Если бы был достаточно хорошо знаком, то сдесь не спрашивал бы.


> MBo ©   (09.08.06 15:10) [2]

Спасибо попробую, а ABS надо делать или без него вычислит?
т.е. NewDist := Sqr(ABS(Point[NP].X-Point[N].X)) + Sqr(ABS(Point[NP].Y-Point[N].Y));
?


 
Сергей М. ©   (2006-08-09 15:31) [4]


> Если бы был достаточно хорошо знаком, то сдесь не спрашивал
> бы


Это же сведения из курса тригонометрии начальной школы) ... Не приходилось ее посещать разве ?)


 
novill ©   (2006-08-09 15:32) [5]

Есть еще такая наука алгебра.

Не встречалась?

Зачем брать модуль от мисла возводимого в квадрат?????


 
FASe   (2006-08-09 15:47) [6]


> Сергей М. ©   (09.08.06 15:31) [4]
> из курса тригонометрии начальной школы)... Не приходилось ее посещать разве ?)

Приходилось.... только давно это было... подзабыл все. :((


> novill ©   (09.08.06 15:32) [5]
> Есть еще такая наука алгебра.
>
> Не встречалась?
>
> Зачем брать модуль от числа возводимого в квадрат?????

Есть альтернатива? Можно поподробней....
Блин и алгебру забываю.... :((
Спасибо.


 
novill ©   (2006-08-09 15:53) [7]

Хмм, вроде не первое апреля. :-|

Попробуй перемножить лубое вещественное число само на себя и получить отрицательное число.


 
Сергей М. ©   (2006-08-09 15:57) [8]


> только давно это было... подзабыл все


Неужели забыл и азы - квадрат гипотенузы равен сумме квадратов катетов ?!)


 
Leonid Troyanovsky ©   (2006-08-09 18:49) [9]


> FASe   (09.08.06 15:28) [3]

> Спасибо попробую, а ABS надо делать или без него вычислит?


Это зависит от метрического пространства, в котором оные
точки расположены.
Для евклидова - метрика квадратичная, т.е. см, например [2].

Как зовут пр-во с метрикой abs даже и не вспомню :)
См. также топология, функциональный анализ &etc

--
Regards, LVT.


 
FASe   (2006-08-09 18:56) [10]

> [8] Сергей М. ©   (09.08.06 15:57)

К большому сожалению ДА. :(
Для меня, в принципе, всегда тяжела была геометрия... А тут столько лет...
Вообще все забыл.

> [7] novill ©   (09.08.06 15:53)

В чем прикол?...
Извеняюсь, может не совсем понял...
А типа -2.345 х 3.564= -8,35758 или не так?
Да это и не по теме вроде бы.
СПАСИБО и на этом, сейчас попробую то, что, предложил MBo (09.08.06 15:10)
Отдельное спасибо MBo.


 
FASe   (2006-08-09 20:07) [11]

> [7] novill ©   (09.08.06 15:53)

Извеняюсь, невнимательно прочитал...Ну расстреляйте меня за это...:)
SQR - это же квадрат числа...
Усек. Спасибо большое, с Вашими намеками вкурил в чем дело.

> [9] Leonid Troyanovsky ©   (09.08.06 18:49)

Да, спасибо, способ от MBo решил проблему.
Сенькс всем откликнувшимся.


 
FASe   (2006-08-09 20:10) [12]

> [9] Leonid Troyanovsky ©   (09.08.06 18:49)


> Это зависит от метрического пространства, в котором оные
> точки расположены.
> Для евклидова - метрика квадратичная, т.е. см, например
> [2].

Блин, это прямо матом для меня ругаетесь. :)))
Как все запущено.... у меня имею ввиду.



Страницы: 1 вся ветка

Текущий архив: 2006.08.27;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.047 c
1-1152823459
01
2006-07-14 00:44
2006.08.27
PopupMenu сейчас на экране или убралось


2-1154787406
Reaktor
2006-08-05 18:16
2006.08.27
Как изменить цвет объекта Button?


15-1154461397
AntiUser
2006-08-01 23:43
2006.08.27
В Израиле обнаружен изолированный "Затерянный Мир"


15-1154384228
Razor
2006-08-01 02:17
2006.08.27
Изучение java


15-1154493115
Ega23
2006-08-02 08:31
2006.08.27
С Днём рождения! 2 августа