Rechenproblem für Farben von Partikeln [gelöst]

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
csiegel
Beiträge: 6
Registriert: Mo 21. Jan 2013, 11:21

Rechenproblem für Farben von Partikeln [gelöst]

Beitrag von csiegel »

Guten Tag liebe Freunde,

Ich habe mal wieder eine Frage und verstehe nicht mal, wie sie überhaupt existieren kann. Ich habe ein Programm mit Lazarus gebastelt, das eigentlich ziemlich fertig ist. Es hakt nur an einer Optimierung und dabei an der Rechnerei. Ich habe schon herumgespielt, bin aber nicht zu einer Lösung gelangt. Folgendes Problem hat sich ergeben:

Code: Alles auswählen

 
            fwert := 255 / ln(particle_num+1); 
            rot := round(fwert);       
            gruen := round(fwert);  
            blau := 0;                     
 
Der balue Farbwert soll so sein, wollte einen Gelbton^^ So, das Problem liegt nun in der ersten Zeile, denn wenn ich die Funktion, in der sie drinsteckt, laufen lasse, so bekomme ich für den gleichen Wert ("particle_num" bekomme ich von einem Schieberegler. Diese Zahl ändert sich nicht.) merkwürdigerweise unterschiedliche Ausgaben. (Habe ihn mit "ShowMessage" ausgeben lassen) Allerdings nur, wenn ich ihn in eine Variable gebe. Frage ich die Rechnung direkt mit ShowMessage ab, so erhalte ich das korrekte Ergebnis. Vermutlich habe ich irgendwas übersehen, eine Kleinigkeit vielleicht, das passiert mir ständig -_-

Vielen Dank schonmal für die Hilfe.

csiegel
Dateianhänge
doppelspaltsim.rar
Achtung, habe vllt. etwas unsauber geschrieben und "ShowMessage" steht noch an einer nervigen Stelle^^ Wenn das Problem allerdings gelöst ist, wird es entfernt.
(4.46 MiB) 91-mal heruntergeladen
Zuletzt geändert von csiegel am So 27. Jan 2013, 01:02, insgesamt 1-mal geändert.

Benutzeravatar
theo
Beiträge: 10872
Registriert: Mo 11. Sep 2006, 19:01

Re: Rechenproblem für Farben von Partikeln

Beitrag von theo »

Wenn du Hilfe möchtst, dann musst du das Problem isolieren.
Glaube kaum, dass jemand Lust hat, sich durch deinen ganzen Code zu kämpfen.

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Rechenproblem für Farben von Partikeln

Beitrag von Michl »

Habe mal das Prog laufen lassen, weiss zwar nicht was Du genau bezweckst, bekomme allerdings immer den identischen Wert für particle_num. Kann keine Unstimmigkeiten feststellen. Müsstest evtl. Deine Frage nochmals anders formulieren.

Setz Dir doch einen Breakpoint an die Stelle, wo es Unstimmigkeiten gibt und frage mal dirket die Werte dort ab, dann weißt Du woher das Problem kommt.

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

csiegel
Beiträge: 6
Registriert: Mo 21. Jan 2013, 11:21

Re: Rechenproblem für Farben von Partikeln

Beitrag von csiegel »

theo hat geschrieben:Wenn du Hilfe möchtst, dann musst du das Problem isolieren.
Glaube kaum, dass jemand Lust hat, sich durch deinen ganzen Code zu kämpfen.
ähh, ok, wollte erst die ganze Prozedur hier reinschreiben, habe mich aber dann für den kleinen Fetzen entschieden, dachte, das wäre zu viel. Aber Danke für den Tipp theo :-)
Michl hat geschrieben:Habe mal das Prog laufen lassen, weiss zwar nicht was Du genau bezweckst, bekomme allerdings immer den identischen Wert für particle_num.
Für particle_num ja, habe mich vielleicht missverständlich ausgedrückt. Aber danke erstmal für die Idee mit dem Breakpoint.

