Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.10.2010, 15:24   #1
Krutkin
 
Регистрация: 03.10.2010
Сообщений: 3
По умолчанию Расчёт среднего расстояния между двумя линиями (Delphi)

Здравствуйте. Я новый на этом форуме, поэтому могу не знать каких-либо неписаных правил, извиняюсь, если что не так.
Проблема такова: есть две линии, эталонная и рисуемая пользователем, известны координаты Y для каждого соответствующего X. Но при подсчёте почему-то выдаются какие-то дикие значения. Прошу помощи.

Код:
рисование исходной синусоиды
procedure TForm1.btn1Click(Sender: TObject); - 
begin
btn1.Hide;
btn2.Show;
mmo1.Hide;
edt1.Hide;
PatBlt(Form1.Canvas.Handle, 0, 0, Form1.ClientWidth, Form1.ClientHeight, WHITENESS); 
sec:=0;
form1.Canvas.MoveTo(10,(ClientHeight div 2)-50);
tmr1.Enabled:=true;
for PX:=10 to 790 do
begin                                                                       
X:=PX*4*Pi/ClientWidth;
Y:=Sin(X);
PY:=trunc(ClientHeight - (Y+1)*ClientHeight/3);
form1.Canvas.LineTo(PX,PY-115);
massiv1[PX]:=py-115;
end;
end;
end;


рисование линии пользователем и расчёт
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
if (dwn=True) then
begin
Form1.Canvas.LineTo(x,y);
lbl1.caption:=IntToStr(x)+' ; '+IntToStr(y);
if (x>10) then
q:=Sqrt(Sqr(massiv1[x]-y)); - я понимаю, что в принципе формула другая, но даже так выводит что-то явно не то
end;
end;
Krutkin вне форума Ответить с цитированием
Старый 03.10.2010, 16:44   #2
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Кто бы знал, что такое "среднее расстояние между двумя линиями".
Прик вне форума Ответить с цитированием
Старый 03.10.2010, 17:38   #3
Krutkin
 
Регистрация: 03.10.2010
Сообщений: 3
По умолчанию

среднее арифметическое кратчайших расстояний между всеми соотв. точками
Krutkin вне форума Ответить с цитированием
Старый 03.10.2010, 19:24   #4
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

если имеется ввиду расстояние между точками по вертикали (по оси Y) и просто среднее арифметическое расстояний, то при рисовании линии складываем расстояние между значениями Y и делим на количество прочерченных точек.
Код:
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
  if dwn then begin
    Canvas.LineTo(x,y);
    if (x>10) then begin
      q := q + massiv1[x]-y;
      Inc(c);
      Label1.Caption := floatToStrF(q/c, ffFixed, 10, 2);
    end;
  end;
end;
Прик вне форума Ответить с цитированием
Старый 03.10.2010, 19:42   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
среднее арифметическое кратчайших расстояний между всеми соотв. точками
1) Откуда такие постулаты?
Дайте, пожалуйста, ссылку на какой-нибудь более-менее авторитетный сайт (математический или просто энциклопедический), где можно прочитать об этом? Особенно интересует понятие "соответствующие" точки? Какие точки у двух прямых являются соответствующими?

2) Вы не путаете понятия прямая и отрезок? Прямая линия по определению не имеет начала и конца, и, соответственно, состоит из бесконечного числа точек...

короче, для того, чтобы помочь Вам, надо понять, ЧТО же Вы, собственно, пытаетесь, вычислить...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.10.2010, 14:04   #6
Krutkin
 
Регистрация: 03.10.2010
Сообщений: 3
По умолчанию

2) я нигде не использовал понятия "прямая"
1) да, действительно, официально такого термина не существует, и определение дал я не очень, потому что устал, и голова уже не варила. соответствия хватило бы любого, хоть разность игреков по одному иксу.

Большое спасибо вам, Прик, вы мне очень помогли. я не понимаю, в чём разница с тем методом, который я использовал сначала, до того, как я начал перешёл на всякие дикости и, наконец, был вынужден обратиться сюда, но работает.

Последний раз редактировалось Krutkin; 04.10.2010 в 14:12.
Krutkin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль. вычисления расстояния между двумя точками, заданными на плоскости их координатами Saka Помощь студентам 10 05.11.2016 18:49
кратчайшие расстояния между вершинами pum-pum-pum Помощь студентам 1 07.01.2010 11:30
Уменьшение расстояния между элементами в CSS CoDaJJe HTML и CSS 0 28.08.2009 00:12
Обмен данными между двумя формами в Delphi NecroSlider Помощь студентам 2 30.07.2009 11:52
Как из Delphi программно создать связь между двумя базами Access? Dimm Microsoft Office Access 6 12.01.2007 14:35