-
1. Data: 2014-03-26 19:18:30
Temat: bledy na fixedpointach (drawline)
Od: firr <p...@g...com>
kiedys z lenistwa poniewaz nei chialo mi sie
wpisywac algorytmu bressenhama (vo to wymagalo
lookiniecia do google itp)
i napisalem taka procedure na fixedpointach
void DrawLineUnsafe(int xs, int ys, int xk, int yk, unsigned color)
{
int abs_width = abs(xk-xs);
int abs_height = abs(yk-ys);
int how_many_pixels = max(abs_width, abs_height);
SetPixel(xs, ys, color);
if(how_many_pixels==0) return;
int x = xs<<16;
int y = ys<<16;
int dx = ((xk-xs)<<16)/how_many_pixels;
int dy = ((yk-ys)<<16)/how_many_pixels;
for(int i=0; i<how_many_pixels; i++)
{
x += dx ;
y += dy ;
SetPixel(x>>16, y>>16, color);
//setpixel is inline routine bitmap[y*width+x]=color
}
}
onba niby dziala, nie wiem o ile tez jest wolniejsza
od bressenhama tylko martwi mnie problem bledu
niby jest ona przeznaczona do rysowania lini zna 16bitowym zakresie, (x,y od 0 do
65535 czy cos w tym stylu ) ale czy jest ona w tym zakresie (na bitmapie do 65tys
pixeli) bezbledna (w stosunku do bressenhama) czy tez sa jakies bledy i odchylki dla
jakichs przypadkow - i jak to obliczyc?
-
2. Data: 2014-03-27 11:18:51
Temat: Re: bledy na fixedpointach (drawline)
Od: firr <p...@g...com>
zamiast how many pixels powinno byc how many
segments, ogolnie po zastanowieniu wychodzi mi
ze wogole trzebby tu przemyslec 1) sprawe zaokraglania do srodków pixeli 2) sprawe
przycinania w dol przy dzieleniu (bo teraz wydaje mi sie - choc nie jestem pewien -
ze moga tu byc bledy ale nieduze tj glownie jesli chodzi o ostatni pixel)