AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Triangulationsalgorithmus
Thema durchsuchen
Ansicht
Themen-Optionen

Triangulationsalgorithmus

Ein Thema von Skript · begonnen am 11. Jul 2004 · letzter Beitrag vom 17. Jul 2004
Antwort Antwort
Seite 2 von 2     12   
ripper8472

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

Re: Triangulationsalgorithmus

  Alt 17. Jul 2004, 02: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
Skript

Registriert seit: 11. Jan 2004
20 Beiträge
 
#12

Re: Triangulationsalgorithmus

  Alt 17. Jul 2004, 10:24
Danke schön ! Also du hast es umgangen, indem du den "p" gar nicht verwendest? Ohjeh, ich weiss schon, wieso ich kein C++ programmiere; wieso einfach wenn's kompliziert geht Bevor ich es testen kann muss ich noch den Rest der Unit übersetzen, dann bin ich mal gespannt
  Mit Zitat antworten Zitat
Skript

Registriert seit: 11. Jan 2004
20 Beiträge
 
#13

Re: Triangulationsalgorithmus

  Alt 17. Jul 2004, 17:10
Uhohjeh, noch eine C++ Frage: Bei folgendem Ausdruck wird bei der logischen Prüfung der Variable "tnext" ein Wert übergeben (tnext = ...), welcher später im Code wieder verwendet wird. Da ich diese Zuweisung im Delphi ja vorher und nicht gleichzeitig machen muss, interessier mich jetzt, welchen Wert die Variable "tnext" am Ende dieser C++ Zuweisung trägt? Gilt da tnext = tr[t].d0 oder tnext = tr[t].d1 ?

Code:
cond = ((((tnext = tr[t].d0) > 0) && (tr[tnext].rseg == segnum)) ||
        (((tnext = tr[t].d1) > 0) && (tr[tnext].rseg == segnum)));

if tnext == ...
Bin schon fast durch und kann wohl nachher besser C++ als Delphi

Gruss Skript
  Mit Zitat antworten Zitat
ripper8472

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

Re: Triangulationsalgorithmus

  Alt 17. Jul 2004, 19:37
Hi!

Also die Anweisung ist echt grausam.
Zur Verständlichkeit etwas C:
Code:
  a = 3;
  b = 10;
  c = (a = b);
a ist jetzt 10, weil ich der Variable den Wert von b zugewiesen hab. Das Ergebnis dieser Zuweisung ist dann auch der Wert, den ich a zugewiesen hab. c ist jetzt also auch 10.


C hat außerdem das Sprachmerkmal, boolesche Ausdrücke nicht vollständig auswerten zu müssen. Wenn ich z.B. (1 || something()) auswerte, dann wird die funktion something() garnicht ausgeführt, weil das Ergebnis sowieso Eins sein muss.

Also mal wieder aus dem Handgelenk:
Delphi-Quellcode:
tnext := tr[t].d0;
cond := (tnext > 0) and (tr[tnext].rseg = segnum); //vorausgesetzt, segnum ist keine funktion

if not cond then begin
  tnext := tr[t].d1;
  cond := (tnext > 0) and (tr[tnext].rseg = segnum);
end;
Ich denke, das dürfte es sein.


Gruß, Christoph
Christoph
char l[]="\xd6N\x96\xa6\xe6\xce.\xa6\xe4\xce\x04N\x86\xae\ xce\xfc",I,*i=l-1;for(;I=3,*i
++;){while(*i=*i&~(1<<I|1<<7-I)|(*i&1<<I)<<7-2*I|(*i&1<<7-I)>>7-2*I,I--);}puts(l);
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz