Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

31

13.08.2009, 14:18

Zitat von »"dot"«


Da du eh nur schauen willst ob der abstand kleiner als ein bestimmter Wert ist kannst du dir die Wurzel natürlich sparen und gleich die Quadrate vergleichen, allerdings vergleichst du da ja effektiv nicht die Quadrate, sondern die 4te Potenz des Abstandes.


C-/C++-Quelltext

1
hypertenuse = delta_x * delta_x + delta_y * delta_y; 

Das entspricht ja: c = a^2 * b^2

C-/C++-Quelltext

1
double abstand = hypertenuse * hypertenuse;

Jetzt entspricht es: c^2=a^2 * b^2

C-/C++-Quelltext

1
if ( abstand < 300 ) //eigentlich 13^2=169

Hier setze ich jetzt nicht 13 sondern 13^2 ein und kann mir die Quadratwurzel sparen.

Grüße
Dani

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

32

13.08.2009, 14:25

Zitat von »"dani k."«

C-/C++-Quelltext

1
hypertenuse = delta_x * delta_x + delta_y * delta_y; 

Das entspricht ja: c = a^2 * b^2


Eben nicht, das is ja genau dein Denkfehler. Verwechsle niemals eine Zuweisung mit einer Gleichung. Das = Zeichen da hat mit dem = im mathematischen Sinn überhaupt nichts zu tun.
Da steht nur: Weise der Variable hypertenuse den Wert von delta_x * delta_x + delta_y * delta_y zu. Und wie wir alle wissen ist das Ergebnis von a² + b² eben c². Nur weil du es nicht c² sondern "hypertenuse" nennst bedeutet das noch lange nicht dass da auf einmal c rauskommt...

Zitat von »"dani k."«

C-/C++-Quelltext

1
double abstand = hypertenuse * hypertenuse;

Jetzt entspricht es: c^2=a^2 * b^2


Eben nicht, jetzt entspricht es (a² + b²)², denn was eigentlich dasteht ist:

hypertenuse <- a² + b²
abstand <- hypertenuse² = (a² + b²)²


Zitat von »"dani k."«

Hier setze ich jetzt nicht 13 sondern 13^2 ein und kann mir die Quadratwurzel sparen.


Ja klar, aber kommt es dir nicht komisch vor dass 13^2 eben nicht 300 ist!?

33

13.08.2009, 14:52

S*** du hast recht. Da hab voll den Denkfehler drin gehabt. Ist halt doch von Vorteil wenn man sich das noch mal auf einem Papier aufschreibt...

Danke auch.
Dani

Werbeanzeige