TChart: Dreidimensionale Diagramme?

Rund um die LCL und andere Komponenten

TChart: Dreidimensionale Diagramme?

Beitragvon Timm Thaler » 23. Aug 2018, 20:18 TChart: Dreidimensionale Diagramme?

Ich hab a) noch nicht viel mit TChart gemacht und b) finde auch gerade nichts dazu. Vielleicht suche ich auch an der falschen Stelle.

Kann man in TChart dreidimensionale Diagramme erstellen? Ich brauche quasi "Punktwolken" in X-Y-Z. Es soll eine Visualisierung dieser Art werden: https://de.wikipedia.org/wiki/Spektraltest

Aktuell lese ich die erzeugten Daten in Gnuplot ein, aber es wäre schön, die gleich im Programm darstellen zu können.

Alternativ male ich die auch selbst auf ein Image, aber ich dachte vielleicht kann TChart das ja schon.
Timm Thaler
 
Beiträge: 730
Registriert: 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded | 
CPU-Target: Raspberry Pi 3
Nach oben

Beitragvon Mathias » 23. Aug 2018, 21:56 Re: TChart: Dreidimensionale Diagramme?

Im Falle, wen du es selbst machen musst, kann ich die OpenGL empfehlen, dann musst du dich schon mal nicht um den Z-Puffer kümmern.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4342
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon wp_xyz » 23. Aug 2018, 22:02 Re: TChart: Dreidimensionale Diagramme?

Allgemeines zu TAChart: Ich kopiere nur den folgenden Link herein, in dem du zu Links zu weiteren Artikeln findest: http://wiki.lazarus.freepascal.org/TAChart

Zum Thema 3D: Nein, TAChart kann kein echtes 3D, höchstens TColorMapSeries mit entsprechend dem z-Wert colorierten Punkten, und ein pseudo-3D mit in die Tiefe extrudierten Strukturen der Standard-Plots. Ersteres läuft gut (siehe das entsprechende Tutorial im obigen Link), letzteres möchte ich eigentlich aber niemandem empfehlen und trifft auf deine Frage ohnehin nicht zu.

Ich würde an deiner Stelle bei gnuplot bleiben, aber das Programm in einem eigenen Prozess starten und damit den Plot erzeugen und in eine temporäre Datei schreiben lassen. Diese würde ich in ein TImage einlesen und so im eigenen Programm anzeigen. Siehe auch viewtopic.php?f=11&t=7139 und angehängtes lauffähiges Mini-Projekt.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von wp_xyz am 23. Aug 2018, 23:31, insgesamt 1-mal geändert.
wp_xyz
 
Beiträge: 2694
Registriert: 8. Apr 2011, 08:01

Beitragvon Mathias » 23. Aug 2018, 22:12 Re: TChart: Dreidimensionale Diagramme?

Allgemeines zu TAChart: Ich kopiere nur den folgenden Link herein, in dem du zu Links zu weiteren Artikeln findest: posting.php?mode=reply&f=18&t=11741
Etwas ist mit dem Link faul, er hat die gleiche Funktion, wie wen ich auf Antworten klicke.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4342
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon wp_xyz » 23. Aug 2018, 23:31 Re: TChart: Dreidimensionale Diagramme?

Behoben
wp_xyz
 
Beiträge: 2694
Registriert: 8. Apr 2011, 08:01

Beitragvon Mathias » 24. Aug 2018, 17:34 Re: TChart: Dreidimensionale Diagramme?

Ich würde an deiner Stelle bei gnuplot bleiben,
Ich habe das Programm gerade ausprobiert, das sieht mehr als nur nach einem Plotter aus.
Dies ist ja schon fast wie Mathematica, welches ich mal vor 20Jahren probiert hatte.

So nebenbei kann man es unter Linux sehr bequem mit
Code: Alles auswählen
suda apt-get install gnuplot
installieren.
Aber das Demo von wpx habe ich nicht zum laufen gebraucht, irgendwie Windowslastig.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4342
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon wp_xyz » 24. Aug 2018, 17:44 Re: TChart: Dreidimensionale Diagramme?

Ich habe jetzt auf die Schnelle nichts gesehen, was Windows voraussetzen würde. Hast du den Pfad zu gnuplot angepasst? (Zur Vereinfachung in GnuPlotSettings für mein System hart-kodiert, unit gpMain).
wp_xyz
 
Beiträge: 2694
Registriert: 8. Apr 2011, 08:01

Beitragvon Mathias » 24. Aug 2018, 17:51 Re: TChart: Dreidimensionale Diagramme?

Ich habe jetzt auf die Schnelle nichts gesehen, was Windows voraussetzen würde. Hast du den Pfad zu gnuplot angepasst?

Habe ich:
Code: Alles auswählen
    PathToExe: '/usr/bin/gnuplot'// path to gnuplot.exe


wird dann aber bei "Execute" mit RunError 232 quttiert.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4342
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon wp_xyz » 24. Aug 2018, 22:28 Re: TChart: Dreidimensionale Diagramme?

Mathias hat geschrieben:
Ich habe jetzt auf die Schnelle nichts gesehen, was Windows voraussetzen würde. Hast du den Pfad zu gnuplot angepasst?

Habe ich:
Code: Alles auswählen
    PathToExe: '/usr/bin/gnuplot'// path to gnuplot.exe

