Forum: Mikrocontroller und Digitale Elektronik rotierende Figuren auf LCD


von Patrick B. (p51d)


Lesenswert?

Hallo miteinander.

Ich habe eine kleine Frage, die ich bis jetzt nur ungenügend beantworten 
konnte.
Ich beziehe mich hier auf:
Beitrag "Spielereien auf dem LCD"
Beitrag "OpenGL für AVR (Grundlegende Idee umgesetzt)"

Solche Rotationen mit einfachen Figuren wie eine Quadrat, Rechteck oder 
Dreieck sollten doch relativ einfach zu lösen sein, wenn man das 
Grundobjekt mit punkten definiert hat?
Angenommen ein LCD hat man in ein schönes Raster unterteilt: Wenn ich 
jetzt da ein Quadrat irgendwo in das Raster setze, und jede Seite 
besteht aus 5 Punkten (also keine Linien), wie kann ich es jetzt an 
diesem Ort rotieren, lassen? oder um den Mittelpunkt des 
Koordinatensystems?

Anwendungsbeispiel:
Man hat einen Auftrag bei dem eine SPS realisiert werden sollte. Dabei 
wünscht sich der Kunde, dass auf einem LCD sämmtliche Zustände der 
Anlage angezeigt werden können. Dazu sollte jetzt aber im Kopfbereich 
der Name der Maschine dauerhaft stehen und rechts davon spielerisch das 
Firmenlogo sich schöne rotierend befinden (auf allen Achsen, wenn 
möglich)

Und das ganze etwas MCU würdig? also nich Mit Float oder dergleichen.

Besten Dank für die Antworten
MFG
Patrick

von Chris R. (hownottobeseen)


Lesenswert?

Ich würde an dieser Stelle abwägen, ob es nicht sinnvoller ist, die 
Grafik auf dem PC rendern/rotieren zu lassen und auf dem Display nur 
noch ein Filmchen davon abspielen zu lassen.

Wozu ein Problem mit Rechenpower erschlagen, wenn man genug Speicher 
dafür hat? ;)

Der Knackpunkt ist: du musst alle Punkte in der Grafik rotieren lassen, 
das kostet massiv Rechenpower.
Sinn würde die dynamische Berechnung meines Erachtens nur machen, wenn 
sich am 3D-Objekt zusätzlich etwas ändert - wenn du also ein Gerät in 3D 
mit Animationen oder verschiedenen Stati anzeigen willst: in der CPU 
rendern. Ansonsten: Prerendering.

HTH

von Karl H. (kbuchegg)


Lesenswert?

Patrick B. schrieb:

> Solche Rotationen mit einfachen Figuren wie eine Quadrat, Rechteck oder
> Dreieck sollten doch relativ einfach zu lösen sein, wenn man das
> Grundobjekt mit punkten definiert hat?

Das Objekt wird gedreht, in dem man die Endpunkte der verbindenden 
Kanten dreht.

> Angenommen ein LCD hat man in ein schönes Raster unterteilt: Wenn ich
> jetzt da ein Quadrat irgendwo in das Raster setze, und jede Seite
> besteht aus 5 Punkten (also keine Linien), wie kann ich es jetzt an
> diesem Ort rotieren, lassen? oder um den Mittelpunkt des
> Koordinatensystems?

Nope. Die 5 Zwischenpunkte an der Linie interessieren dich nicht.
Das Quadrat hat 4 Eckpunkte.
Diese 4 Eckpunkte werden gedreht und danach wieder mittels Linien 
miteinander verbunden.

> Anwendungsbeispiel:
> Man hat einen Auftrag bei dem eine SPS realisiert werden sollte. Dabei
> wünscht sich der Kunde, dass auf einem LCD sämmtliche Zustände der
> Anlage angezeigt werden können. Dazu sollte jetzt aber im Kopfbereich
> der Name der Maschine dauerhaft stehen und rechts davon spielerisch das
> Firmenlogo sich schöne rotierend befinden (auf allen Achsen, wenn
> möglich)

