Home

TerKomp

Mittwoch, 22. November 2006 | Autor:

Ter­Komp ist ein Pro­gramm, dass ich momen­tan plane - ein Kom­pres­si­ons­pro­gramm, dass Ter­rains vom TerraGen-Format kom­pri­miert. Ter­ra­in­da­ten wer­den bis­her stur Feld für Feld abge­spei­chert, was 2Byte pro Feld benö­tigt und bei 2048² kommt da eini­ges zusammen.

Daher will ich die Höhen­da­ten kom­pri­mie­ren - das ganze soll ver­lust­frei gesche­hen um kein Detail zu ver­lie­ren. Außer­dem wird ein so kom­pri­mier­tes Ter­rain sei­ner­seits noch­mal durch gän­gige Packer wie Win­ZIP, Win­Rar, etc. gepackt wer­den kön­nen. Nor­ma­ler­weise gibt es da das Phä­no­men, dass Dateien, die ein­mal kom­pri­miert wur­den beim erneu­ten kom­pri­mie­ren nicht klei­ner wer­den. Da mein Pro­gramm jedoch eine andere Her­an­ge­hens­weise hat wird die­ser Effekt nicht auftreten :)

Die Frage ist, ob Java die geeig­nete Platt­form ist - Es kann teils schein­bar keine gro­ßen Ter­rains ein­le­sen ohne dass der Java-VM der Spei­cher aus­geht. c++ kann ich lei­der (noch) nicht.
Nach ers­ten Ana­ly­sen sind Raten zwi­schen 60 und 70% erreich­bar. Ein Relea­se­ter­min für eine Ver­sion 0.1 steht noch nicht fest und wegen des Stu­di­ums kann der noch eine Weile auf sich war­ten lassen.

Tags »

Trackback: Trackback-URL |  Feed zum Beitrag: RSS 2.0
Thema: Programmieren

Diesen Beitrag kommentieren.

4 Kommentare

  1. 1
    Orca 

    Hm. Die Idee hatte ich auch schon­mal, ist ja bei sol­chen Rie­sen­da­teien auch nahe­lie­gend. Wie willst du denn vor­ge­hen? Das Ter­rain in Quadrate/Rechtecke mit mög­lichst gerin­ger Höhen­dif­fe­renz zer­ha­cken? So hatte ich mir das zumin­dest damals grob gedacht.
    Aber ist natür­lich blöd, wenn die JVM keine 4096² han­deln kann… so viel wie­der zum Thema Java. Wie war das mit Ter­ra­For­mer auf Java? *g* Gaaanz toll.

    Grüße, Tobias ;)

  2. 2
    nicokorn 

    Hehe..
    Im Grunde würd ich nur die Dif­fe­renz zum nächs­ten Feld spei­chern und hof­fen, dass die nich so groß ist und man mit weni­ger bits aus­kommt. Ist natür­lich blöd, müsste ich mir einen eig­nen Daten­typ zurecht­bas­teln, der mei­net­we­gen nur 10 Bits hat.
    Vor­teil: Das klappt immer bes­ser je grö­ßer das Ter­rain ist - Nach­teil: Java..
    na viel­leicht bekomm ich es ja doch noch irgend­wie hin. :)

    Eina andere Idee wäre, die grobe Form in einem nied­rig auf­ge­lös­ten Ter­rain zu spei­chern und die Details in einem gro­ßen Ter­rain, dass dann mit weni­ger gro­ßen Zah­len auskommt.

  3. 3
    Orca 

    Oja, mit Bits arbei­ten ist bestimmt sehr spa­ßig. Ver­mut­lich kannst du dafür in Java auch kei­nen Daten­typ bauen, denn Java bläht die 10 Bit dann wahr­schein­lich zu minim­nal 40 Bit auf und schon schiebst du wie­der Unmen­gen Spei­cher­sa­lat durch die Gegend *g*

  1. […] … löst hier im kon­kre­ten Fall das Pro­blem. Wobei m natür­lich für Mega steht und nicht für milli ;) Jetzt kann ich ruhi­gen Gewis­sens am Ter­Komp wei­ter­pro­gram­mie­ren :) […]

Kommentar abgeben