tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
8
ZUGRIFFE
215
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Longor1996 Longor1996 ist offline Mitglied
    Registriert seit
    May 2011
    Beiträge
    15
    Hallo Leute ich mal wieder mit folgendem Problem:
    Ich habe eine LinkedList<Chunk> world;
    Ein Chunk hat die Variablen:
    int X,int Z (Und noch SRC[][] und GLID was aber in dem Fall nicht von interesse ist)
    und wird mit dem Konstruktor new Chunk(Main parent,World world,int x,int z) erschaffen

    Tja und ich will in einer bestimmten reichweite um einen Punkt p die nötigen Chunks laden.
    d.H:
    1.Ich hab eine LinkedList die Chunks aufnimmt.
    2.Ein Chunk hat X,Z Koordinaten.
    3.Ich will um einen Punkt p herum in einer bestimmten Reichweite die LinkedList so füllen das eine Umgebung entsteht.

    Hoffe jemand kapirt das...mfg Longor1996

    Edit:
    Achja...das ganze befindet sich in einer World.class.
    Geändert von Longor1996 (23.08.11 um 04:38 Uhr)
     
    I love <3 Java Programmieren!

  2. #2
    Avatar von sheel
    sheel sheel ist gerade online Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.503
    Hi

    Zitat Zitat von Longor1996 Beitrag anzeigen
    Hoffe jemand kapirt das
    nicht wirklich.

    Willst du zufällige Koordinaten, die nur einen bestimmten Maximalabstand von p haben dürfen?
     

  3. #3
    Longor1996 Longor1996 ist offline Mitglied
    Registriert seit
    May 2011
    Beiträge
    15
    Ach ich mein das im sinne von:
    Um p herum wird ein gedachtes Rechteck mit Radius FOV erstellt (Wobei FOV = Anzahl Chunks ist, Chunk = 10E). Und dieses Rechteck will ich füllen! Mit Chunks...wobei es sein kann das in diesem Rechteck schon ein paar Chunks liegen
     
    I love <3 Java Programmieren!

  4. #4
    Avatar von Fabio Hellmann
    Fabio Hellmann Fabio Hellmann ist offline Mitglied Brokat
    Registriert seit
    Aug 2011
    Ort
    München
    Beiträge
    494
    Hi,
    du kannst doch über den Satz des Pythagoras diese Elemente selber ausrechen.
    Du setzt einfach eine Variable, wie weit die Elemente maximal entfernt sein dürfen
    Code java:
    1
    
    final int maxR = 100
    Und berechnest danach, über den Satz des Pythagoras, welchen Abstand die Punkte zum Ausgangspunkt (xM, yM) haben.
    Code java:
    1
    2
    3
    4
    5
    
    int r = (int) (Math.sqrt( (Math.pow(x - xM, 2) + Math.pow(y - yM, 2))));
     
    if(r <= maxR) {
       System.out.println("Element ist in Sichtweite");
    }

    Gruß

    Fabio
    Geändert von Fabio Hellmann (23.08.11 um 09:33 Uhr)
     
    Bitte die Code-Tags verwenden. Bei Java-Code: [java]...[/java]

    Tutorials:
    Automatisches erzeugen eines Inhaltsverzeichnisses (Javascript)
    JAnimationPanel - Animationen für Swing/AWT
    SWTRatingBar (Bewertungs-Composite) selbst programmieren
    ____________________________________________________________________________
    Über eine Bewertung (Stern links unter dem Beitrag) oder ein Danke freue ich mich sehr.

  5. #5
    Longor1996 Longor1996 ist offline Mitglied
    Registriert seit
    May 2011
    Beiträge
    15
    Hä?
    Ich glaub ich bin zu müde um das zu kapiere nobwohl ich damit schon rumgewerkelt hab...
    Wobei:
    Und wie soll ich das mit dem Generierer und der LinkedList verbinden? (+ Gedachten Rechteck?)

    ICH DREH DURCH->Zu Müde...gute nacht
     
    I love <3 Java Programmieren!

  6. #6
    Avatar von Fabio Hellmann
    Fabio Hellmann Fabio Hellmann ist offline Mitglied Brokat
    Registriert seit
    Aug 2011
    Ort
    München
    Beiträge
    494
    Ich würde mal vermuten, dass es das ist, was du suchst.

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    
    import java.util.ArrayList;
    import java.util.List;
     
    public class Camera
    {
        private static final int OPTICAL_RANGE = 100;
     
        private final List<Chunk> visibleChunks;
        private final List<Chunk> allChunks;
        private final int x;
        private final int z;
     
        /**
         * @param x
         * @param z
         */
        public Camera(int x, int z) {
            this.x = x;
            this.z = z;
            this.visibleChunks = new ArrayList<Chunk>();
            this.allChunks = new ArrayList<Chunk>();
        }
     
        /**
         * @param chunk
         */
        public void addChunk(Chunk chunk) {
            if(chunk == null) {
                return;
            }
            
            allChunks.add(chunk);
            if(isVisible(chunk)) {
                visibleChunks.add(chunk);
            }
        }
        
        /**
         * @param chunk
         */
        public void removeChunk(Chunk chunk) {
            if(chunk == null) {
                return;
            }
            
            if(allChunks.contains(chunk)) {
                allChunks.remove(chunk);
                
                if(visibleChunks.contains(chunk)) {
                    visibleChunks.remove(chunk);
                }
            }
        }
     
        /**
         * 
         */
        public void update() {
            for(int i = 0; i < allChunks.size(); i++) {
                Chunk chunk = allChunks.get(i);
                if(isVisible(chunk) && !visibleChunks.contains(chunk) {
                    visibleChunks.add(chunk);
                } else if(!isVisible(chunk) && visibleChunks.contains(chunk)) {
                    visibleChunks.remove(chunk);
                }
            }
        }
        
        /**
         * @return
         */
        public List<Chunk> getVisibleChunks() {
            return visibleChunks;
        }
        
        /**
         * @return
         */
        public List<Chunk> getAllChunks() {
            return allChunks;
        }
     
        /**
         * @param chunk
         * @return
         */
        private boolean isVisible(Chunk chunk) {
            int r = (int) (Math.sqrt( (Math.pow(chunk.getX() - x, 2) + Math.pow(chunk.getZ() - z, 2))));
     
            if(r <= OPTICAL_RANGE) {
                System.out.println("Element ist in Sichtweite");
                return true;
            }
            return false;
        }
    }

    Falls es das auch nicht ist, was du suchst, dann wären vielleicht mehr Informationen nett.

    Gruß

    Fabio
    Geändert von Fabio Hellmann (23.08.11 um 09:33 Uhr)
     
    Bitte die Code-Tags verwenden. Bei Java-Code: [java]...[/java]

    Tutorials:
    Automatisches erzeugen eines Inhaltsverzeichnisses (Javascript)
    JAnimationPanel - Animationen für Swing/AWT
    SWTRatingBar (Bewertungs-Composite) selbst programmieren
    ____________________________________________________________________________
    Über eine Bewertung (Stern links unter dem Beitrag) oder ein Danke freue ich mich sehr.

  7. #7
    Longor1996 Longor1996 ist offline Mitglied
    Registriert seit
    May 2011
    Beiträge
    15
    Hm scheint zu stimmen... das einzubauen kostet mich jetzt wahrscheinlich noch ne SourceSicherung und 20 Minuten meines Lebens XD

    EDIT->PROBLEM:
    Remove Chunk muss per int x,z funktionieren. -fixing-




    EDIT AGAIN:
    OKAY?! Das geht überhaupt nicht!...selbst nach 3 Stunden rumprobieren...
    Es gibt keine Fehlermeldungen und das Programm sagt das alle Chunks bereits dargestellt werden.
    Ein Wort: Wtf?
    Geändert von Longor1996 (23.08.11 um 11:18 Uhr)
     
    I love <3 Java Programmieren!

  8. #8
    Avatar von Fabio Hellmann
    Fabio Hellmann Fabio Hellmann ist offline Mitglied Brokat
    Registriert seit
    Aug 2011
    Ort
    München
    Beiträge
    494
    Da ich nicht sagen kann, wie dein Code aussieht, weiß ich auch nicht wo das Problem liegt.
     
    Bitte die Code-Tags verwenden. Bei Java-Code: [java]...[/java]

    Tutorials:
    Automatisches erzeugen eines Inhaltsverzeichnisses (Javascript)
    JAnimationPanel - Animationen für Swing/AWT
    SWTRatingBar (Bewertungs-Composite) selbst programmieren
    ____________________________________________________________________________
    Über eine Bewertung (Stern links unter dem Beitrag) oder ein Danke freue ich mich sehr.

  9. #9
    Longor1996 Longor1996 ist offline Mitglied
    Registriert seit
    May 2011
    Beiträge
    15
    Vllt hab ich mla wieder vergessen ein * einzufügen?
    Oder hab mal wieder X und Z vertauscht XD
    Naja...ich hab Pech...hab mein Code BackUp vergessen zu machen = VERKAKT!
    Pechtag wohl...dann mach ich mich mal aus Fun an einen RayTracer
     
    I love <3 Java Programmieren!

Ähnliche Themen

  1. Effizienter Füll-Algorithmus
    Von DarkWizzard im Forum Coders Talk
    Antworten: 0
    Letzter Beitrag: 13.08.10, 11:47
  2. Antworten: 1
    Letzter Beitrag: 24.04.06, 18:36
  3. Sound in 3D-Welt
    Von M_Susi im Forum Autodesk Maya (ehemals Alias)
    Antworten: 0
    Letzter Beitrag: 07.04.06, 16:25
  4. Welt-Uhr in ASP (AM,PM)
    Von mac2ooo im Forum ASP
    Antworten: 1
    Letzter Beitrag: 04.08.05, 23:57
  5. Chunk decoden?
    Von CoolPeter im Forum .NET Archiv
    Antworten: 10
    Letzter Beitrag: 11.02.04, 15:41