wird dann aber bei "Execute" mit RunError 232 quttiert.

Achso - der übliche Unix-Threads-Fehler: in der Projekt-Datei (.lpr) das {$IFDEF UseCThreads} herauslöschen oder ein Define {$DEFINE UseCThreads} setzen.
Code: Alles auswählen
uses
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}
  Interfaces, // this includes the LCL widgetset
  Forms, gpMain
  { you can add units after this };
 
wp_xyz
 
Beiträge: 2694
Registriert: 8. Apr 2011, 08:01

Beitragvon Timm Thaler » 25. Aug 2018, 13:30 Re: TChart: Dreidimensionale Diagramme?

Macht mal keinen Stress, ich male das jetzt selbst auf ein TImage, nachdem ich endlich Canvas.Pixels gefunden habe geht das auch ganz nett.

Erste Erkenntnis: LFSR sind sowas von mies...
Timm Thaler
 
Beiträge: 730
Registriert: 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded | 
CPU-Target: Raspberry Pi 3
Nach oben

Beitragvon Mathias » 25. Aug 2018, 14:18 Re: TChart: Dreidimensionale Diagramme?

Canvas.Pixels ist etwa das gemühtlichste was es an Grafikausgabe gibt.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4342
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon Timm Thaler » 25. Aug 2018, 14:59 Re: TChart: Dreidimensionale Diagramme?

Mathias hat geschrieben:Canvas.Pixels ist etwa das gemühtlichste was es an Grafikausgabe gibt.


Das ist in dem Fall egal. Der AVR liefert Zufallswerte per Uart, die dann auf Histogramm und Spektraltest untersucht werden. Da ist der Flaschenhals nicht die Grafikausgabe.
Timm Thaler
 
Beiträge: 730
Registriert: 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded | 
CPU-Target: Raspberry Pi 3
Nach oben

Beitragvon Mathias » 25. Aug 2018, 15:46 Re: TChart: Dreidimensionale Diagramme?

Der AVR liefert Zufallswerte per Uart,

Bist du gerade an einem optimierten Zufallsgenerator für den AVR entwickeln ?

Was machst du mit dem Z-Wert ?
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4342
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon wp_xyz » 25. Aug 2018, 16:06 Re: TChart: Dreidimensionale Diagramme?

Kann aber noch kommen. Bei den Zufallszahlen des randu-Generators, den du eingangs zitiert hast, sind ja die Zufallszahlen in Ebenen angeorndet. Nur sieht man diese bei einem beliebigen Betrachtungswinkel nicht. Daher erscheint es mir wichtig, dann man den Blickpunkt auf die Punktwolke interaktiv verändern kann. Und da geht dem LCL-Canvas mit Pixels[] schnell die Luft aus (meine statische gnuplot-Anwendung versagt da natürlich völlig), während das für OpenGL kein Problem darstellt.

Im Anhang findest du ein kleines OpenGL-Programm, das jeweils drei randu-Zufallszahlen als Pixel in den OpenGL-3D-Raum zeichnet. Das wird für 10.000 Zufallspunkte gemacht. Mit Hilfe einer Camara-Routine, die Mathias hier einmal gepostet hat, kann man mit der rechten Maustaste das Bild rotieren (mit der linken verschieben und mit dem Mausrad zoomen). Anfänglich sieht man nur eine beliebige Punktwolke, aber wenn man die Maus mit gedrückter rechtet Taste ein bisschen nach unten verschiebt, wird die Schichtung der Werte sehr deutlich.

Programmiertechnisch passiert die Datenerzeugung - also der Teil, der dich direkt betrifft - in dieser kleinen Routine (im OnPaint-Ereignis des TOpenGLControl)
Code: Alles auswählen
  for i := 0 to N do begin
    x := randu;   // Zufallszahl mit der "randu"-Funktion erzeugen (http://physics.ucsc.edu/~peter/115/randu.pdf)
    y := randu;
    z := randu;
    glBegin(GL_POINTS);
       glColor3f(1,1,1);     // Farbe R=1.0, G=1.0, B=1.0 --> weiß
       glVertex3f(x, y, z)// "PutPixel" sozusagen
    glEnd();
  end;
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
wp_xyz
 
Beiträge: 2694
Registriert: 8. Apr 2011, 08:01

Beitragvon Mathias » 25. Aug 2018, 16:39 Re: TChart: Dreidimensionale Diagramme?

Warnung, das Beispiel von wp_xyz läuft nicht mit Lazarus 1.9 und Linux.
Dank dieses Bugs hier: viewtopic.php?f=18&t=11714&p=104914&hilit=opengl#p104914

Im Anhang findest du ein kleines OpenGL-Programm, das jeweils drei randu-Zufallszahlen als Pixel in den OpenGL-3D-Raum zeichnet. Das wird für 10.000 Zufallspunkte gemacht.
Bei so vielen Punkten würde ich die ganzen Daten direkt in ein Vertexbuffer schreiben, anstelle bei jedem Paint jeden Pixel neu laden.

Programmiertechnisch passiert die Datenerzeugung - also der Teil, der dich direkt betrifft

Der Random ist etwas komisch, siehe Anhang.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4342
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

» Weitere Beiträge siehe nächste Seite »
Nächste

Zurück zu Komponenten und Packages



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste

porpoises-institution
accuracy-worried