Hi,
Ich versuche gerade Kreise verschiedener Größen und Positionen zu zeichnen, komme aber nicht so ganz hinter das Geheimnis der besten Lösung...
Was ginge wäre ja z.B. zwei Arrays zu machen, da für jeden x Wert 2 y-Werte reinzumachen und die dann mit setData() oder setRawData an eine Curve zu übereben. Allerdings könnte ich auch ein SVG nehmen und das bewegen und vergrößern
Ein anderes Problem ist das bewegen und vergrößern/verkleinern. Ich würde ungern, wenn ich ein Array verwende alle Werte neu berchnen. Gibt es eine Möglichkeit, die ganze "Kurve" zu bewegen?
Gruß Moritz
Qwt Plot: Kreise zeichnen
Hm.
Ich würd mir glaub ich so was wie ne Kreisklasse basteln, Die folgende Funktionen hat.
1. kreisBerechnen(double radius, double mittelpunkt):
Diese berechnet eine Anzahl von Punkten und speichert diese z.B. in einem QVector<double> xWerte und einen für yWerte.
2. kreisVerschieben(double neuerMittelpunkt)
Diese ändert entsprechend die Funtionswerte
3. kreisWachsen(double radiusInkrement)
...
der QwtKurve übergibst du die Daten per setRawData( xWerte.data(), yWerte.data())
wobei xWerte ein QVector ist.
Dann musst du nur noch ein replot auslösen wenn der Vector aktualisiert wurde und du musst die daten nicht mehr neu per setRawdata setzen.
Ich würd mir glaub ich so was wie ne Kreisklasse basteln, Die folgende Funktionen hat.
1. kreisBerechnen(double radius, double mittelpunkt):
Diese berechnet eine Anzahl von Punkten und speichert diese z.B. in einem QVector<double> xWerte und einen für yWerte.
2. kreisVerschieben(double neuerMittelpunkt)
Diese ändert entsprechend die Funtionswerte
3. kreisWachsen(double radiusInkrement)
...
der QwtKurve übergibst du die Daten per setRawData( xWerte.data(), yWerte.data())
wobei xWerte ein QVector ist.
Dann musst du nur noch ein replot auslösen wenn der Vector aktualisiert wurde und du musst die daten nicht mehr neu per setRawdata setzen.
Geschwindigkeit ist beim ploten echt ein thema hab ich bei mir festgestellt.
Das berechnen der Werte geht im vergleich zum plot gegen null.
Experementier ein bischen wann und wo du replotest.
Ich plote Kurven die neue Daten erhalten haben nur ungefähr jedes zehnte mal neu, da der User die Unterschiede bis dahin eh nicht sehen kann. Ist ein bischen wie Daumenkino.
Ich wollt mal noch schauen wie es möglich ist Systemunabhängig die Bildschirmauflösung zu bekommen.
Da ein Replot erst nötig ist wenn sich die Kurve ein Pixelweit veränder hat. Da wäre dann bei mir nur jede hunderste Ändurung ein replot notwendig wenn die Auflösung 800x600 betragen würde.
Ist aber alles von Fall zu Fall unterschiedlich und ich hab obige Werte jetzt auch nur geschätzt.
Wenn da noch jemand Tips hat wär ich auch dankbar. Kenn auch noch keine Formel wieviel Koordinatenpaare gleich ein Pixel sind.
Das berechnen der Werte geht im vergleich zum plot gegen null.
Experementier ein bischen wann und wo du replotest.
Ich plote Kurven die neue Daten erhalten haben nur ungefähr jedes zehnte mal neu, da der User die Unterschiede bis dahin eh nicht sehen kann. Ist ein bischen wie Daumenkino.
Ich wollt mal noch schauen wie es möglich ist Systemunabhängig die Bildschirmauflösung zu bekommen.
Da ein Replot erst nötig ist wenn sich die Kurve ein Pixelweit veränder hat. Da wäre dann bei mir nur jede hunderste Ändurung ein replot notwendig wenn die Auflösung 800x600 betragen würde.
Ist aber alles von Fall zu Fall unterschiedlich und ich hab obige Werte jetzt auch nur geschätzt.
Wenn da noch jemand Tips hat wär ich auch dankbar. Kenn auch noch keine Formel wieviel Koordinatenpaare gleich ein Pixel sind.