jdigreze wrote:Мышкой не пробовал медленнее вошкать?
deathsoft wrote:Тут опять же лучше не в лужу пердеть, а матчасть курить Линейная интерполяция
deathsoft wrote:Если опросов слишком дохуя, например 20000 за фрейм то у тебя просто точки будут на одну и туже координату попадать (тупо друг поверх друга будешь лепить, но при этом если мышью резко повести линия все равно с разрывом будет).
robat_e wrote:гы. вот до чего доводит рисовательство мышкой еще раз повторюсь - qaop+space=рулез
CAMAHACYKE wrote:А что бы разрывов не было нужно просто опрос чаще проводить.
deathsoft wrote:при опросе 60-200 раз в секунду (это всего 1-3 раза за фрейм) линии без разрывов в редакторах получаются
CAMAHACYKE wrote:Поэкспериментирую еще.
deathsoft wrote:Для спектрума дырки между точками надо заполнять вот по этому алгоритму Алгоритм Брезенхема (он без деления), и никак иначе
CAMAHACYKE wrote:Ну ты ж понимаешь что не получится совсем без деления, ведь для меньшей дельты по любому величину ошибки надо вычислять!
Это во-первых.
Проблема такого подхода — в том, что с вещественными величинами, такими как error и deltaerr, компьютеры работают относительно медленно. Кроме того, при вычислениях с плавающей точкой может накапливаться ошибка. По этим причинам, лучше работать только с целыми числами. Это можно сделать, если умножить все используемые вещественные величины на deltax. Единственная проблема — с константой 0.5 — но в данном случае достаточно умножить обе части неравенства на 2.
Получаем следующий код:
function line(x0, x1, y0, y1)
int deltax := abs(x1 - x0)
int deltay := abs(y1 - y0)
int error := 0
int deltaerr := deltay
int y := y0
for x from x0 to x1
plot(x,y)
error := error + deltaerr
if 2 * error >= deltax
y := y + 1
error := error - deltax
Return to Пентева - софт и железо
Users browsing this forum: No registered users and 29 guests