INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Grafiklib für gefüllte Polygone
20.09.2016, 08:15
Beitrag #1
Grafiklib für gefüllte Polygone
Gibt es eine möglichkeit, dass man die Linienstärke angeben kann oder ein Polygon und dieses auch noch mit einer Farbe füllen?
Habe das 1,8" Adafruit mit deren Lib - da geht nur LInie, Dreieck, Kreis usw.. Kein Parameter für Linienstärke und kein Polygon. Noch weniger ein gefüllter..
Gibts da auch "allgemein" Libs die mit allen Displays funktionieren? Später soll ein Farb-OLED Display mit nem ganz anderen Chip dazu gekommen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.09.2016, 19:56
Beitrag #2
RE: Grafiklib für gefüllte Polygone
Hallo AlphaRay,
Zitat:Gibt es eine möglichkeit, dass man...
Ich sage mal eindeutig "Jain"
Ich habe zwar keine Ahnung von Polygonen, wenn ich aber das hier lese: https://narfation.org/alggeo/triangulation.pdf , sollte man ja in der Lage sein die allermeisten Polygone in Dreiecke zu zerlegen. und du hast ja selbst gesagt, dass so ziemlich jede Lib eine Funktion zum zeichnen von Dreiecken hat. Die basieren dann auf Funktionen zur Zeichnung von Linien / Pixeln.
Ich glaube aber, dass die im Link angegebenen Formeln dem Arduino ganz schön Zeit kosten dürften, da höhere Funktionen über Grundrechenarten "verdrahtet" werden.
Linienstärken musst du halt über das mehrfache Zeichnen von Linien nebeneinander emulieren.
Naja und dann bleibt noch die Frage wie die Funktion aussehen sollte die Polygone zeichnet. Die Polygone können ja 1 bis n Eckpunkte haben. Die Koordinaten dazu müssten ja übergeben werden.
Am meisten verbreitet sind die Libs von Henning Karlsen. Die unterstützen etliche Controller/Displaytypen.
Zitat:Habe das 1,8" Adafruit
ist zu unkonket(AF hat ja nicht nur eine Art von 1.8er Display). Du müsstest halt gucken ob die Libs von HK das Teil unterstützen.
Unabhängig von der Lib könnte ich mir vorstellen, dass man die Koordinaten der Eckpunkte in ein Array packt und dann damit eben Dreiecke zeichnet (die Libs von HK zeichnen auch gefüllte Dreiecke)..
Nur so ein paar Gedanken....
Grüße Ricardo

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.09.2016, 20:56 (Dieser Beitrag wurde zuletzt bearbeitet: 20.09.2016 21:06 von AlphaRay.)
Beitrag #3
RE: Grafiklib für gefüllte Polygone
Das wäre die Notlösung - das Polygon in Dreiecke zerlegen. Das macht sowieso ein externes Tool am PC, an dem ich seit gestern bin. der Verarbeitet die Daten und spuckt eine optimierte Datei aus.
Hm..einfacher wäre es also nur die Umrandung zu zeichnen und das Polygon ggf. mit einem Pixelraster oder winzigen Icons zu füllen. Es geht hier um Kartendarstellung. Genauer gesagt um z.B. Waldflächen bei den Polygonen.

Das mit mehrfach Linie zeichnen für 2-3 Pixel breite ist mir schon klar. Nur ist das leider nicht sehr performant, da man hier auch mehrere Abfragen benötigt, um zu ermitteln in welche Richtung man die verdopplung/-dreifachung durchführt :/

Das 1,8" Display besitzt einen ST7735. Die Geschwindigkeit der Adafruit-Lib zu dem Chip ist erschreckend langsam Sad Einfach mal Display schwarz füllen und aktualisieren flackert extrem. Ich Hoffe, dass es mit dem Teensy 3.2er viel besser funktionieren wird.

Für das 1,8" gibts eine LIb von ihm..werd ich mal testen. Danke Smile
https://github.com/zigwart/Adafruit_QDTech

