OK, согласен, перефразирую: "Можно, но не нужно потом пенять, что из-за 8-битной математики точки трясутся!" :v2_dizzy_roll:
Вид для печати
я тоже использовал параболу в i512 и grass вроде. отлично работает.
---------- Post added at 15:19 ---------- Previous post was at 15:18 ----------
а они будут трястись? имхо, картинка просто будет слегка искажаться, чего я на глаз не замечал.
Кстати о параболах. Я как раз недавно натыкался на одну статью. Там приводились коэффициенты многочлена 3-го порядка (кубической параболы) для приближения косинуса на интервале от 0 до pi/2. Так вот, многочлена третьего порядка оказалось достаточно, чтобы погрешность была менее 0.001! Для наших же целей 8-битной точности может оказаться достаточно и многочлена 2-го порядка, т.е. параболы. Ее коэффициенты должны быть вычислены методом минимакс-аппроксимации. Ну а получив четверть периода, можно, используя симметрию, получить и полный период.
---------- Post added at 13:07 ---------- Previous post was at 13:04 ----------
Вот коэффициенты минимакс-полинома третьего порядка для косинуса на интервале 0..pi/2:
y = 0.9998864206+0.00469*x-0.530309*x^2+0.063046*x^3;
Максимальная абсолютная погрешность для приведенной выше формулы - 0.000114
Кубический полином вычислять - сложнее. А квадратичный - может и ненамного сложнее. Константы при умножении закодировать жестко, как я это сделал для своей реализации рекурсивного алгоритма. А там видно будет. Значение x^2 можно вычислять так же, как это делается в алгоритме Брезенхама - по рекуррентному соотношению y[i] = y[i-1] + 2*x*dx
Побочный результат такого алгоритма - парабола. Ее можно использовать для быстрого умножения, подобно тому, как это сделано в Elite.
А что, Брезенхейм не прокатил?