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.

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.

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.