Ergebnis 1 bis 13 von 13

Thema: Dev-Comm braucht EUCH! - Most wanted articles!

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #13
    Ah, hab's schon rausbekommen!

    Ich hab mein Fenster ja in H-große Felder eingeteilt. In der Rechnung geht er aber immer statt H nur um 1, also einen POixel in die gewünschte Richtung...
    Maln Beispiel:
    Ich hab meinen Bildschirm in 5x5 große Kacheln geteilt. Also H=5.
    Da ich aber immernoch auf Pixelebene arbeite, muss ich statt
    Code:
    Dichte(i+1,j)
    einfach
    Code:
    Dichte(i+H,j)
    schreiben, damit ich nicht einen, sonder H*Pixel (Also 5 Pixel) weiterspringe! >_>
    Einfach ein kleiner Denkfehler.
    Trotzdem danke!

    Edit: Achja, die Schleife, einfach mal zum anschauen.
    Code:
    a=20*Nx*Ny*0.1 'Für einen Zeitschritt von 0.1
    For i = H to Nx-H Step H
            For j = H to Ny-H Step H
                
                'Diffusion
                If Maustaste=1 And i-MausX<H And      
                i-MausX>-H And j-MausY<H And 
                j-MausY>-H  Then
                    Dichte(i, j)=1
                Endif
                '1. Möglichkeit
                'Dichte2(i, j)=((Dichte(i, j)+a*(Dichte(i-H, j)+Dichte(i+H, j)+_
                'Dichte(i, j-H)+Dichte(i, j+H)-4*Dichte(i, j)))/(1+4*a))
                '2. Möglichkeit
                'Dichte2(i, j)=Dichte(i, j)+Kappa*(Dichte(i-H, j)+Dichte(i+H, j)+_
                'Dichte(i, j-H)+Dichte(i, j+H)-4*Dichte(i, j))/H^2
            Next
        Next
    Ja, ich hab im Internet 2 Lösungen gefunden, wobei ich die zweite benutze, weil die erste irgendwie nicht ganz funzt. Hab erstmal auch keine Lust das zu ändern, denn es geht ja auch so
    Achja, Kappa ist einfach ein beliebiger Faktor. Je größer desto schneller die Diffusion. Bei mir gibts ab 7 Fehler, aber auch ohne den sieht's gut aus.


    Edit^2: Zack! Schon das nächste Problem, was ich nicht lösen konnte.

    Die Bewegung der Dichte nach dem Vektorfeld.
    Aber erstmal noch ein Link zu einer Pdf, die Jos Stam, der Entwickler dieser Vorgehensweise etc., selbstgeschrieben hat 3. Link
    Dort auf Seitte 7/8 ist ein Code. Ich hab den mMn richtig umgesetzt, aber irgendwas muss wohl schiefgelaufen sein:
    Code:
    Dim As Single x, y, s0, s1, t0, t1, dt0
    Dim As Integer i0, j0, i1, j1
    
    For i = H to Nx-H Step H
            For j = H to Ny-H Step H
                dt0=Nx*Ny
                x=i-dt0*Vx(i, j)
                y=j-dt0*Vy(i, j)
                If x<H/2 Then x=H/2
                If x>Nx+H/2 Then x=Nx+H/2
                If y<H/2 Then x=0.5
                If y>Ny+H/2 Then y=Ny+H/2
                i0=x
                i1=i0+H
                
                j0=y
                j1=j0+H
                
                s1=x-i0 
                s0=H-s1
                t1=y-j0 
                t0=H-t1
                Dichte3(i, j)=s0*(t0*Dichte2(i0, j0)+t1*Dichte2(i0, j1))+_
                                  s1*(t0*Dichte2(i1, j0)+t1*Dichte2(i1, j1))
            Next
        Next
    Ich hab diesmal statt 1 H und statt 0.5 H/2 eingesetzt. Natürlich hab ichs schon andersrum probiert, aber immer mit dem gleichen Ergebnis. Das Program stürzt ab: :/
    Hoffe, jemand kann mir helfen. Bye!

    Edit: Konnte einen kleinen Fortschritt machen, hab die Sachen oben korrigiert. Geht zwar kurz, stürzt dann jedoch ab...

    Geändert von Teflo (26.06.2008 um 16:13 Uhr)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •