Delphi-PRAXiS
Seite 4 von 6   « Erste     234 56      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi 100 milliarden Werte speichern! (https://www.delphipraxis.net/72165-100-milliarden-werte-speichern.html)

Union 1. Jul 2006 13:32

Re: 100 milliarden Werte speichern!
 
Hallo,

gehe ich recht in der Annahme, dass die gespeicherten Werte 3D-Koordinaten sind? Wie wäre es dann, wenn Du nur die Vektoren speicherst? Dafür könntest Du Dir einen Record bilden. Es werden im Array die Records gespeichert. Diese enthalten den X/Y/Z Offset zur vorherigen Position im Koordinatensystem. Wenn Du den Maßstab und die Schrittweite geschickt wählst, könntest Du pro Wert dann sogar mit einem Byte auskommen(-128..127). Du brauchst dann nur noch den Startpunkt in "voller Auflösung" zu speichern.

Beispiel:

Delphi-Quellcode:
type
   TOffset = record
     XDiff, YDiff, ZDiff : shortint;
   end;

LePtitmort 1. Jul 2006 14:49

Re: 100 milliarden Werte speichern!
 
Es sind zwar 3d-koordinaten die aber nicht primär zur Zeichnung genutzt werden sonder zur Berechung und daher eine sehr genau sei müssen aber danke... :thumb:

Flo85 1. Jul 2006 14:52

Re: 100 milliarden Werte speichern!
 
Zitat:

Zitat von Union
Diese enthalten den X/Y/Z Offset zur vorherigen Position im Koordinatensystem. Wenn Du den Maßstab und die Schrittweite geschickt wählst, könntest Du pro Wert dann sogar mit einem Byte auskommen(-128..127). Du brauchst dann nur noch den Startpunkt in "voller Auflösung" zu speichern.

Glaube das es nicht so einfach ist einen geeigneten maßstab zu finden wo ein byte reicht. aber die idee ist recht gut. man solte nur aufpassen wenn "Rundungsfehler" dabei sind die jedes mal dazukommen

Union 1. Jul 2006 14:57

Re: 100 milliarden Werte speichern!
 
Das stimmt. Aber das sicher sagen zu können, müsste man entweder den verwendeten Algorithmus kennen oder eine represäntative Ergebnis-Zahlenreihe (nicht unbedingt eine mit 100 Mrd. Einträgen ;)). Oder man läßt sich während eines Programmlaufes die maximalen/minimalen Werte ermitteln und legt das Koordinatensystem darauf hin fest.

@LePtitMort: Welche Auflösung verwendest Du denn für die Berechnung?

LePtitmort 1. Jul 2006 15:13

Re: 100 milliarden Werte speichern!
 
ich verwende extendedzahlen und selbst das ist zu ungenau... aber bis jetzt sagte mir jeder das eien ausweitung über extended sehr umständlich ist... deswegen bleib ich dabei.

Union 1. Jul 2006 15:15

Re: 100 milliarden Werte speichern!
 
Nein, ich meinte jetzt damit die dargestellte Maßeinheit (z.B. km, ly usw.)

Nikolas 1. Jul 2006 15:22

Re: 100 milliarden Werte speichern!
 
Das Problem klingt richtig interessant. Könntest du vielleicht mal sagen, was du eigentlich machen willst und wie die Daten aussehen? Wahrscheinlich könnte man so den verwendeten Algo verbessern und käme auf eine einfachere Speichermethode.

Olli 1. Jul 2006 15:43

Re: 100 milliarden Werte speichern!
 
Wie wäre es, wenn du - wie bei diversen Bildkompressionsverfahren - jeweils eine Differenz speicherst. U.U. sind dann die Zahlen nicht mehr so groß. Auch gäbe es sicher noch andere Methoden die Daten sinnvoll und dennoch effektiver zu speichern ohne gleich auf rechenzeitintensive Komressionsverfahren zu setzen.

LePtitmort 1. Jul 2006 15:54

Re: 100 milliarden Werte speichern!
 
@Toxmen: seite2 Mitte steht um was es geht. würde mich freuen wenn du Neuigkeiten hast
@Union : geschindigkeiten in m/s und Positionen in m, aber spielt auch keine Rolle, da die zahl 123456,7 gleich vielspiechern brauch wie die zahl 1,234567
@olli wäre ein Versuch wert das stimmt.

Nikolas 1. Jul 2006 16:45

Re: 100 milliarden Werte speichern!
 
Wenn du soviele Punkte nicht speichern willst, könntest du versuchen, sie als Funktionen darzustellen. Du könntest z.B. nach einer bestimmten Anzahl an Schritten die Bahn jedes Planeten als Polynom großen Grades zu approximieren, was nicht allzu schwierig sein sollte, oder als Fourierentwicklung. Je nach dem wie die Bahnen aussehen, könnte es vor der approximation sinnvoll sein, in Kugelkoordinaten zu wechseln. Dann hättest du in jeder Komponente Funktionen, die sich gut durch Sinus-terme beschreiben lassen sollten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:39 Uhr.
Seite 4 von 6   « Erste     234 56      

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