Форум: "Начинающим";
Текущий архив: 2006.06.11;
Скачать: [xml.tar.bz2];
ВнизЛинейное движение Найти похожие ветки
← →
brother © (2006-05-28 08:53) [0]Что-то я никак не догоню...
Люди, помогите с проблемкой:
Есть произвольно построенная линия (LineTo...)
Как просчитать координаты всех точек этой линии?
← →
RzCoDer © (2006-05-28 09:17) [1]А ты можешь просчитать координаты ВСЕХ ТОЧЕК на линии? Оо
← →
brother © (2006-05-28 09:32) [2]Я имел ввиду координаты пикселей линии
← →
Virgo_Style © (2006-05-28 09:39) [3]y(x) = kx + b;
для вертикальной несколько иначе, понятно.
← →
brother © (2006-05-28 15:34) [4]Спасибо но не понятно.
Если можно по подробней...
Может у кого есть алгаритмы реализации canvas.LineTo() ?
← →
Zeqfreed © (2006-05-28 15:36) [5]Насколько мне известно, то существуют два основных алгоритма построения прямых линий: четырех- и восьмисвязная развертка. Вот по ним и считай.
← →
Zeqfreed © (2006-05-28 15:37) [6]Вот и ссылка: http://en.wikipedia.org/wiki/Bresenham"s_line_algorithm
← →
brother © (2006-05-28 15:57) [7]Не хило! :)
Может что по проще есть?
В общем надо реализовать линейное движение спрайта с разной скоростью.
И как я понимаю надо просчитывать координаты...
← →
Virgo_Style © (2006-05-28 16:05) [8]еще проще?!
Inc(X, XStep);
Inc(Y, YStep);
← →
brother © (2006-05-28 18:35) [9]а как это привязать к перемещению между 2 точками?
те stepx и stepy зависимые, но вот как?
← →
Rial © (2006-05-28 19:23) [10]Дано:
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 20:15) [11]Огромное спасибо Rial.
Ндя, что-то совсем с ума схожу... вроде не глупый :)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.06.11;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.012 c