Grafik erstellen in Konsolenanwendung


  • Mod

    Blodøks schrieb:

    Hö? Wie Format rausschreiben? Meine Frage ist ja, ob es möglich ist in einer Konsolenanwendung bspw. eine bmp zu speichern, für welche ich die Farbwerte vorher Pixel für Pixel berechnet habe.

    Falls du darauf geantwortet hast, habe ich die Antwort leider nicht deuten können. 🙂

    wie deutlich muss mein "JA" denn ausfallen, damit du das deuten kannst, oder seh ich das problem von dir nur nicht?
    du weißt doch wie man dateien schreibt, oder etwa nicht?



  • Moin,

    mich hat der Rest (außer dem "klar") halt ein wenig irritiert und kann das damit immernoch nicht in Verbindung setzen. Ich bin halt nicht sehr erfahren, was das Programmieren anbelangt und will ein Programm zum berechnen eines Fraktals schreiben. Das ist an sich ja kein Problem, nur habe ich keine Ahnung von allem, was die Ausgabe von Text übersteigt und habe das bisher auch nicht gebraucht, weil Programme, welche ich bisher geschrieben habe, nur zur Berechnung gedacht waren. Beim Fraktal ist nur das Problem, dass man sich das Ganze anhand von Zahlen zwar vorstellen kann, aber ein Bild dann doch aussagekräftiger ist. War wahrscheinlich wirklich ein "wenig" ungenau, was ich bisher geschrieben hatte. 🙂

    Ich hatte also gehofft, dass es dafür bereits eine Funktion in einem "Standardheader" gibt oder dass das Ganze sogar mit fstream möglich sei und das sollte es ja eigentlich, wie ich mir den ersten Link von Vertexwahn so anschaue.

    Auf GDI+ war ich bei meiner Googlesuche, welche keinen großen Erfolg brachte, auch gestoßen, aber erstmal hätte ich gar nicht gedacht, dass das bei einer Konsolenanwendung klappen würde und der Download auf der MS-Seite hat auch nicht funktioniert.

    Danke jedenfalls für die Hilfe, obwohl mein Post ja recht ungenau war, ich werde mich jetzt mal mit Vertexwahns Links beschäftigen. 🙂


  • Mod

    Blodøks schrieb:

    dass das Ganze sogar mit fstream möglich sei und das sollte es ja eigentlich, wie ich mir den ersten Link von Vertexwahn so anschaue.

    hab ich doch gesagt. datei öffnen und das gewünschte format rausschreiben. eine formatbeschriebung für dein gewünschtes format dürfte auch relativ leicht zu ergooglen sein. TGA wäre zB eines der einfachsten. je nach graphikprogramm mit dem du das öffnen möchtest wäre sogar RAW möglich.



  • Ach so war das gemeint. Ich nehme an, dass das für dich selbstverständlich war, aber ich hab vorher scheinbar einfach nach den falschen Sachen bei google gesucht und war deswegen auch irgendwie auch nicht so offen für die Idee einfach nach der Dateistruktur zu suchen. 🙂

    Erstellen der bmp mit Hilfe von fstream habe ich jetzt jedenfalls hinbekommen und werd mich dann die Tage dran setzen mein Fraktalprogramm zu schreiben.

    Danke an alle für die Hilfe! 🙂


  • Mod

    Blodøks schrieb:

    Erstellen der bmp mit Hilfe von fstream habe ich jetzt jedenfalls hinbekommen und werd mich dann die Tage dran setzen mein Fraktalprogramm zu schreiben.

    👍

    ich hoffe wir bekommen was zu sehen 😉



  • das BMP Foramt hat ein paar gemeinheiten - die beste Abhandlung über das Format hab ich bisher im Petzold gefunden - aber in der MsDN müsste auch einiges stehen...



  • Nabend,

    also bisher sieht die Ausgabe so aus: http://bbr.clanintern.de/roflol/Mathe//mandelbmenge.jpg
    Aber das mit den Gemeinheiten ist mir irgendwie auch schon aufgefallen. Machmal ist das Bild einfach schief und manchmal wurden die Werte den falschen Farben zugeordnet und ne Farbpalette muss ich glaub ich auch noch einfügen. So kann man ja nicht soo viel erkennen.



  • Blodøks schrieb:

    Machmal ist das Bild einfach schief und manchmal wurden die Werte den falschen Farben zugeordnet und ne Farbpalette muss ich glaub ich auch noch einfügen.

    Immer dann, wenn sich die Bildbreite nicht ohne Rest durch 4 teilen lässt?
    Farbpalette brauchst du eigentlich nicht.



  • TeeGehGehZeh schrieb:

    Immer dann, wenn sich die Bildbreite nicht ohne Rest durch 4 teilen lässt?

    Ja, dann auch, aber ich lasse auch nur Werte von n*16 zu. Das muss irgendwas mit der Funktion zu tun gehabt haben, welche ich zur Berechnung der Farbe benutzt habe. Die habe ich jetzt zwar mit nen paar if Abfragen ausgetauscht, aber die funktionieren irgendwie auch nicht so, wie ich das will:

    for(int iy=0;iy<y;iy++)
    	{
    		for(int ix=0;ix<x;ix++)
    		{
    			complex t(minx+ix*dx,miny+iy*dy);
    			complex p(minx+ix*dx,miny+iy*dy);
    
    			bool exit=false;
    
    			for(i=0;!exit;i++)
    			{
    				if(i==maxi&&t.betr()<2)
    				{
    					setpixel(0,0,0);
    					exit=true;
    				}
    				if(t.betr()>=2)
    				{
    					if(i==0)
    						setpixel(0,0,0);
    					else if(i<255)
    						setpixel(255-i,255-i/2,0);
    					else
    						setpixel(255,255,255);
    					exit=true;
    				}
    
    				t=t*t+p;
    			}
    		}
    	}
    

    Bei x=1024, y=1024, maxi=500, minx=-2, maxx=2, miny=-2 & maxy=2 führt das Ganze zu diesem Ergebnis: http://mathe-jl.de.vu/bunt.jpg
    Das seltsame ist ja, dass ich nur einen Wert für rot habe, wenn i>=255 und der Betrag von t>=2 ist und selbst dann, sollte die dargestellte Farbe eigentlich weiß sein. Außerdem sind die Farben an sich nur bedingt abhängig von den Koordinaten und trotzdem gibt es diese seltsamen Querstreifen. Kurz: wtf?

    Jetzt zur Farbpalette:
    Als ich noch setpixel((255*i)/maxi,(255*i)/maxi,(255*i)/maxi); benutzte, funktionierte alles wunderbar, aber der Farbverlauf war nicht so gut zu erkennen.
    Zum Beipiel mal der selbe Bereich einmal mit meinem Programm berechnet:
    http://mathe-jl.de.vu/mandelmeins.jpg
    Und einmal mit Winfunktion:
    http://mathe-jl.de.vu/mandelwinfkt.jpg

    Der Grund warum ich nicht einfach Winfunktion benutze ist, dass man dort nur vorgegebene Fraktale zeichnen lassen kann und ich will eigentlich ein bischen an der Funktion rumfuschen.

    edit
    Ich vergaß eine Klammer..



  • Okay, ich bin jetzt auf den EasyBMP Header umgestiegen und damit läuft alles Reibungslos. Nur mein Header für die Komplexen Zahlen mag jetzt nicht mehr, aber den kann ich ja anpassen.


Anmelden zum Antworten