Forum: Mikrocontroller und Digitale Elektronik Sector zeichnen, wie?


von Maxim B. (max182)


Lesenswert?

Guten Abend,
ich habe nun eine Frage: ich möchte gerne auf dem Bildschirm auch Sector 
zeichnen, gestrichen und als Bogen. Wie wäre das am besten zu machen?
Es gibt schon Funktionen: Punkt, Linien (horisontal, vertikal und 
willkürlich), Viereck gefüllt und nicht, Kreis gefüllt und nicht. Ich 
möchte eine Funktion, die als Eingang die Argumente hat: Zentrum (x,y), 
Radius, Anfangs- und Endwinkel. Kreisfunktionen passen dafür kaum, da 
die nach dem Prinzip x^2*y^2=r^2 gebaut sind und Ausgangspünkte sind 0°, 
90°, 180° und 270° des Kreises - diese Winkel sind aber nicht unbedingt 
in einem Sector präsent. Ich möchte aber gerne so etwas wie Folge von 
Pünkten von a und bis zu b haben.

Diese Funktionen werden nur selten gebraucht, deshalb ist 
Geschwindigkeit nicht so wichtig.

Danke für Tipps im voraus.

von Wolfgang (Gast)


Lesenswert?

Maxim B. schrieb:
> Kreisfunktionen passen dafür kaum, da die nach dem Prinzip x^2*y^2=r^2
> gebaut sind ...

Und was gefällt dir daran bis auf das "*" nicht?
Wenn du deinen Sektor durch einen Radius charakterisieren willst, ergibt 
sich doch genau ein Kreissektor, für den gilt x²+y²=r².

von Javanola (Gast)


Lesenswert?


von Wolfgang (Gast)


Lesenswert?

Javanola schrieb:
> http://www.java2s.com/Tutorial/Java/0261__2D-Graphics/FillArc.htm

Hoffentlich gibt es für den µC des TO eine Java RTE

von Maxim B. (max182)


Lesenswert?

Wolfgang schrieb:
> Wenn du deinen Sektor durch einen Radius charakterisieren willst, ergibt
> sich doch genau ein Kreissektor, für den gilt x²+y²=r².

Für mich bleibt aber unklar, wie ich Grad 0...359 in x und y umwandele.
Aufgrung der Strictur von Bildschirm finde ich praktisch, y (horisontal) 
in +-1 Schritten zu nehmen und x (vertikal) davon zu berechnen. Aber ich 
kann nicht so einfach Grad, die in einem Kreis liegen, auf eine Fläche 
zu spiegeln, ohne komplizierte float-Funktionen zu nehmen. Aber ich 
vermute, man kann doch ohne float alles berechnen, die Frage ist nur 
wie.

Wolfgang schrieb:
> Hoffentlich gibt es für den µC des TO eine Java RTE

Bitte keine Java und C++. Mir geht es darum, Algorithmus zu verstehen. 
Fertige vorcompilierte Libs gibt es in Netz wie Sand im Meer. Ich bin 
aber kein Arduino-Fan, ich mag es immer gut zu sehen, was und wie genau 
gemacht wird.

: Bearbeitet durch User
von ab (Gast)


Lesenswert?

Mit sin/cos x und y für den Start und Zielwinkel berechnen, und dann mit 
x²+y²=r² (Fallunterscheidung) die dazwischen liegenden Pixel auffüllen.

Du brauchst ja wahrscheinlich nur die Punkte für ganze Werte für x/y

von Maxim B. (max182)


Lesenswert?

ab schrieb:
> Mit sin/cos x und y für den Start und Zielwinkel berechnen

Gibt es Funktionen für sin und cos, die mit ganzzähligen Argumenten 
arbeiten? Die gewöhnliche Funktionen brauchen ja double/float.

ab schrieb:
> Du brauchst ja wahrscheinlich nur die Punkte für ganze Werte für x/y

Ich denke, für u8 u16 nutzen und rechte Byte am Ende abrunden.

: Bearbeitet durch User
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
Noch kein Account? Hier anmelden.