Einzelnen Beitrag anzeigen

ripper8472

Registriert seit: 17. Aug 2003
275 Beiträge
 
#11

Re: Triangulationsalgorithmus

  Alt 17. Jul 2004, 01:14
Auf den code gebe ich keine Garantie, ich hab ich nicht mal getestet.
Was dich sicher gewundert hat, war die Sache mit dem int* (^integer), der plötzlich ein array bekommt. In C/++ gibt es etwas, was man Pointer-Array-Dualität nennt. Dem Compiler ist es egal, ob es ein pointer oder ein array ist. Das glaube ich umgangen zu haben. Ne Garantie kann ich dir nicht geben. Probier einfach mal aus, ob das Richtige rauskommt.

Delphi-Quellcode:
var
  choose_idx:integer;
  permute:array[0..SEGSIZE-1];

{ Generate a random permutation of the segments 1..n }
function generate_random_ordering(n:integer):integer;
var
   tval:TTimeval;// struct timeval tval;
  tzone:TTimezone; // struct timezone tzone;
  i:integer; // register int i;
  m:integer; // int m, st[SEGSIZE], *p;
  st:array [0..SEGSIZE-1] of integer;
  p:^integer;

begin
  choose_idx := 1;
  gettimeofday(@tval, @tzone);
  srand48(tval.tv_sec);

  for i := 0 to n do
     st[i] := i;

  for i:=1 to n do begin
     m:=lrand48() mod (n + 1 - i) + 1;
    permute[i] := st[i-1+m];
    if m <> 1 then st[i-1+m] := st[i];

  end;

  result:=0;
end;
gruß, Christoph
Christoph
  Mit Zitat antworten Zitat