Hallo zusammen Ich suche eine LCD Funktion, welche mir mittels SetPixel ein Kreissegment mit definiertem Start und Stop Winkel sowie Radius zeichnet. Kennt jemand eine effiziente Routine? Wie das in Mathe geht ist mir klar, aber ob das die effizienteste Methode ist weiss ich nicht. Zudem muss man das Rad ja nicht immer neu Programmieren :) Danke schonmal
Hallo, kennst Du schon den "Bresenham-Algorithmus"? https://de.wikipedia.org/wiki/Bresenham-Algorithmus Dieser könnte auf deine Anforderung angepasst werden.
Karl M. schrieb: > Hallo, > > kennst Du schon den "Bresenham-Algorithmus"? > > https://de.wikipedia.org/wiki/Bresenham-Algorithmus > > Dieser könnte auf deine Anforderung angepasst werden. Danke für deinen Input. Könnte eventuell angepasst werden. Ich weiss nur noch nicht wie. Falls also jemand noch eine Funktion aus einer Grafik Library kennt, wäre ich sehr froh darüber. Danke!
Hast Du in dem Artikel den Abschnitt "Kreisvariante des Algorithmus" gelesen? Da ist auch Beispiel-Code.
:
Bearbeitet durch User
Pete K. schrieb: > Hast Du in dem Artikel den Abschnitt "Kreisvariante des > Algorithmus" > gelesen? Da ist auch Beispiel-Code. Ja hab ich. Dabei handelt es sich jedoch um die aussenlinie. Ich möchte das Segment gefüllt haben. Wenn ich nun mehrere solcher Aussenlinien mit unterschiedlichen Radien zeichne, kann es ereinzelt zu fehlenden Pixeln aufgrund der Rundung kommen. Deshalb ist diese variante nicht geeignet in der dortigen Form.
Holger K. schrieb: > Deshalb ist diese variante nicht geeignet in der dortigen Form. Dann benutze die graue Masse zwischen deinen Ohren und denke dir eine Variante aus die funktionieren könnte. (Hint:horizontale/vertikale Striche ab Y-Achse/X-Achse bis zur Aussenlinie)
Hi >Dann benutze die graue Masse zwischen deinen Ohren und denke dir eine >Variante aus die funktionieren könnte. Z.B. https://de.wikipedia.org/wiki/Floodfill MfG Spess
spess53 schrieb: > Hi > >>Dann benutze die graue Masse zwischen deinen Ohren und denke dir eine >>Variante aus die funktionieren könnte. > > Z.B. https://de.wikipedia.org/wiki/Floodfill > > MfG Spess Vielen Dank für diesen Input! Ich denke das wäre die beste lösung! Ich habe hier den ScanLineFloodFill gefunden: http://lodev.org/cgtutor/floodfill.html#4-Way_Method_With_Stack Dieser verwendet einen Stack. Leider gibt es einen Fehler bei diesem Code. er sagt int &x, sowie int &y sei ein Syntax error. Wie müsste man dies richtig schreiben? Soll hier eine Addresse übergeben werden?
1 | bool pop(int |
2 | &x, int &y) |
3 | {
|
4 | if(stackPointer > 0) |
5 | {
|
6 | int p = stack[stackPointer]; |
7 | x = p / h; |
8 | y = p % h; |
9 | stackPointer--; |
10 | return 1; |
11 | }
|
12 | else
|
13 | {
|
14 | return 0; |
15 | }
|
16 | }
|
Holger K. schrieb: > er sagt int &x, sowie int &y sei ein Syntax error. Wer auch immer "er" ist, die Schreibweise deutet auf eine Referenz hin, das ist ein in C++, aber nicht in C existierendes Konstrukt. Macht nichts, in C kann man stattdessen Pointer verwenden, und wie das geht, steht in Deinem C-Buch drin.
Rufus Τ. F. schrieb: > Holger K. schrieb: >> er sagt int &x, sowie int &y sei ein Syntax error. > > Wer auch immer "er" ist, die Schreibweise deutet auf eine Referenz > hin, das ist ein in C++, aber nicht in C existierendes Konstrukt. > > Macht nichts, in C kann man stattdessen Pointer verwenden, und wie das > geht, steht in Deinem C-Buch drin. Mit "er" ist der Compiler gemeint. Ja dann mach ich statdessen uint16_t *x und uint16_t *y Danke!
Hi
>Ja dann mach ich statdessen uint16_t *x und uint16_t *y
Wie groß ist denn dein Display?
MfG Spess
spess53 schrieb: > Hi > >>Ja dann mach ich statdessen uint16_t *x und uint16_t *y > > Wie groß ist denn dein Display? > > MfG Spess 320 x 240 pixel
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.