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

idontknow

unregistriert

1

09.02.2009, 22:12

Gigantische Listen Arrays durchlesen!

hey,

so spät am Aben dnoch eine Frage von mir (ist zei am Tag hier ungewöhnlich??):

Gehen wir mal davon aus ich hab eine Landschaft, gegben durch eine quadratische Fläche bestehend aus unzähligen Vektoren. Durch den Höhenunterschied einzelner Vektoren soll so die Fläche "gezeichnet" werden.

Um Beispielsweise Wasser zu erstellen soll einfach eine bestimte Fläche auf dieser Land-Ebene, nach unten versetzt werden (z = z- x), sodass die neue Wasser Grundfläche unter der umgebenden Oberfläche liegt.
Um Wasser hinzuzufügen soll einfach das "Loch" mit einer Ebene ausgefüllt werden, die entsprchend animiert wird.

Das alles ist nur ein beispiel, ob man es so umsetzen könnte weiß ich atm nicht (wäre aber durchaus interessant zu wissen, also falls wer das wissen sollte!).

Um jetzt eben diese Fläche automtisch bereechnen zu wolle n müsste ich ja eine gigantische Liste ALLER Land-Ebene Vektoren anfertigen und dise dann schrittweise durchgehen, und dabei zuerst nach Z, dann nach nach anderen Werten aussortieren um die Randpunkte der Wasserebene zu erfassen.

Meine Frage: Eine solceh Liste wäre ja gigantisch groß. verbäuchte die nicht viel speicher? Und wie lange würde es dauern so eine Liste mit ca. 10 - 25 000 Vektoren durchzugehen??
ist die Dauer tragbar?

Wie gesagt ist es nur ein Beispiel, mir geht es nur um die Geschwindigkeit von Listen bei extremen Eintragszahlen!

(Ingame wäre dieses beispieol ja unrelevant weil die Wasserebenen Grnezpunkte mittels eben gennante Verfahrens im Vorfeld berechnet und gespeichert werden würden!!!)

mfg

idontknow

PS: Good Night =)

2

09.02.2009, 22:19

Hm, wasgenau hast du jetzt vor? Ich fände es ganz gut, wenn du statt unausgereifter (sonst würdest du nicht fragen )Lösungsansätzen einfach mal das Problem sachlich schildern würdest.

Aber man könnte z.B. die gesammte Landschaft im Vorfeld in einen Octree einsortieren, da kann man sich das suchen schon beschleunigen.
Lieber dumm fragen, als dumm bleiben!

idontknow

unregistriert

3

09.02.2009, 22:20

reines Interesse bezüglich der Verarbeitungsgeschwindigkeit extremer Listen :D

Anonymous

unregistriert

4

09.02.2009, 22:20

Für so etwas gibt es Bäume. Unteranderem sind KD-Trees oder Quad-Trees dafür sehr praktisch um deinen "gigantischen" (er ist eher sehr klein) Listen-Bestand auf ein deutliches Minimum (so 1/100 - 1000) von relevanten Vertices zu reduzieren.

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

5

09.02.2009, 22:23

Also rein von der STL her musst du dir da keine Gedanken machen. Auf Release macht die dir die paar Tausend durchgänge praktisch gratis. ;)

Trees machen durchaus Sinn, um den Resten zu drücken, der viel merh Laufzeit verbrät, als das durchiterieren.

6

09.02.2009, 22:27

Zitat von »"idontknow"«

reines Interesse bezüglich der Verarbeitungsgeschwindigkeit extremer Listen :D
Ja, naja, wenn du eine Liste durcharbeitest, ist das im allgemeinem linear, also doppelt so viele Elemente = doppelt so lange.
Wenn du in einem Baum statt in einer Liste suchst, hast du z.B. logarithmische Laufzeit, was schon recht cool ist.
Dazu sollte es aber massig Informationen im Internet finden, wie man welche Aufgabe in kürzester Zeit schaffen kann. Zum Beispiel beim sortieren, gibt es sehr unterschiedliche Verfahren die sehr unterschiedlich schnell sein können.
Ohne genaues Problem kann man da aber sehr wenig zu sagen.
Lieber dumm fragen, als dumm bleiben!

Jevermeister

Treue Seele

Beiträge: 130

Wohnort: Bremerhaven

Beruf: Student

  • Private Nachricht senden

7

10.02.2009, 00:10

Mit Patricia-Tries könnte man das ganze sogar noch komprimieren, da sich die Vektoren ja nicht durchgehend unterscheiden.
Durch die digitale Suche kommst du auch sehr schnell wieder an Elemente ran.
Für sowas kann ich die Algorithms in C++ von Sedgewick empfehlen, ist allerdings was für fortgeschrittene Leser und ein gutes Nachschlagewerk.

8

10.02.2009, 16:36

und du hältst es wirklich für eine gute idee, jedes Stück terrain, das von höherem Terrain umgeben ist, mit Wasser zu füllen? was ist denn mit talkesseln, oder flüssen, oder wasserfällen? Oder hab ich dich falsch verstanden?

idontknow

unregistriert

9

10.02.2009, 17:05

arghhhhhhhhhhhhh.

das war doch nur ein sinnloses beispiel ich bin momentan vermutlich nicht mal n der Lage annähernd sowas zu proggen *sojetztistsraus....*

10

10.02.2009, 17:10

Zitat von »"idontknow"«

arghhhhhhhhhhhhh.

das war doch nur ein sinnloses beispiel ich bin momentan vermutlich nicht mal n der Lage annähernd sowas zu proggen *sojetztistsraus....*

es ging nicht darum ob das beispiel für dich programmierbar ist, sondern in wie weit es sinn macht, denn üblicherweise würde man in einem WorldEditor Wasserflächen durch angabe der Eckpunkte eines Polygons angeben, das aber ruhig das normale terrain schneiden kann, sobalds unter der Erde ist, sieht mans ja nicht mehr ;)
//EDIT. was heißt übelicherweise? ich würde es so machen :p

Werbeanzeige