Форум: "Начинающим";
Текущий архив: 2009.08.30;
Скачать: [xml.tar.bz2];
ВнизАлгоритм перемещения курсора мыши Найти похожие ветки
← →
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 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.08.30;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.005 c