Не стоит так трахаться (извините)(+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Котик 29 июля 2004 г. 13:57
В ответ на: Растолкуйте пожалуйста, почему в алгоритме Брезенхема для рисования линии (http://www.kgraph.narod.ru/lectures/2_4.htm) идет проверка только на Х<Х2 ? Если у меня по оси Y расстояние больше чем по Х, то линия рисуется только до точки Х2 и все. А дальше......? отправлено Stoune 29 июля 2004 г. 13:52

void graphLine(unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2, unsigned char color)
{
int x, y, count, xs, ys, xm, ym;

x = (int)x1;
y = (int)y1;
xs = (int)x2 - (int)x1;
ys = (int)y2 - (int)y1;
if(xs < 0)xm = -1;
else if(xs > 0)xm = 1; else xm = 0;
if(ys < 0)ym = -1;
else if(ys > 0)ym = 1; else ym = 0;
if(xs < 0)xs = -xs;
if(ys < 0)ys = -ys;
graphSetPixel((unsigned char) x, (unsigned char) y, color);
if(xs > ys) // < 45 Grad
{
count = -(xs / 2);
while(x != x2 )
{
count = count + ys;
x = x + xm;
if(count > 0)
{
y = y + ym;
count = count - xs;
}
graphSetPixel((unsigned char) x, (unsigned char) y, color);
}
}
else // >=45 Grad
{
count = -(ys / 2);
while(y != y2)
{
count = count + xs;
y = y + ym;
if(count > 0)
{
x = x + xm;
count = count - ys;
}
graphSetPixel((unsigned char) x, (unsigned char) y, color);
}
}
}

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru