ivagor, а как учитывается скорость мячика?
ivagor, а как учитывается скорость мячика?
Больше игр нет
Вот эти 0.75 или 12.345 - это и есть скорость шарика по одной из координат.
- - - Добавлено - - -
Подумал, что возможно ты разделяешь угол и скорость и про скорость спросил в этом смысле. Фактически я про это уже написал раньше, когда перечислял косинусы и синусы, которые <=1, а разные скорости можно получить масштабируя (делением или умножением или даже по таблице) эти коэффициенты.
То есть масштабируя, внося таким образом скорость в коэффициенты.
У моего третьего варианта с псевдокодом по-моему есть пара важных преимуществ по сравнению с более "прямолинейными" подходами: все предварительные расчеты делаются на этапе компиляции, все сложения 8-битные + перенос. Очевидный недостаток - итеративность. Может быть например получится слишком много итераций в среднем, тогда 16-битный FP и сложные предварительные расчеты окажутся более практичными.
Больше игр нет
svofski, у тебя фактически тоже арифметика с фиксированной точкой, но частный случай, когда коэффициенты <1. И масштабирование ты делаешь сложением вместо умножения или набора таблиц (я бы сам скорее всего сделал набором таблиц, по крайней мере в ротозумере именно так делал). В сухом остатке одно значимое отличие - 8-битное сложение вместо 16-битного. На мой взгляд оно того не стоит - некоторое усложнение и замедление (когда скорость>1) программы в обмен на 8-битные таблицы, но это только мое мнение.
ivagor, да, все верно. 8 бит только дробная часть, а целая часть оседает в координате через флаг переноса. В общем это просто немного другое представление 16-битной координаты и если мы твой и мой способы запишем строго формально, то получим эквивалентные выражения.
Таблицы это не обязательно, просто с ними получается короче путь до первого осязаемого результата.
Больше игр нет
В твой вариант я бы все же одну хаку добавил. Когда 255 - сразу прибавляем единицу к x_accu (или y_accu). Или так - перед тем, как использовать dda_table_x (или y) для сложения прибавляем туда единицу, в этом случае в dda_table надо хранить коэффициенты уменьшенными на единицу.
Программка заставляет нижний левый угол экрана испускать лучи добра. Процедуру Round закомментил, т.к. ее влияние практически не заметно, но можно раскомментить при желании.
Небольшой оффтоп. Периодически возникает срач на тему мнемоник 8080 и z80, какие лучше. Так вот 8080 имеет инструкцию ana l, а у z80 такой инструкции нет.
- - - Добавлено - - -
Забыл режим при выходе восстановить. Можно использовать Esc60
Denn, в качестве платы за оффтопик сконверти это изображение в битмап 256x256 с цветовой палитрой RGB для "Океана".
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)