Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Закрытая тема
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 04.03.2010, 22:14
Аватар для Biatov
Biatov Biatov вне форума
Прохожий
 
Регистрация: 04.03.2010
Сообщения: 20
Репутация: 9
Вопрос Подписать функцией TextOut в серединах отрезка, соединяющих пары точек...

Приведена программа, обладающая следующей функциональностью.
Имеется меню, содержащее пункты – Выход и О программе,
нажатие на клавишу мыши выдает сообщение – «правая/левая(x,y)» (где (x,y) - координаты кликов мыши). - это я сделал.
А как теперь получить такое? Надо каким-то образом переделать исходник первоначальной программы под эту(при помощи массива) -->

На форму поместить N точек (каждая точка помещается на форму по нажатию левой кнопки мыши и имеет номер 1..N). Вычислить расстояния между всеми парами точек. Начало работы алгоритма - по нажатию правой кнопки мыши, результат подписать функцией TextOut в серединах отрезка, соединяющих пары точек.
Вот исходник первоначальной программы.
Кто может помогите,пожалуйста.

Последний раз редактировалось Biatov, 04.03.2010 в 22:26.
  #2  
Старый 05.03.2010, 20:16
Vocabulary Vocabulary вне форума
Новичок
 
Регистрация: 17.09.2009
Сообщения: 85
Репутация: 9
По умолчанию

Чтобы не нервировать антивирусы, уберите из архива exe'шник.
  #3  
Старый 05.03.2010, 20:37
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,088
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Теорему пифагора знаем?
Начерти на бумажке 2 точки в произвольных местах и соедини их отрезком. Сделай проекции этого отрезка на оси. А теперь напиши формулу расчета длинны отрезка по координатам точек. Ну и сама подпись тоже делается легко - надо расчитать координаты середины отрезка и туда вывести соотв. длинну.

Код:
uses
  Math;

function GetLen(C1, C2 : Integer) : Integer;
begin
  Result := Max(C1,C2) - Min(C1,C2);
end;

var
  I, J : Integer;
  L : Double;
  Points = Array Of TPoint;
begin
  For I := Low(Points) To High(Points) Do
    For J := I + 1 To High(Points) Do
      Begin
         If I = J Then Continue;
         // Calc len
         L = Sqrt(sqr(GetLen(Points[i].X,Points[J].X)) + sqr(GetLen(Points[i].Y,Points[J].Y)));

         // draw. Self = TForm
         Self.Canvas.MoveTo(Points[i].X,Points[i].Y);
         Self.Canvas.LineTo(Points[J].X,Points[J].Y);
         // Лень высчитывать координаты серидины.
         Self.Canvas.TextOut(Points[i].X,Points[i].Y,FloatToStr(L));
      End;
end;
  #4  
Старый 05.03.2010, 21:10
Vocabulary Vocabulary вне форума
Новичок
 
Регистрация: 17.09.2009
Сообщения: 85
Репутация: 9
По умолчанию

Решение с комментариями во вложении.
Вложения
Тип файла: zip l2_1.zip (1.8 Кбайт, 32 просмотров)
  #5  
Старый 05.03.2010, 22:03
Аватар для Biatov
Biatov Biatov вне форума
Прохожий
 
Регистрация: 04.03.2010
Сообщения: 20
Репутация: 9
По умолчанию

Спасибо всем! Справился и лабу сдал!
  #6  
Старый 22.04.2010, 22:04
Irusik-best1991 Irusik-best1991 вне форума
Прохожий
 
Регистрация: 22.04.2010
Сообщения: 6
Репутация: 10
По умолчанию Поиогите написать код программы, плиз:)

На форму поместить N точек (каждая точка помещается на форму по нажатию правой кнопки мыши и имеет номер 1..N). Найти точку, минимально удаленную от точки, последней помещенной на форму по нажатию левой кнопки мыши. Начало работы алгоритма по нажатию определенной клавиши на клавиатуре, результат выдать в окно диалога.
Закрытая тема


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 08:52.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025