|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Artem Gubenkov 2:5020/400 12 Jan 2002 21:53:15 To : Alexey V.Chaykin Subject : Re: Hужен алгоритм проведения отрезка между двумя точками -------------------------------------------------------------------------------- Hello, Alexey! You wrote on Fri, 11 Jan 2002 14:50:15: AV> ... т.е. нужен алгоритм получения набора всех точек этого отрезка. Советую использовать алгоритм Брезенхема: void line(int x1, int y1, int x2, int y2, int color) { int dx = abs(x2-x1); int dy = abs(y2-y1); int sx = x2 >= x1 ? 1: -1; int sy = y2 >= y1 ? 1: -1; if(dy <= dx) { int d = (dy << 1) - dx; int d1 = dy << 1; int d2 = (dy - dx) << 1; putpixel(x1, y1, color); for(int x = x1 + sx, y = y1, i=1; i <= dx; i++, x += sx) { if(d > 0) { d += d2; y += sy; } else d+=d1; putpixel(x, y, color); } } else { int d = (dx << 1) - dy; int d1 = dx << 1; int d2 = (dx - dy) << 1; putpixel(x1, y1, color); for(int x = x1 , y = y1 + sy, i=1; i <= dy; i++, y += sy) { if(d > 0) { d += d2; x += sx; } else d+=d1; putpixel(x, y, color); } } } With best regards, Artem Gubenkov. E-mail: 006955@saronline.ru --- ifmail v.2.15dev5 * Origin: A poorly-installed InterNetNews site (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор Архивное /ru.algorithms/106384945fcee.html, оценка из 5, голосов 10
|