Gast
#284562
Hallo Gemeinde, ich habe mal ein kleines algorithmisches Problemchen: Habe mir gerade eine LED-Matrix (12 Zeilen, 8 Spalten) gebastelt, welche gemutiplext von PNP-Transi und ULN2803 angesteuert wird. Das funktioniert auch wunderbar. Ich habe mir ein 8x12 Array angelegt was Timergesteuert angezeigt wird. Num habe ich mir in C einige Funktionen wie SetPixel und ClearPixel programmiert und wollte noch ein SetLine-Funktion basteln, welche mittels XStart, YStart, XEnd, YEnd aufgerufen wurde. Nun meine Frage: y = mx+n kennt ja jeder, ich rechne in der Funktion m und n aus, aber es klappt nicht, hat jemand schonmal so einen Linefunktion programmiert. Hier ein Auszug aus dem Code: <C> void SetLine(uint8_t sx, uint8_t sy, uint8_t ex, uint8_t ey) { uint8_t i; double m, n, y; dm = fmod((double)(ey - sy),(double)(ex - sx)); //Anstieg m ausrechnen n = (double)((double)ey - ((double)d * ex)); //Schnittpunkt mit der y-Achse SetPixel(sx,sy); // Setze Startpixel SetPixel(ex,ey); // Setze Endpixel if(ex>sx) // wenn XStart größer als XEnd { for(i=sx+1; i<ex; i++) // Zähle x-werte { y = (double)((m * i) + n); // Y berechnen SetPixel(i, (uint8_t)y); } } else // wenn XEnd größer als XStart { for(i=ex+1; i<sx; i++) // Zähle x-werte { y = (double)((m * i) + n); // Y berechnen SetPixel(i, (uint8_t)y); } } } </C>