Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Warum ist das nicht dasselbe ? (https://www.delphipraxis.net/7501-warum-ist-das-nicht-dasselbe.html)

overmoon 13. Aug 2003 23:34


Warum ist das nicht dasselbe ?
 
Warum führt der folgende Code

Delphi-Quellcode:
     ablx := ( ( x - dx ) * cos(alpha) ) - ( ( y - dy ) * sin(alpha) );
     ably := ( ( x - dx ) * sin(alpha) ) + ( ( y - dy ) * cos(alpha) );
     x   := ablx + dx;
     y   := ably + dy;
nicht zu dem gleichen Ergebnis wie dieser:

Delphi-Quellcode:
     x := ( ( x - dx ) * cos(alpha) ) - ( ( y - dy ) * sin(alpha) );
     y := ( ( x - dx ) * sin(alpha) ) + ( ( y - dy ) * cos(alpha) );
Alle Variablen sind vom Typ Double.
Bei der Berechnung wird der Punkt (x,y) um den Punkt (dx,dy) gedreht. Mathematisch ist die Rechnung richtig.

Aber:
Bei dem zweiten Code führt es zu großen Fehlern.
Er dreht nicht richtig ! Nur Warum ??
Liegt das am Typ Double ??

Illuminator-23-5 13. Aug 2003 23:43

Re: Warum ist das nicht dasselbe ?
 
probiers mal, nachdem du bei der 2. methode +dx bzw. +dy anhängst

Basilikum 14. Aug 2003 06:28

Re: Warum ist das nicht dasselbe ?
 
x und y haben je Einfluss auf die neuen Werte von x und y

bei der ersten Variante berechnest du zuerst Zwischenwerte, in Temp-Variablen, und bei der zweiten überschreibst du bereits in der 1. Zeile das alte x... zur Berechung von y (2. Zeile) wird dann das "neue" x und das "alte" y verwendet... es müsste jedoch beidesmal das "alte" x zum Zuge kommen.....

oki 14. Aug 2003 07:13

Re: Warum ist das nicht dasselbe ?
 
Also vielleicht bin ich blöd, aber ich versteh die Frage nicht.

Im zweiten Code werden genau je eine Rechenoperation mehr ausgeführt. Ich würde mich eher wundern wenn das gleiche rauskommt und es vorsorglich zum Patent anmelden bevor es zu Spät ist.

Grundsätzlich funktioniert:

x := x + 1;

Somit kannst du getrost mit einer Zuweisung eines Wertes auf eine Variable arbeiten indem du diese in der Zuweisung als Operator verwendest.

Der Punkt ist hier, dass bei beiden Codes die mathematischen Operationen in den ersten beiden Zeilen identisch sind. Es gibt halt nur zwei Zeilen mehr im ersten Code.

Identisch zum ersten währe folgende Anweisung:

Delphi-Quellcode:
x := ( ( x - dx ) * cos(alpha) ) - ( ( y - dy ) * sin(alpha) ) + dx;
y := ( ( x - dx ) * sin(alpha) ) + ( ( y - dy ) * cos(alpha) ) + dy;
Gruß oki

BungeeBug 14. Aug 2003 08:24

Re: Warum ist das nicht dasselbe ?
 
So würd ichs auch sagen ...

bei der ersten Formal addierst du am Ende noch mal -> dx <- das machst du bei der 2ten nicht. Folglich unterscheiden sich die Ergebnisse um genau das -> dx <- . Das musst du jetzt bei der letzten Formal noch anhängen und ab geht die Post :)

overmoon 14. Aug 2003 09:22

Re: Warum ist das nicht dasselbe ?
 
Ohhh, Sorry. Nein, das meinte ich nicht. Mein Code oben war falsch kopiert.

So müsste er korrekt aussehen.

1. Version
Delphi-Quellcode:
     ablx := ( ( x - dx ) * cos(alpha) ) - ( ( y - dy ) * sin(alpha) );
     ably := ( ( x - dx ) * sin(alpha) ) + ( ( y - dy ) * cos(alpha) );
     x   := ablx + dx;
     y   := ably + dy;
2. Version
Delphi-Quellcode:
     x := ( ( ( x - dx ) * cos(alpha) ) - ( ( y - dy ) * sin(alpha) ) ) + dx;
     y := ( ( ( x - dx ) * sin(alpha) ) + ( ( y - dy ) * cos(alpha) ) ) + dy;
natürlich hatte ich das dx und das dy am Ende angehängt, ich hatte das nur beim ins-Forum-stellen vergessen, da ja die erste Version, die Version ist, die funktioniert und die ich in meinem Programm benutze.

Aber netterweise habt ihr mir ja trotzdem die richtige Lösung gepostet.
Ich verändere in der ersten Zeile (bei der zweiten Version) das x und verwende dann in der zweiten Zeile das bereits veränderte x, obwohl ich das unveränderte hätte benutzen müssen...

...uhh, wie peinlich. *hinter der nächsten ecke versteck* :oops: :idea:

Vielen Dank.
overmoon


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:21 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