1

ノイズベースの地形生成を試みていますが、座標点とシードからランダムな点を取得する必要があります。今、私が苦労している難しい部分は、シードが同じである場合、同じポイントから同じ番号が返されることです。(random.nextDouble() は単純に別の数値に移動します)。

私はある種の方程式をやってみました:

return ((int) ((randomKey1.charAt((5 ^ x) % 127)) + (int) ((randomKey2
            .charAt(Math.abs(z  ^ 2 % 64) % 127)))) / 256f * 40f);

しかし、x 座標と z 座標を交換すると同様の数値が得られ、地形が斜めに鏡映されて見えるため、これは正確には機能しません。

解決済み:

double getRatCor(int x, int z) {
    double a;

    Random r = new Random(seed + (x*10000) + (z*100));
    a = r.nextDouble()*40;
    System.out.println(a);
    return a;
}
4

1 に答える 1

0

どうですか?

/**
* return random number with seed based on coordinates.
*/
double locationValue(int x,int y){
    long seed = z;
    seed = x + (seed << 32); // make x and z semi-independent parts of the seed.
    Random r = new Random(seed);
    return r.nextDouble();
}
于 2013-05-21T03:53:30.020 に答える