Zufällige X,Y,Z Koordinaten

Dieses Thema im Forum "Programmierung" wurde erstellt von Yellowphoenix18, 28. April 2014.

  1. Yellowphoenix18
    Offline

    Yellowphoenix18

    Registriert seit:
    26. März 2013
    Beiträge:
    267
    Ort:
    Niedersachsen
    Minecraft:
    YellowPhoenix18
    Hallo,ich wollte gerne programmieren,dass ein Spieler zu einer zufälligen Position tpt wird,diese Koordinaten müssen dann aber in einem Quadrat zwischen zwei Koordinaten liegen,wäre nett wenn mir jemand helfen könnte!

    mfg YellowPhoenix18
     
    #1
  2. Ziemlich simple:

    Definitionen
    p1 := Punkt 1
    p2 := Punkt 2

    vk := Ortsvektor der kleinste Position
    vm := Ortsvektor der größte Position
    vd := Differenz von vk und vm

    xN := X-Pos. von N
    yN := Y-Pos von N
    zN := Z-Pos von N


    Bestimmen von va / vb:
    X-Position = minimum / Maximum von x1 und x2
    Y-Position = minimum / Maximum von y1 und y2
    Z-Position = minimum / Maximum von z1 und z2

    Differenzvektor bilden:
    vd = vm - vk

    Koordinaten bestimmen:
    m = vd(x | y | z) // Ensprechende Koordinate bekommen
    return random.nextInt(m) + vm(x | y | z); // wie oben auch
     
    #2
  3. Howha
    Offline

    Howha

    Registriert seit:
    10. April 2013
    Beiträge:
    42
    Minecraft:
    Howha
    Code (Text):
    1. public static double myRandom(double low, double high) {
    2.   return Math.random() * (high - low) + low;
    3. }
    Das dann eben je einmal für X und Z. Geklaut von ROAE-Blog.
     
    #3
  4. Yellowphoenix18
    Offline

    Yellowphoenix18

    Registriert seit:
    26. März 2013
    Beiträge:
    267
    Ort:
    Niedersachsen
    Minecraft:
    YellowPhoenix18
    Ok,danke an euch beide,leider verstehe ich die Methode von Howha nicht so gut und würde mich drüber freuen,wenn manf mir nen kleinen Code schicken kann.
    P.S. versuche mich hier das erste mal an soetwas,habe generell noch nicht so viele Kentnisse.

    Danke im vorraus.

    mfg YellowPhoenix18
     
    #4
  5. Ich erkläre hier nur die mathematischen Grundlagen.

    Howha hat einen Code gezeigt, der dir einen zufälligen Wert zwischen low und high zurückgibt.

    Dies kannst du dann praktisch benutzen, wenn du den Min und den Max Vektor hast.

    Geht also etwas einfacher, wenn man diesen Trick benutz, also es wie ich beschrieben habe über die simplere Methode.

    Code (Text):
    1.  
    2. double minX = Math.min(a.getX(), b.getX());
    3. //...
    4. Vector min = new Vector(minX, minY,minZ);
    5. Vector max = new Vector(maxX, maxY, maxZ);
    6. // Siehe Hohwas post
    7. double rX = myRandom(min.getX(), max.getX());
    8. Vector to = new Vector(rX, rY, rZ);
    9.  
     
    #5
  6. Howha
    Offline

    Howha

    Registriert seit:
    10. April 2013
    Beiträge:
    42
    Minecraft:
    Howha
    So wie ich das verstehe, möchte @Yellowphoenix18 einfach eine Location innerhalb eines bestimmten Quadrats. Das heißt, er hat je einen minimalen und maximalen Wert von X und Z.

    Dann kann man das doch einfach so lösen, oder nicht?

    Code (Text):
    1. public Location getRandomLocation(World world, int minx, int maxx, int y, int minz, int maxz) {
    2.  
    3.   int x = myRandom(minx, maxx); // Methode von oben
    4.   int z = myRandom(minz, maxz);
    5.  
    6.   return new Location(world, x, y, z);
    7.  
    8. }
     
    #6