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?

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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...