Einzelnen Beitrag anzeigen

tommie-lie
(Gast)

n/a Beiträge
 
#2

Re: "weiche übergänge" in arrays

  Alt 13. Mai 2004, 22:02
Du gehst jetzt vermutlich mit 'ner Schleife jedes Element durch und weist ihm den Random-Wert zu.
Jetzt merkst du dir den Wert aus dem letzten Element und sorgst dafür, daß die Differenz nicht größer als 5 ist. Ist z.B. der vorherige Wert 200 erzeugst du einen Random-Wert zwischen 0 und 10 und addierst anschließend 195 drauf, schon hast du einen Wert der maximal um 5 vom benachbarten abweicht.
Um alle 8 Nachbarn eines Elementes zu berücksichtigen würde ich zunächst alle Elemente auf -1 initialisieren *) und anschließend den Mittelwert aus allen Nachbarn nehmen, den ich dann als Basis für den aktuellen nehme.
Pseudocode:
Code:
const
  Differenz = 5;

for i := 0 to Length(arr) do
  for j := 0 to Length(arr[i]) do
  begin
    arr[i,j] := Random(2*Differenz + 1) + (GetAverageFromNeighbours(i,j) - Differenz);
  end;

*) Edit: Auf -1 initialisieren, damit GerAverageFromNeighbours weiß, welche Nachbarn es berücksichtigen soll, sonst ziehen die ganzen Nullen aus den noch nicht bearbeiteten Werte den ganzen Durchschnitt runter.
  Mit Zitat antworten Zitat