Qwt Plot: Kreise zeichnen

Dein Thema passt einfach in kein Forum? Dann probiers mal hier.
Antworten
mollitz
Beiträge: 81
Registriert: 5. April 2007 10:55

Qwt Plot: Kreise zeichnen

Beitrag von mollitz »

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
erpheus
Beiträge: 46
Registriert: 18. November 2008 11:55
Wohnort: Stuttgart

Beitrag von erpheus »

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.
mollitz
Beiträge: 81
Registriert: 5. April 2007 10:55

Beitrag von mollitz »

Hi,

Okay das klingt gut, Probier ich mal. Wird das arg langsam sein, die Werte immer komplett neu zu berechnen? Angestrebt ist eigentlich die Veränderung der Radien der Kreise in Echtzeit.

Gruß Moritz
erpheus
Beiträge: 46
Registriert: 18. November 2008 11:55
Wohnort: Stuttgart

Beitrag von erpheus »

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.
mollitz
Beiträge: 81
Registriert: 5. April 2007 10:55

Beitrag von mollitz »

Stimmt. Hab das mal implementiert.. Funktioniert super schnell.

Danke!
Antworten