|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Alexey V.Chaykin 2:5020/400 14 Jan 2002 10:59:53 To : Artem Gubenkov Subject : Re: Hужен алгоритм проведения отрезка между двумя точками --------------------------------------------------------------------------------
Artem Gubenkov wrote:
> 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: iaphras (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор Архивное /ru.algorithms/65778147e986.html, оценка из 5, голосов 10
|