eine linie zeichnen
-
hi leute,
ich wollte schnell ein dreieck-fractal machen (als ascii-art) und für das brauche ich ne funktion die mir eine linie in mein coordinatensystem zeichnet,
es funktioniert auch(naja fast ^^), aber ab der hälfte der linie werden bei steigungen > 1 felder ausgelassen, bitte helft mir, ich komm einfach net drauf# ## # # # # # # # # # # # # # # # # # # # ################
void draw_line(char **f, int x1, int y1, int x2, int y2){ // f ist das array in dem alle "pixel" gesetzt werden int step = x1 < x2 ? 1 : -1, i, j; if(x1 != x2){ double gradient = (double)(y2 - y1) / (x2 - x1); for(i = 0; x1 + i != x2 + step; i += step){ j = 1; do { f[y1 + (int)(i * gradient / j)][x1 + i / j] = SET; // SET ist das zeichen für einen gesetzen "pixel" } while(j++ < fabs(gradient)); // für steigungen größer 1 } }else{ step = y1 < y2 ? 1 : -1; for(i = 0; y1 + i != y2 + step; i += step) f[y1 + i][x1] = SET; } }
-
Wennze magst, kannst du dir hier den Bresenham copy & pasten.
Weiter unten findest du eine c-implementierung.
http://de.wikipedia.org/wiki/Bresenham-Algorithmus
Für die Konsole ist das in 5 min umgeschrieben.
-
ok danke, aber eigentlich würde mich sehr intressieren was bei meiner idee falsch ist^^