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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren