Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Движение по прямой (https://javascript.ru/forum/misc/8807-dvizhenie-po-pryamojj.html)

Sub-zerro 14.04.2010 01:33

Движение по прямой
 
Подскажите, пожалуйсто, как сделать движение по прямой, если есть две точки начало и конец, с координатами (x1,y1) и (x2,y2).
Я делал так: 1вариант - k=(x1-x2)/(y1-y2) - то есть отношение сторон, дальше k раз x++, после 1 раз y++, или наоборот, но это только в том случае если k целое.
2вариант - вычислял уравнение прямой, пришлось вспомнить алгебру, получалось чтото типа y=kx+b, целые числа тоже не получались, но с огруглениями до целых более или менее работало, далее x++ и считался y. Главная проблема вот в чем что при таком варианте количество вычесленных точек на прямой под углом и на горизонтальной прямой получается одиноковым, и объект двигается одиноково, а под углом объект должен двигаться медленнее, тоже не получается.
Подскажите может быть есть какойто удобный способ, спасибо.

Gvozd 14.04.2010 01:52

используйте параметрическое задание прямой, и будет вам счастье

B@rmaley.e><e 14.04.2010 06:39

Цитата:

Сообщение от Sub-zerro
а под углом объект должен двигаться медленнее, тоже не получается.

Сделайте, например, sin(fi/2) + 1/sqrt(2) (здесь рассмотрена только первая четверть) коэффициентом торможения анимации. Т.е. умножать его на задержку кадра. По горизонтальной прямой будем двигаться с задержкой time/sqrt(2), а по вертикальной - time*sqrt(2).
Где fi - угол наклона прямой (от 0 до pi/2)
time - задержка следующего кадра.

Sub-zerro 14.04.2010 13:53

Gvozd, B@rmaley.e><e, спасибо, попробую


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