{zeichnet das entstehende Interferenzbild}
procedure Tdspaltform.draw_interferenz(particle_num: integer);
var wx, px, fwert: real;
    i, x, z, ry: integer;
    rot, gruen, blau :byte;   //Farbwerte

 begin
     for i:=1 to particle_num do
     begin
      Application.ProcessMessages; delay(verzoegerung.Position);  {<Verzögerung, um ein "live" entstandenes Interferenzbild zu simulieren}
       z  := (Random(1439)+1);                                    // z ist irgendeine ganze Zahl zwischen 1 und 1440 für die zufällige Wahl eines Psi-Quadrat-Wertes
       px := psisq_y[z];                                          // Zuweisung des psi-Quadrat-Wertes für späteren Vergeleich
       wx := (Random(10001))/10000;                              
       ry := Random(169)+1;  {zufälliger y-Wert}

       if (wx > px) then draw_interferenz(1)
        else begin
            x := z div 2;
            fwert := 255 / ln(particle_num+1);  
            {showmessage(floattostr(fwert));}
            rot := round(fwert);     //roter Anteil
            gruen := round(fwert);   //grüner Anteil
            blau := 0;               //blauer Anteil
            with interferenz.Picture.Bitmap.Canvas do
                   begin
                       Brush.Color := RGBToColor(rot, gruen, blau);
                       FillRect(x,ry, x+1, ry+1);
                   end;
                   bild[x,ry] := bild[x,ry] +1; //speichert, wie oft auf einem Bildpunkt schon eine Photon fiel
              end;
       if breakop = true then exit;    //bricht die Funktion ab, wenn erwünscht
       if ((i mod 10) = 0) then
       fortschrittsbalken.position := particle_num-i;


     end;
     if (breakop = true) then breakop := false;    //setzt den Merker zurück, sodass das Programm wieder laeuft
 end;
