Suche LCD Funktion für Kreissegmente (Pieslice)

OP #4229533
Lesenswert?
• ▲
▼
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
OP #4229656
Lesenswert?
• ▲
▼
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!
OP #4229709
Lesenswert?
• ▲
▼
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.
OP #4230051
Lesenswert?
• ▲
▼
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
}
OP #4230058
Lesenswert?
• ▲
▼
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!

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.