Plazma sayı 2, sayfa 148

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 148

********************************/ VGAMAP[(y << 8) + (y << 6) + x] = color; }

/** * Name : Plot * Desc : Overloaded Plot fonksiyonu. (x,y) koordinatlarını POINT2D * sınıfından tek bir değişkenden alır. * Input : (POINT2D *)p2dPoint * (unsigned char)color */ void Plot(POINT2D *p2dPoint, unsigned char color) { VGAMAP[(p2dPoint->getY() << 8) + (p2dPoint->getY() << 6) + p2dPoint->getX()] = color; }

/** * Name : DrawLine * Desc : Parametreden gelen (x1,y1)-(x2,y2) koordinatları arasına * çizgi çeker. 'a ihtiyaç duymaz. * Bresenham algoritması kullanır. * Input : (int)x1 * (int)y1 * (int)x2 * (int)y2 * (unsigned char)color */ void DrawLine(int x1, int y1, int x2, int y2, unsigned char color) { int dx, dy, x, y, a = 0; dx = (x1 - x2 > 0) ? x1 - x2 : x2 - x1; // Yatay düzlemdeki genişlik dy = (y1 - y2 > 0) ? y1 - y2 : y2 - y1; // Dikey düzlemdeki uzunluk if(dx > dy) // Yatay düzlemde geniş ise { x = x1; y = y1; while(1) { Plot(x, y, color); a += dy; if(a >= dx) { a -= dx; y += (y1 > y2) ? -1 : 1; } if(x == x2) break; x += (x1 > x2) ? -1 : 1; } } else // Dikey düzlemde uzun ise { x = x1; y = y1; while(1) { Plot(x, y, color); a += dx; if(a >= dy) { a -= dy; x += (x1 > x2) ? -1 : 1; } if(y == y2) break; y += (y1 > y2) ? -1 : 1;

Klavyeyle gezinmek için ← ve → tuşları.