2016-04-06 7 views
0

Ist nur möglich zu zeichnen eine einfache gepunktete Linie mit SDL2 (oder mit GFX) wieSDL2 Wie gestrichelte Linie

int drawDottedLine(SDL_Renderer *renderer,Sint16 x1,Sint16 y1, Sint16 x2, Sint16 y2, int r, int g, int b, int a); 

fanden absolut nichts auf dem Netz zu ziehen wtf es so schwer ist?

+1

Ich denke nicht, SDL hat diese Funktionalität eingebaut, Sie müssten es selbst implementieren – Henningsson

Antwort

0

Sie können es einfach selbst implementieren ... Überprüfen Sie den "Bresenham-Algorithmus" für eine Linie zeichnen.

Für eine gepunktete Linie, es ist nur viele volle Linie, so dass ein Bleistift und Papier mit Trigonometrie trainieren :)

bearbeiten sollte: Für eine gestrichelte Linie, Sie sogar die Verwendung auf die „Bresenham nicht haben Algorithmus "brauchen Sie nur Trigonometrie.

Und übrigens, für diejenigen, die downvoted sind, erklären Sie sich selbst?

+0

Ich denke, dass eine benutzerdefinierte Bresenham-Algorithmus geeigneter ist als eine trigonometrische Lösung, weil trigen Gleitkomma-Mathematik erfordert, wo Bresenham nicht. Fügen Sie einen Zähler zum Bresenham Algo nur an dem Punkt hinzu, an dem die Pixelfarbe eingestellt wird. Für jede neue Koordinate auf dem Pfad inkrementiere den Zähler, Wenn der Zähler (etwa) 5 ist, dann schalte ein boolesches Flag um und setze den Zähler zurück. Zeichnen Sie nur die Pixel, wenn das Flag wahr ist. – Wossname

+0

Wenn Sie eine optimierte Funktion wollen, ja, eine benutzerdefinierte Bresenham ist der Weg, wenn Sie nur eine gestrichelte Linie wollen, ein "cos", eine "Sünde" und die Funktion ist fast fertig. –