Sha256: 45438ac3fbd4be8d5dbc4566278433ca782ea1bec703ad83861f0be2c3690770

Contents?: true

Size: 1.39 KB

Versions: 6

Compression:

Stored size: 1.39 KB

Contents

package org.sunflow.core.bucket;

import org.sunflow.core.BucketOrder;

public class RandomBucketOrder implements BucketOrder {

    @Override
    public int[] getBucketSequence(int nbw, int nbh) {
        int[] coords = new int[2 * nbw * nbh];
        for (int i = 0; i < nbw * nbh; i++) {
            int by = i / nbw;
            int bx = i % nbw;
            if ((by & 1) == 1) {
                bx = nbw - 1 - bx;
            }
            coords[2 * i + 0] = bx;
            coords[2 * i + 1] = by;
        }

        long seed = 2463534242L;
        for (int i = 0; i < coords.length; i++) {
            // pick 2 random indices
            seed = xorshift(seed);
            int src = mod((int) seed, nbw * nbh);
            seed = xorshift(seed);
            int dst = mod((int) seed, nbw * nbh);
            int tmp = coords[2 * src + 0];
            coords[2 * src + 0] = coords[2 * dst + 0];
            coords[2 * dst + 0] = tmp;
            tmp = coords[2 * src + 1];
            coords[2 * src + 1] = coords[2 * dst + 1];
            coords[2 * dst + 1] = tmp;
        }

        return coords;
    }

    private int mod(int a, int b) {
        int m = a % b;
        return (m < 0) ? m + b : m;
    }

    private long xorshift(long y) {
        y = y ^ (y << 13);
        y = y ^ (y >>> 17); // unsigned
        y = y ^ (y << 5);
        return y;
    }
}

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
joonsrenderer-1.3.1-java src/main/java/org/sunflow/core/bucket/RandomBucketOrder.java
joonsrenderer-1.2.0-java src/main/java/org/sunflow/core/bucket/RandomBucketOrder.java
joonsrenderer-1.1.3-java src/main/java/org/sunflow/core/bucket/RandomBucketOrder.java
joonsrenderer-1.1.2-java src/main/java/org/sunflow/core/bucket/RandomBucketOrder.java
joonsrenderer-1.1.1-java src/main/java/org/sunflow/core/bucket/RandomBucketOrder.java
joonsrenderer-1.1-java src/main/java/org/sunflow/core/bucket/RandomBucketOrder.java