Bilderprinttool schreiben, aber wie?



  • Hi,

    ich bin neu im Forum und will erstmal Hallo World sagen :).

    Meine Programmierkenntnisse sind als Anfänger einzustufen darum seht mir bitte nach wenn ich so manche, für euch, dumme Frage stelle.

    Mein Tool soll folgendes können.

    Ich habe Messdaten, ( wie die ins Tool reinkommen ist uninteresant, für den Anfang kann ich die in den Code reinschreiben) welche über den pngwriter in einem Bild bestimmter Größe (600X1000) durch Kurven gezeichnet werden sollen.

    Auf dem Bild sollen zu sehen sein:
    -Achsenkreuz mit ganzzahliger Teilung, Zahlen , und Teilungstriche
    -Meßpunkte
    -Kurven durch die Meßpunkte

    Meine Vermutung:

    Da die Meßdaten ja in "WeltKoordinaten" gegeben sind und mit Sicherheit nicht auf die Pixelanzahlen des Bildes übertragbar sind muss ich erstmal rausfinden welche sind meine Grenzen nach oben und nach unten (Werte mit maximalen und minimalen x und y Koordinaten) und diese dann zur Herstellung der Achsen bzw. der Skalierung nutzen.
    Hiermit habe ich mir ja ein zweites Koordiantensystem(BlattKoordinaten) erstellt und muss die ursprünglichen Messdaten in dieses transformieren um pngwriter sagen zu können wo er Punkte setzen und Linien ziehen soll.

    Wie würdet ihr das umsetzen.

    Danke



  • Totalausfall schrieb:

    Wie würdet ihr das umsetzen.

    So wie du gesagt hast. Die "Weltkoordinaten" ind "Blattkoordinaten" (bzw. Pixelkoordinaten) umrechnen und and deinen pngwriter (ich nehme an irgendein framework) übergeben...



  • Meine Frage bezieht sich eher auf die Detaillösung.
    d.h. wie finde ich kann ich die Meßwerte eingrenzen und die Koordinatentransformation machen? Kennt jemand Funktionen die einem das abnehmen und kann mir vllt ein Beispiel geben, wie gesagt, ich bin ein Anfänger.

    Hat jemand vllt Erfahrung mit pngwriter?



  • Naja, die Koordinatentransformationen dürften simple Additionen und Multiplikationen sein. Vielleicht solltest du damit anfangen: ein Programm, das die Messwerte irgendwie einliest (meinetwegen auch erstmal fest eincodiert) und dann die richtigen Pixelkoordinaten ermittelt und auf der Konsole ausgibt. Das Ansteuern des pngwriters kannst du danach als zweiten Schritt vornehmen.
    Fertigen Code wird dir hier niemand vorsetzen, schließlich willst du ja selber was lernen und solltest etwas Eigeninitiative zeigen (in Form von Code, den du zum problem schon geschrieben hast).



  • Bist du auf C++ festgenagelt? Ich würde es mit JFreeChart machen
    http://www.jfree.org/jfreechart/samples.html

    Da muss man sich um Pixelschiebereien nicht kümmern.

    Ist aber wie gesagt Java. In C sollte es auch Libs geben. Zur Not nimmst du Gnuplot und rufst es als Prozess auf.



  • Ich bin auf C++ festgenagelt.

    Ich denke nicht das es bezüglich der Kotrafo mit einer Addition oder Multiplikation getan ist. Die Meßdaten sind immer in unterschiedlichen Bereichen (x und y Achse getrennt). Ich denke nicht dass es da mit hoch oder runter skalieren getan ist. Außerdem ist mir nicht ganz klar wie ich den Achsen die für den akuten Fall benötigte Skalierung beibringen soll.



  • Hi,

    also ich bin nicht so recht überzeugt davon, dass sich das Schreiben eines solchen Tools "lohnt". Da gibt es bereits eine Menge schöner "Tools&Toys", die das hervorragend können...

    Gruß,

    Simon2.



  • Ich will es aber schreiben :).

    Ich habe ne konkrete Frage zur Messwertdeklaration.

    int i;
    
    double x[i] = {12,9,13,11,8,10};              //9
     double y[i] = {7,8,6,2,3,1};                 //10
    

    Compiler schreit
    Error E2313 Messdatenplot.cpp 9: Constant expression required
    Error E2225 Messdatenplot.cpp 9: Too many initializers
    Error E2313 Messdatenplot.cpp 10: Constant expression required
    Error E2225 Messdatenplot.cpp 10: Too many initializers

    was fehlt hier noch. Habe im Netz und in den Büchern nix gescheites gefunden.



  • Arraylängen dürfen nicht mit Variablen angegeben werden, sondern müssen Compilezeit-Konstanten sein. Das ist bei i nicht der Fall.



  • und ... in einem Array vom Typ double kannst Du ein Element auch nur mit einem Wert initialisieren.

    Für mich sieht es so aus, als solltest Du Dich zunächst mal auf (viel) kleinere Aufgaben stürzen, um mit der Sprache ein wenig warm zu werden.



  • Belli schrieb:

    und ... in einem Array vom Typ double kannst Du ein Element auch nur mit einem Wert initialisieren.

    Macht er doch. Erinitialisiert die ersten 6 Werte vom x-Array mit Werten, und die ersten 6 Werte vom y-Array.



  • Ähhh ... jaaahaaa ... ich habe irgendwie übersehen, daß das Array an der Stelle ja erst angelegt wird ...


Anmelden zum Antworten