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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 08.09.2013, 00:57
Аватар для Speech
Speech Speech вне форума
Новичок
 
Регистрация: 16.02.2012
Сообщения: 55
Репутация: 10
По умолчанию Как сделать алгоритм амплитудного движения мышки?

Доброго времени суток еще раз.
Нужно передвигать мышку по заданной области экрана. Делаю прямолинейно:
Код:
{процедура перемещения курсора мышки в области заданных координат
X, Y - начальные координаты области
StopX, StopY - конечные координаты области}
procedure MoveMouse(X, Y, StopX, StopY: Integer);
var
  X1: Integer;
begin
  while Y <= StopY-1 do
    begin
      for X1:= X to StopX-1 do
        begin
          SetCursorPos(X1+20, Y);
        end;
      Inc(Y, 20);
    end;
end;
Графически это выглядит как линия с определенным шагом (это 20 пикселей)

Однако такой способ не сильно мне подходит, ибо нужно немного участить движения мышки (удаление шага в 20 пикселей это не выход, долго объяснять придется почему). Единственное что на ум пришло - это сделать движение в виде амплитуды или синусоида:

Кто то сталкивался с таким? Есть алгоритм как найти точки такой амплитуды? А если есть и готовый код - это вообще здорово.
Знаю что тут нужна математика, но это я изучал лет 15 назад и никогда в жизни не сталкивался, так что почти все забыл.

Последний раз редактировалось Speech, 08.09.2013 в 01:02.
Ответить с цитированием
  #2  
Старый 08.09.2013, 01:20
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Цитата:
Знаю что тут нужна математика
Ага, высшая математика:
Код:
for X1:= X to StopX-1 do
begin
    Y1 := y + round(sin(x1 * 0.1) * 10); // по Y Будет y-10..y+10; 0.1 для растяжения по оси X
    SetCursorPos(X1, Y1);
end;
y := y + 20;
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
Этот пользователь сказал Спасибо Bargest за это полезное сообщение:
Speech (08.09.2013)
  #3  
Старый 08.09.2013, 02:30
Аватар для Speech
Speech Speech вне форума
Новичок
 
Регистрация: 16.02.2012
Сообщения: 55
Репутация: 10
По умолчанию

Bargest, спасибо
Жаль только не до конца разобрался в той строке. Но это уже по дню...
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter