Zum Inhalt springen

Realisierung: Grafisches Histogramm ?


Empfohlene Beiträge

Geschrieben

Also, ich habe einen Vektor mit n ganzzahligen Elementen vom Typ int, das sind schon die Anzahl der Einträge pro Histogrammspalte.

Ich möchte daraus ein Histogramm erstellen. Jetzt kommen die Probleme:

a.) Unter WindowsXP ohne Visual C++, nur mit reinem C++.

b.) OpenGL macht zicken weil ich die Funktion

void display(void)

für jeden Schleifendurchlauf neu schreiben sollte, ich kann hier halt keine Werte übergeben, kann man das irgendwie umgehen?

Oder habt ihr ne Idee wie man das anders realisieren könnte?

Am Ende soll ein Histogramm dieser Art dabei herauskommen:

http://www.astrum.ch/uni/statistik/images/histogramm.jpg (Das hat nichts mit meinem Programm zu tun!!)

Ich verwende die glut-openGL-Bibliothek und den Borland Compiler.

Geschrieben
a.) Unter WindowsXP ohne Visual C++, nur mit reinem C++.
Visual C++ ist eine Entwicklungsumgebung, C++ eine Sprache. Das kannst du so gar nicht gegenüberstellen. Was heißt hier "rein"? Nur Standard-C++? OpenGL steht nicht im Standard.

b.) OpenGL macht zicken
Geht's etwas genauer als "macht zicken"?

weil ich die Funktion

void display(void)

für jeden Schleifendurchlauf neu schreiben sollte, ich kann hier halt keine Werte übergeben, kann man das irgendwie umgehen?

Warum willst du das überhaupt tun? Willst du dein Diagramm animieren?
Geschrieben
Visual C++ ist eine Entwicklungsumgebung, C++ eine Sprache. Das kannst du so gar nicht gegenüberstellen. Was heißt hier "rein"? Nur Standard-C++? OpenGL steht nicht im Standard.

Geht's etwas genauer als "macht zicken"?

Warum willst du das überhaupt tun? Willst du dein Diagramm animieren?

Danke, Kritik ist zur Kenntnis genommen. Mit VC++ is es wesentlich einfacher eine Grafische Oberfläche zu erstellen weil die Bibliotheken schon mitgeliefert sind. Ja ich muss mich deutlicher ausdrücken: Ich schreib das in C++. basta.

Okay also: Ganz prinzipiell lese ich unmengen an Daten aus, fortlaufend ohne das Programm zu unterbrechen. (D.h. die Daten die ich auslese werden in Dateien geschrieben die mein Programm auswertet). Diese Daten werden verarbeitet.

Am Schluss des Prozesses möchte ich einen Datenpunkt pro verarbeiteter Datei in ein Histogramm gemalt haben.

Nun die verarbeitung und das Berechnen eines Histogramms funktioniert wunderbar.

Allerdings geht es mir um die Darstellung auf dem Bildschirm. Dazu öffne ich ein neues Fenster und stelle das Histogramm mit Open GL dar.

Wenn ich nun aber einen neuen Datenpunkt habe heisst das ich muss den GL-code der für die Darstellung ist komplett neu formulieren...Das geht aber nicht so ohne weiteres, weil a.) mein Programm noch läuft und b.)ich dieser ,,display"-Funktion keine Werte übergeben kann.

Im folgenden die Funktion die ich modifizieren will:

void display(void)

{

glClear(GL_COLOR_BUFFER_BIT); //color

glColor3f(1.0, 1.0, 1.0); // RGB, percent

glEnable(GL_LINES);

glEnable(GL_POLYGON);

glLineWidth(1.0);

//--arrows @ axes--

glBegin(GL_POLYGON);

glVertex2f(16.0, 285.0);

glVertex2f(24.0, 285.0);

glVertex2f(20.0, 295.0);

glEnd();

glBegin(GL_POLYGON);

glVertex2f(385.0, 24.0);

glVertex2f(385.0, 16.0);

glVertex2f(395.0, 20.0);

glEnd();

//--Border of Histogram--

glBegin(GL_LINES);

glVertex2f(20.0, 20.0);

glVertex2f(390.0, 20.0);

glVertex2f(20.0, 20.0);

glVertex2f(20.0, 290.0);

//--Histogram Data--

...

}

glEnd();

Die Funktion wird im Hauptprogramm mit glutDisplayFunc(display); aufgerufen.

Im Grunde genommen ist es eine Animation. Ich möchte jeden neu hinzugekommenen Datenpunkt in mein Histogramm einzeichnen.

Und das alles während das Programm noch läuft.

Ist mein Problem jetzt etwas klarer geworden?

Geschrieben
Die Funktion wird im Hauptprogramm mit glutDisplayFunc(display); aufgerufen.
Nein, damit setzt du nur den Funktionszeiger für die Displayfunktion. Ein Aufruf ist das nicht.

Ist mein Problem jetzt etwas klarer geworden?
Nein. Warum packst du deine Histogrammdaten nicht einfach in eine globale Variable - oder einen Singleton, falls du keine globalen Variablen benutzen möchtest?

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...