Показать сообщение отдельно
Старый 03.03.2016, 11:42   #3
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Движение объекта и другие действия при помощи формулы sin()

Сообщение от JeanWinters Посмотреть сообщение
Для того, чтобы объект двигался вверх/вниз можно использовать формулу sin(). Например, так:


var angle=0;
var range=10;
var speed = 0.25;
var y0 = circle.y;


circle = y0 + Math.sin(angle)*range;
angle+=speed;

Вопрос такой, нужно ли обнулять переменную angle , так как объект движется, а она возрастает, или переменная обнулится сама, как только достигнет предела значений типа? Во многих примерах рассматривают этот алгоритм движения, также как и масштабирования, вращения, но про то, что переменная постоянно возрастает не говорят ничего конкретного.
Вопрос переполнений редко рассматривается всерьёз (что оборачивается потенциальными дырами в безопасности), т.к. для большинства применений переполнение либо не происходит, либо не является недопустимым/критичным.
Переменная, в данном случае, конечно, обнулится (ОС не упадёт), но только это приведёт к скачку значений и некорректному моделированию движения.
Разумеется, обвязка (идентификации, объявления, коррекции), обеспечивающая согласование участка кода с остальной системой, в теоретических конспектах не упоминается за ненадобностью.
В указанном фрагменте кода, отбрасывание периода у аргумента периодической функции - хороший стиль написания отказоустойчивого кода.

См. ещё Откидывание периода угла
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием