AGB  ·  Datenschutz  ·  Impressum  







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

Koordinatensystem addieren.

Ein Thema von juniorA · begonnen am 21. Mär 2020 · letzter Beitrag vom 29. Mär 2020
Antwort Antwort
Andreas13

Registriert seit: 14. Okt 2006
Ort: Nürnberg
730 Beiträge
 
Delphi XE5 Professional
 
#1

AW: Koordinatensystem addieren.

  Alt 22. Mär 2020, 19:47
@Frühlingsrolle.
Nur ein kleiner Hinweis zu Deinen Routinen: Man darf eine Fließkommazahl wie Double, Extended nie auf Gleichheit prüfen, weil dies wider Erwartung (fast) nie zutrifft:
Delphi-Quellcode:
function TVec3.IsPerpendicular: Boolean;
...
   bRes := Scalar(FX, FY, FZ) = 0.0; // Falsch!
...
Der Grund dafür sind einerseits arithmetische Rundungsfehler in vorangegangenen Berechnungen. Darüber hinaus ist es generell nicht möglich, unendlich viele reelle Zahlen mit einer endlichen Anzahl von Bits (Double: 64 Bits; Extended: 80 Bits) darzustellen. Allein bei der binären Codierung der Dezimalzahlen entstehen daher unvermeidbare Rundungsfehler.
Man sollte daher stets einen unscharfen Fließkomma-Vergleich machen. Man kann dazu z. B. die vorhandene Math-Funktion
  Math.SameValue(Ist, Soll, Abs_Toleranz) verwenden.
Delphi-Quellcode:
CONST
  Gleich_Toleranz = 1E-15; // für Double

function TVec3.IsPerpendicular: Boolean;
...
   bRes := SameValue(Scalar(FX, FY, FZ), 0.0, Gleich_Toleranz);
...
Empfehlenswert wäre auch die durchgängige Benutzung des Typs Extended anstelle von Double. Ich persönlich benutze für meine – zugegeben recht umfangreichen Berechnungen – oft die Multipräzisions-Arithmetik-Bibliothek von Wolfgang Ehrhardt mit 100 ... 200 Stellen (320 … 640 Bits), wo ich nach erfolgten Berechnungen die Rechenergebnisse zu Extended konvertiere.
Gruß, Andreas
Grüße, Andreas
Wenn man seinem Nächsten einen steilen Berg hinaufhilft, kommt man selbst dem Gipfel näher. (John C. Cornelius)
  Mit Zitat antworten Zitat
Alt 22. Mär 2020, 20:52     Erstellt von Frühlingsrolle
Dieser Beitrag wurde von Daniel gelöscht. - Grund: Verdacht auf SPAM und den damit verbundenen verschwenderischen Umgang von wertvollen Bits und Bytes
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.553 Beiträge
 
Delphi 12 Athens
 
#3

AW: Koordinatensystem addieren.

  Alt 22. Mär 2020, 22:27
Wieso sollte es schneller werden?

Gerechnet wird in der CPU mit 80 Bit (Intel/AMD), egal ob der Wert als 32 oder 64 Bit gespeichert wurde.



Einzig mit Streamingfunktionen kann es schneller werden.
SSE, MMX, SIMD, usw., wo parallel mehrere Werte gleichzeitig berechnet werden.

Oder gar sowas wie CUDA, wo man Berechnungen mit sehr vielen schnellen spezielen Prozessoren direkt in Grafikkarten berechnet werden können.


Aus diesem Grund werden auch Verschlüsselungsalgorithmen und Videokodierer/-dekodierer direkt in der CPU oder als Zusatzchip bereitgestellt werden, da die dann via Hardware schneller/optimaler/sicherer arbeiten können, als jede Softwarelösung.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (22. Mär 2020 um 22:34 Uhr)
  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 07:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz