Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Линейное движение [D6, WinXP]


brother ©   (2006-05-28 08:53:00) 

Что-то я никак не догоню...
Люди, помогите с проблемкой:

Есть произвольно построенная линия (LineTo...)
Как просчитать координаты всех точек этой линии?


brother   (2006-05-28 20:15:00) [1]

Огромное спасибо Rial.
Ндя, что-то совсем с ума схожу... вроде не глупый :)


Rial   (2006-05-28 19:23:00) [2]

Дано:
A(X1,Y1);
B(X2,Y2);
Speed;

Решение:

XStep=(X2-X1)/Speed;
YStep=(Y2-Y1)/Speed;

Все величины :Extended или :Double;

Округлять надо только при выводе на экран (насколько я понял, используется канва?).

...
X:=X1;
Y:=Y1;
...
X:=X+XStep;
Y:=Y+YStep;
...
WriteMyObject(Round(X),Round(Y));


brother   (2006-05-28 18:35:00) [3]

а как это привязать к перемещению между 2 точками?
те stepx и stepy зависимые, но вот как?


Virgo_Style   (2006-05-28 16:05:00) [4]

еще проще?!

Inc(X, XStep);
Inc(Y, YStep);


brother   (2006-05-28 15:57:00) [5]

Не хило!  :)

Может что по проще есть?

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


Zeqfreed   (2006-05-28 15:37:00) [6]

Вот и ссылка: http://en.wikipedia.org/wiki/Bresenham's_line_algorithm


Zeqfreed   (2006-05-28 15:36:00) [7]

Насколько мне известно, то существуют два основных алгоритма построения прямых линий: четырех- и восьмисвязная развертка. Вот по ним и считай.


brother   (2006-05-28 15:34:00) [8]

Спасибо но не понятно.
Если можно по подробней...
Может у кого есть алгаритмы реализации canvas.LineTo() ?


Virgo_Style   (2006-05-28 09:39:00) [9]

y(x) = kx + b;
для вертикальной несколько иначе, понятно.


brother   (2006-05-28 09:32:00) [10]

Я имел ввиду координаты пикселей линии


RzCoDer   (2006-05-28 09:17:00) [11]

А ты можешь просчитать координаты ВСЕХ ТОЧЕК на линии? Оо


Наверх

Титульная страница Поиск, карта сайта Написать письмо