Also, die Idee kam von einem Freund. Das Programm ist ein Simulator für das Doppelspaltexperiment, bei dem die Wellennatur des Lichtes gezeigt wird. Nun besteht das Licht aber bekannterweise auch aus Teilchen. Der Simulator verteilt nun mit Wahrscheinlichkeiten, das heißt per Zufall, die Photonen, deren Szintillation oder Auftreffen auf einer Photoplatte hier durch gelbe Pixel dargestellt wird. Ein Freund meinte nun, dass es doch cool wäre, einen Gradienten darzustellen. Gemacht getan, der war aber nicht dynamisch, das heißt, an die Anzahl der zu simulierenden Partikel angepasst. Ich habe also überlegt, wie ich das umsetze, und obwohl er eine Idee hatte, die er mir aufschrieb, war ich mit seiner Methode nicht zufrieden und sie hat außerdem nicht funktioniert und ich habe sie nicht verstanden - und er kann weiß Gott sehr schlecht erklären. Meine Idee war nun also, die Sache logarithmisch anzugehen und dann die Farbe zu basteln, das heißt wie in meinem ersten Beitrag fwert = 255 (Farbhöchstwert) / ln(Anzahl der Partikel +1) // +1 deshalb, weil es sich so schlecht durch 0 teilt^^ Wenn nun mehrere Partikel auf einen Bildpunkt treffen soll sich der Farbwert erhöhen... Soweit zu dem, was ich machen will. Ich gebe mal als Anhang nur die Prozedur, die die Pixel malt.

Danke nochmal für die Ratschläge.
csiegel
Dateianhänge
draw_interferenz.pas
Der Code ist nicht ausführbar, hab ihn nur als .pas gespeichert, weil ja manche Editoren automatisch Syntax erkennen können^^
(1.79 KiB) 78-mal heruntergeladen

Benutzeravatar
theo
Beiträge: 10872
Registriert: Mo 11. Sep 2006, 19:01

Re: Rechenproblem für Farben von Partikeln

Beitrag von theo »

csiegel hat geschrieben: ähh, ok, wollte erst die ganze Prozedur hier reinschreiben, habe mich aber dann für den kleinen Fetzen entschieden, dachte, das wäre zu viel. Aber Danke für den Tipp theo :-)
Mit "Problem isolieren" meine ich nicht, einen Code -Fetzen rauskopieren, sondern das Problem in einer separaten Anwendung nachzustellen.
Wenn es dann nicht von selber klar wird, dann lade diese Anwendung hier hoch beschreibe was du von dem Code genau erwartest und was du antriffst.

Du schreibst zwar viel Text, aber dein Problem beschreibst du nicht. Du hast "unterschiedliche Ausgaben"?
Wie was wo?

csiegel
Beiträge: 6
Registriert: Mo 21. Jan 2013, 11:21

Re: Rechenproblem für Farben von Partikeln

Beitrag von csiegel »

Gut, verzeih mir. Der große Text sollte nur beschreiben, was mein Gesamtplan war.
Verzeih mir die Ungenauigkeit. Habe einen Ansatzpunkt soeben gefunden... Und zwar als ich aufschreiben wollte, welche Werte ich zurückgegeben kriege bei der Funktion mit ln(particle_num) | sei particle_num = 25'000 ... es waren der richtige Wert 10.1 und ein falscher, 0.69, welcher für ln(2) ein Ergebnis ist. Eine Erklärung ist die Struktur meiner Funktion, bei einer if-Verzweigung auf die Funktion mit nur einem Partikel zu verweisen... und ln(1+1) = ln(2)^^ In dem einen Codefetzen ist das sogar ersichtlich und ich Trottel sehe das nicht. Die Belästigung tut mir Leid. Danke theo.

csiegel

Benutzeravatar
theo
Beiträge: 10872
Registriert: Mo 11. Sep 2006, 19:01

Re: Rechenproblem für Farben von Partikeln

Beitrag von theo »

csiegel hat geschrieben:Die Belästigung tut mir Leid. Danke theo.
Entschuldigen brauchst du dich nun wirklich nicht. :lol:
Ich meinte nur, wenn du wirklich Hilfe suchst, dann mache es den potentiellen Helfern möglichst einfach einzusteigen.
Schön wenn es jetzt klappt.

Antworten