Dann musst du vom 2D in den 3D Bereich gehen.
Ab dann ist es mit einfach Formeln vorbei.

Entweder Quaternions oder aber über Transformationsmatrizen.

> Und das ganze etwas MCU würdig? also nich Mit Float oder dergleichen.

Ist machbar mittels Fixpunktarithmetik. Zumal es bei einem sich 
drehenden Logo relativ egal ist, ob ein Endpunkt mal ein Pixel daneben 
ist oder nicht.

Allerdings ist die Transformation einer Bitmap im 3D (und daraum handelt 
es sich bei den meisten Logos, weil sie geometrisch sonst einfach zu 
kompliziert sind) schon nicht mehr trivial machbar. Aber es ist machbar 
:-) Meistens greift man dazu aber zu vorgefertigten 'Filmchen', die 
einfach abgespielt werden, eben weil es den Aufwand nicht lohnt.

von Patrick B. (p51d)


Lesenswert?

Chris R. schrieb:
> Wozu ein Problem mit Rechenpower erschlagen, wenn man genug Speicher
> dafür hat? ;)

Deswegen auch meine Aussage, ob dies MCU würdig sei.
Speicher ist normalerweise im Überfluss vorhanden... aber Funktionen, 
die die Loopzeit des Programms erheblich vergrössern sind meistens nicht 
brauchbar.

Karl heinz Buchegger schrieb:
> Nope. Die 5 Zwischenpunkte an der Linie interessieren dich nicht.
> Das Quadrat hat 4 Eckpunkte.
> Diese 4 Eckpunkte werden gedreht und danach wieder mittels Linien
> miteinander verbunden.

OK, ->Vektorgrafik

Karl heinz Buchegger schrieb:
> Meistens greift man dazu aber zu vorgefertigten 'Filmchen', die
> einfach abgespielt werden, eben weil es den Aufwand nicht lohnt.

OK, wo und wie könnte man solche Filmchen für ein LCD erstellen? Gibts 
da schon Programme?

Besten Dank für die Hilfe
MFG
Patrick

von Hannes (Gast)


Lesenswert?

Patrick B. schrieb:
> OK, wo und wie könnte man solche Filmchen für ein LCD erstellen? Gibts
> da schon Programme?
Dass ist so ähnlich wie bei den animierten Gif's
Zerlege das Ganze in mehrere Einzelbilder und zeige in rascher Abfolge 
die einzelnen Bilder.
Normalerweise reichen ca. 10 bis 20 Einzelbilder.

Fertige Programme kann ich dir jetzt nicht nennen, weil ich die 
Einzelbilder bis jetzt immer per Hand gezeichnet habe.

von Karl H. (kbuchegg)


Lesenswert?

Hannes schrieb:

> Fertige Programme kann ich dir jetzt nicht nennen, weil ich die
> Einzelbilder bis jetzt immer per Hand gezeichnet habe.

Hab jetzt auch keines im Kopf.
Wenn ich sowas brauchen würde, schreib ich mir schnell ein Pgm auf dem 
PC.

Kommt wohl auch aufs Logo an. Wenn das graphisch aufwändig ist, wirds 
wohl auf Bitmap mapping auf eine Fläche rauslaufen. POV-Ray ist zwar 
overkill, wäre aber eine Möglichkeit.

von Chris R. (hownottobeseen)


Lesenswert?

Patrick B. schrieb:
> OK, wo und wie könnte man solche Filmchen für ein LCD erstellen? Gibts
> da schon Programme?

Es gab da mal Ulead Cool 3D, mit dem man IIRC auch Texturen auf Objekte 
legen konnte und das Zeug dann als animiertes GIF exportieren konnte.

War allerdings zu den Zeiten, als animierte GIFs auf Homepages noch als 
Qualitätssiegel galten ;)

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.