Verwenden von Qt zum Zeichnen des Graphen von Sin (x)

8

Ich experimentiere mit Möglichkeiten, einen sinusförmigen Graphen zu zeichnen.

Mein Widget erwartet nur, dass es in einigen willkürlichen Datenpunkten übergeben wird. Ich muss diese Datenpunkte an eine sinusförmige Linienkurve anpassen:

Bisher habe ich einige Methoden mit QPainterPath ausprobiert.

  1. QPainterPath :: lineTo - Ich habe versucht, mit dieser Funktion die Kurve zu plotten, indem ich meine Datenpunkte nehme und so viele Punkte zwischen ihnen erzeuge, dass die Linie tatsächlich etwas glatter wird. Das ist ein bisschen zu rechenintensiv, denke ich.
  2. QPainterPath :: cubicTo - Nach dem, was ich von RTFM gelernt habe, ist dies der beste Weg. Das einzige Problem ist, dass ich nicht sicher bin, wie ich meine Kontrollpunkte an Stellen plane, wo sie die Kurve konsistent und programmatisch so glätten, wie ich es möchte. Ich konnte mit dieser Funktion nicht das gewünschte Ergebnis erzielen.

Nachdem ich gegoogelt hatte, stieß ich auf einige Forenbeiträge, die Qwt für die Kurvendarstellung verwendeten. Es wäre großartig, wenn ich Qwt verwenden könnte, aber es ist keine Option, da ich nur Qt verwenden kann.

Hat jemand hilfreiches Feedback / Vorschläge?

    
kwikness 03.08.2011, 04:10
quelle

2 Antworten

6

Ich mache derzeit eine sehr ähnliche Sache mit dem Bode-Sweep eines parametrischen EQ (eine lange Linie mit mehreren Sweep-Kurven). So wie ich es mache (Pseudo-Stil):

%Vor%

Die Kombination der Aufrufe von setRenderHint und das Zeichnen von Zeilen mit QPointF (d. h. zwei qreal ) anstelle von QPoint (zwei int ) macht die Zeile sehr glatt.

Wir verwenden dies auf einem SBC, auf dem Ubuntu läuft, und erhalten für einen 600x300px-Graphen ein Zeitlimit (einschließlich der komplexen Mathematik, um die Punkte zu erhalten) von ~ 80 ms. Erste Tests zeigen, dass OpenGL-Rendering dies auf ~ 8ms reduziert (die prozessorintensive Aufgabe ist eindeutig die Malen mit Antialiasing), also wenn du das kannst, denke ich, dass diese Lösung für dich funktionieren wird.

    
sjwarner 27.10.2011, 10:29
quelle
2

QCustomPlot ist eine kostenlose und einfach zu verwendende Klasse, die online gefunden werden kann. Es kann besser sein für das, was Sie tun möchten.

    
Mike 31.08.2016 19:26
quelle

Tags und Links