Движение объекта и другие действия при помощи формулы sin()
Для того, чтобы объект двигался вверх/вниз можно использовать формулу sin(). Например, так:
var angle=0; var range=10; var speed = 0.25; var y0 = circle.y; circle = y0 + Math.sin(angle)*range; angle+=speed; Вопрос такой, нужно ли обнулять переменную angle , так как объект движется, а она возрастает, или переменная обнулится сама, как только достигнет предела значений типа? Во многих примерах рассматривают этот алгоритм движения, также как и масштабирования, вращения, но про то, что переменная постоянно возрастает не говорят ничего конкретного. |
Ответ: Движение объекта и другие действия при помощи формулы sin()
Ну по идее нужно ограничить переменную, но я думаю ты долго будешь ждать, пока double переполнится и станет отрицательным, так что не обязательно,хотя я бы ограничивал угол от 0до 2PI, нафиг больше.
|
Ответ: Движение объекта и другие действия при помощи формулы sin()
Цитата:
Переменная, в данном случае, конечно, обнулится (ОС не упадёт), но только это приведёт к скачку значений и некорректному моделированию движения. Разумеется, обвязка (идентификации, объявления, коррекции), обеспечивающая согласование участка кода с остальной системой, в теоретических конспектах не упоминается за ненадобностью. В указанном фрагменте кода, отбрасывание периода у аргумента периодической функции - хороший стиль написания отказоустойчивого кода. См. ещё Откидывание периода угла |
Ответ: Движение объекта и другие действия при помощи формулы sin()
angle = (angle+speed) % 360.0;
|
Ответ: Движение объекта и другие действия при помощи формулы sin()
Не совсем понял. Сделал в BlitzMax'е , только вместо процентов так: "angle = (angle+speed) * 360.0 / 100;" . Объект странно повел себя и "побежал"...
RegIon , это как будет выглядеть в коде? impersonalis, функция работает, помогла. |
Ответ: Движение объекта и другие действия при помощи формулы sin()
Кстати, почему, если в BlitzMax'е написать Sin(180) , то выдается странное значение?
|
Ответ: Движение объекта и другие действия при помощи формулы sin()
Цитата:
|
Ответ: Движение объекта и другие действия при помощи формулы sin()
Вложений: 1
Так в эту формулу передаются значения в градусах.
|
Часовой пояс GMT +4, время: 09:48. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot