- From
- Stanislav Shwartsman (2:400/520)
- To
- Maxim Petrankov ()
- Date
- 2003-03-04T08:38:46Z
- Area
- RU.ALGORITHMS
Hello Maxim!
04 Mar 03 07:08, you wrote to All:
MP> Есть точки с кооpдинатами x1,y1 и x2,y2. Надо пост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)