Показать сообщение отдельно
Старый 17.01.2010, 23:03   #2
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,371
Написано 2,477 полезных сообщений
(для 6,865 пользователей)
Ответ: Сравнение кривых


Так это ты ломаешь каптчу на булке?
Шучу

Предлагаю простой способ:
Переносишь 1ую точку второй кривой на 1ую точку первой.
Пробегаешься циклом по остальным точкам и cравниваешь дистанцию от данной точки первой кривой до данной точки второй кривой. И если она больше допустимой погрешности то они не равны.

Тоесть допустим:
2 кривые
2 массива.
В одной кривой 5 звеньев.

Перемещение второй к первой:

x_d=Curve1[i].x-Curve2[i].x// смещение

for(i=0;i<5;i++)
{
 
Curve2[i].x-=x_d// перемещаем

Сравнение:
for(i=0;i<5;i++)
{
 if (
Distance(Curve1[i].x,Curve1[i].y,Curve2[i].x,Curve2[i].y)>max_dist)
 {
    
// Они не равны
   
Exit;
 }

Дистанцию находить так:
Sqr(((x1 x2) * (x1 x2)) + ((y1 y2) * (y1 y2))) 
Если нужен код в B3D, то могу и в нём написать.
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 4090 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Randomize за это полезное сообщение:
Harter (18.01.2010), Horror (18.01.2010)