(Spiele-/Gra...) Linien, Bresenham
-
hallo
ich bin gerade dabei eine art 'ascii-engine' zu schreiben. d.h. ich habe ein
int [80][25] array dessen werte geändert werden und dann der reihe nach angezeigt werden, so dass ein bild entsteht.
beispiel:ein x an postion (4,5):
screen[4][5]='x';jetzt gibt es aber probleme mit linien.dank google weiss ich von einem Bresenham-algo. ich bin mir nicht ganz sicher ob ich den wirklich verstanden habe, hier mal meine version(nach einer seite):
int screen::draw_line(int x1,int y1 ,int x2,int y2, char symbol) { int m= (y2 - y1) / (x2 - x1); //steigung int d=0; int x = x1; int y = y1; while (x != x2) { sign[x][y]=symbol; x++; d=d+m; if (d > 0.5){ y++; d--; } } return 0; }
aufgerufen wird z.B. mit testbild.draw_line(10,10 ,20,8, 'x');
richtig gut funktioniert es aber nur wenn der steigunswinkel 45° beträgt also z.B. eine linie von (10,10) nach (20,20).
ehrlich gesagt wundert mich schon das.hat jemand vielleicht irgendeine idee oder kennt eine _gute_ seite wo der algo. erklärt wird? die links die ich bei google dunkelblau gefärbt habe waren irgendwie nicht wirklich verständlich...
-
Also ich hab den Algorithmus benutzt um Pixel in einer Linie zu zeichnen und das hat geklappt.
Ich verschied das mal in das Grafik Forum