AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Warum ist das nicht dasselbe ?

Ein Thema von overmoon · begonnen am 14. Aug 2003 · letzter Beitrag vom 14. Aug 2003
Antwort Antwort
Benutzerbild von overmoon
overmoon

Registriert seit: 8. Aug 2003
Ort: Passau
51 Beiträge
 
Delphi 6 Personal
 
#1

Warum ist das nicht dasselbe ?

  Alt 14. Aug 2003, 00:34
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 ??
"Habe Mut, dich deines eigenen Verstandes zu bedienen." (Immanuel Kant)
  Mit Zitat antworten Zitat
Illuminator-23-5
(Gast)

n/a Beiträge
 
#2

Re: Warum ist das nicht dasselbe ?

  Alt 14. Aug 2003, 00:43
probiers mal, nachdem du bei der 2. methode +dx bzw. +dy anhängst
  Mit Zitat antworten Zitat
Basilikum

Registriert seit: 9. Aug 2003
389 Beiträge
 
Delphi 7 Professional
 
#3

Re: Warum ist das nicht dasselbe ?

  Alt 14. Aug 2003, 07:28
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.....
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Warum ist das nicht dasselbe ?

  Alt 14. Aug 2003, 08:13
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
  Mit Zitat antworten Zitat
BungeeBug

Registriert seit: 19. Dez 2002
Ort: zuhause?!
227 Beiträge
 
Delphi 6 Personal
 
#5

Re: Warum ist das nicht dasselbe ?

  Alt 14. Aug 2003, 09:24
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
MfG BungeeBug
Wer andern eine Grube gräbt sollte auf Gasleitungen achten!!!!
  Mit Zitat antworten Zitat
Benutzerbild von overmoon
overmoon

Registriert seit: 8. Aug 2003
Ort: Passau
51 Beiträge
 
Delphi 6 Personal
 
#6

Re: Warum ist das nicht dasselbe ?

  Alt 14. Aug 2003, 10:22
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*

Vielen Dank.
overmoon
"Habe Mut, dich deines eigenen Verstandes zu bedienen." (Immanuel Kant)
  Mit Zitat antworten Zitat
Antwort Antwort


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 13:08 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