Форум: "Начинающим";
Текущий архив: 2006.08.27;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.038 c