Вниз
Скачать: CL | DM;

Алгоритм перемещения курсора мыши   Найти похожие ветки 

 
worldmen   (2009-06-30 13:13) [0]

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


 
clickmaker ©   (2009-06-30 13:16) [1]

> чтоб по диагонали можно было?

то есть либо x, либо у менять уже умеем, а сразу оба - нет?


 
Palladin ©   (2009-06-30 13:16) [2]

господи...


 
Anatoly Podgoretsky ©   (2009-06-30 13:28) [3]

К черту


 
wordmen   (2009-06-30 13:44) [4]


> то есть либо x, либо у менять уже умеем, а сразу оба - нет?

Если так, то плучится перемещение сразу по вертикали (или горизонтали) а потом по горизонтали, т.е. по квадратам ходить.
А чтоб сразу по диагонали надо разбивать на отрезки в зависимости длины и ширины.
Идеально конечно перемещать из точки (10, 10) в точку (100, 100) - по однопу пикселю за шаг по вертикали и горизонтали, а если надо переместить в (150,300) то надо делить на отрезки и как-то правильно оприращивать и округлять


 
clickmaker ©   (2009-06-30 13:45) [5]

> если надо переместить в (150,300)

алгоритм Брезенхейма для рисования линий посмотри


 
Palladin ©   (2009-06-30 13:49) [6]


> то надо делить на отрезки и как-то правильно оприращивать
> и округлять

угу, используя математику начальных классов


 
Anatoly Podgoretsky ©   (2009-06-30 13:52) [7]

> clickmaker  (30.06.2009 13:45:05)  [5]

LineDDA именно этот алгоритм и реализует.


 
И. Павел   (2009-06-30 20:53) [8]


> то надо делить на отрезки и как-то правильно оприращивать
> и округлять


Из уравнения линии по двум точкам получается так:

procedure TForm1.Button1Click(Sender: TObject);
var i, y, x, y1, y2, x1, x2:integer;
begin
 x1:=10;
 y1:=10;
 x2:=300;
 y2:=200;
 for i:=1 to 100 do
 Begin
   y:=y1+(y2-y1)*i div 100;
   x:=x2+(y-y2)*(x1-x2) div (y1-y2);
   Button1.Top:=y;
   Button1.Left:=x;
   Refresh;
   Sleep(10);
 end;
end;


 
wordmen   (2009-07-01 11:20) [9]

СПАСИБО, ОТЛИЧНО РАБОТАЕТ.
А то по алгоритму Брезенхема все равно по одной линии (по диагонали в 45 градусов) идет


 
Anatoly Podgoretsky ©   (2009-07-01 11:26) [10]

Вот взял и опустил Брезенхема.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.007 c
2-1246554868
Michael
2009-07-02 21:14
2009.08.30
Порядок вызова в прототипах функций


2-1246015956
wordmen
2009-06-26 15:32
2009.08.30
нужно сгенерить дату следующего дня и определенное время


2-1246014742
Лёша
2009-06-26 15:12
2009.08.30
Самоосвобождающиеся данные


15-1246084442
Student85236
2009-06-27 10:34
2009.08.30
Как жестко перегрузить Windows XP


2-1246660919
Frizel07
2009-07-04 02:41
2009.08.30
Не загружается GIF из .res файла.




   Наверх