Wie ist das eigentlich bei den Displays..gibts da keine Möglichkeit der PUfferung direkt im Display? Dass man das nächste Frame im Hintergrund aufbaut, was dann vom Display per Befehl flimmerfrei umgeswitched wird? Buffer im Ram aufbauen macht nicht viel sill, da bei Auflösungen um 320x240 es ja ewigkeiten Dauert, bis dsa übertragen ist. Vom Speicherbedarf jetzt mal abgesehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.09.2016, 17:23
Beitrag #4
RE: Grafiklib für gefüllte Polygone
naja, wenn du sowieso die Triangulation auf dem PC machst, warum nicht auch Daten für die Linienstärke mit in die Datei reinpacken und dem Arduino übergeben.
Dann mit dem Arduino die Datei auslesen, die Daten in ein Array / Struct packen und dann nur die notwendigen Grundfunktionen (Pixel / Linie zeichnen - in der Lib gucken) auf das Array / Struct loslassen. Vorteil: du arbeitest nur mit unsigned int Daten. Die gehen auf dem Arduino fix. Letztlich also den PC rechnen lassen, den Arduino nur als "Zeichenmaschine" benutzen
Der ST7735 wird auch von Libs von Henning Karlsen unterstützt, einfach in Dok gucken wie der angesteuert wird.
Zitat:Wie ist das eigentlich bei den Displays..gibts da keine Möglichkeit der PUfferung direkt im Display? Dass man das nächste Frame im Hintergrund aufbaut, was dann vom Display per Befehl flimmerfrei umgeswitched wird?
Drei Tücken / Antworten in der Frage:
1. ob die Displays interne Puffer haben hängt schlicht vom Displaytyp ab - Datenblatt
2. Um den Puffer zu füllen müssten die Daten ja auch erstmal reingeschrieben werden, das kostet theoretisch Zeit
3. die nur theoretische Zeit ergibt sich aus dem Fakt, dass der Arduino kein Multitasker ist, das Thema "im Hintergrund" erledigt sich damit sowieso.
Ich glaube was du suchst findest du eher bei 4D Systems
Grüße Ricardo

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.09.2016, 18:28 (Dieser Beitrag wurde zuletzt bearbeitet: 21.09.2016 18:29 von AlphaRay.)
Beitrag #5
RE: Grafiklib für gefüllte Polygone
Genau so ist das ja geplant Wink Der PC berechnet alles soweit vor und komprimiert wo es nur geht..die GPS-Kordinaten z.B. werden auch so gekürzt, dass die je in 4 Byte ganzzahl passen. Als Rechner wird ein Teensy 3.2 genommen + 4 MBit RAM Chip. Für die Bildschirmausgabe selbst ein 8266er, falls der Teensy nicht mit beidem gleichzeitig (Kartendaten einlesen, verarbeiten und an das Display schicken) klar kommt.

Habe vorhin erst angefangen von Adafruit auf PDQ-GFX Lib umzustellen. Die soll schon einiges schneller laufen. Mein Problem momentan ist die Aktualisierungsgeschwindigkeit. Bin aber auch erst mit dem Mega dran...muss aber auch mit diesem irgendwie möglich sein einigermaßen schnell das Display zu füllen.

zu 2 und 3: daher die Idee mit nem 8266er als "Displaypuffer". So kann der Teensy die Daten von der SD laden, verarbeiten und für den aktuellen Kartenausschnitt/Zoom die Koordinaten für die Linien, Flächen und Texte an den 8266er schicken. Das aber nur, wenn der Teensy selbst nicht schon schnell genug ist. Theoretisch könnte ein 8266er selbst schon alles schaffen - habe gestern erst gesehen, dass man den ja auf 160 Mhz takten kann, wodurch er ja doppelt so schnell ist wie der Teensy...
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.09.2016, 07:35
Beitrag #6
RE: Grafiklib für gefüllte Polygone
Gestern mal nen Benchmark gemacht bzw. ne FPS-Anzeige. Ausgegeben werden lediglick vier kurze String auf dem 128x160er Display (ST7735) + direkt vor der Ausgabe Neupositionierung + Ausgabe des vorherigen Textes in schwarz statt den ganzen Bildschirm zu füllen. Ergebnis: 6 FPS - das kann's doch nicht sein... o_O Textgröße=1, also winzig.
Verwendet wird ein Mega2560. Über SPI werden lediglich vier Texte in schwarz+weiß ausgegeben = ca. 80 ms je Text!
Die Textausgabe selbst beansprucht die meiste Zeit. Das Ausblenden der Position/Farbe wirkte sich nicht aus.
Das Zeichnen von vier Linien ebenfalls gemessen: 78-79 ms.
Die andere Lib hatte ich nicht zum laufen gebracht. Das hier sind alles Werte mit der Original Adafruit-Lib. Sind das normale Werte..? Auf den Videos sieht das irgendwie viel schneller aus, wenn normale UNOs genutzt werden.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste