mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik rotierende Figuren auf LCD


Autor: Patrick B. (p51d)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Chris R. (hownottobeseen)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Patrick B. (p51d)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Chris R. (hownottobeseen)
Datum:

Bewertung
0 lesenswert
nicht 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 ;)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.