|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Stanislav Shwartsman 2:400/520 04 Mar 2003 09:38:47 To : Maxim Petrankov Subject : <без заголовка> -------------------------------------------------------------------------------- 04 Mar 03 07:08, you wrote to All: MP> Есть точки с кооpдинатами x1,y1 и x2,y2. Hадо постpоить между ними MP> линию имея возможность pисовать только точку. Алгоритм Брезенхема. === Cut === void line(DINFO *h, int x1, int y1, int x2, int y2, CTYPE color) { short dy, mx, my, c, sc; if(x1 > x2){ x1 ^= x2 ^= x1 ^= x2; y1 ^= y2 ^= y1 ^= y2; } mx = x2 - x1; /* compute both distances */ my = y2 - y1; if(!my) { h->Hline(h,x1,y1,mx,color); return; } if(!mx) { (my > 0) ? h->Vline(h,x1,y1,my,color): h->Vline(h,x1,y2,-my,color); return; } if(my < 0) { dy = -1; my = -my; } else dy = 1; if (mx>my) { sc=1+mx; mx-=my; c=(my-mx) >> 1; while( sc ) { h->SetPixel(h,x1,y1,color); if(c>=0) { y1+=dy; c-=mx; } else c+=my; x1++; sc--; } } else { sc=1+my; my-=mx; c=(my-mx) >> 1; while( sc ) { h->SetPixel(h,x1,y1,color); if(c>=0) c-=mx; else { x1++; c+=my; } y1+=dy; sc--; } } } === Cut === E-mail: gate@fidonet.org.il Voice Phones: 972-4-8330554 (home), 972-5-4481073 (cell) Bye ! Stanislav (AKA Night's Man) [Team Technion] --- * Origin: Gate From Another World ... From Haifa, Israel (2:400/520) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/17853e644a61.html, оценка из 5, голосов 10
|