Home

Awesome

convchain

Vanilla javascript port of ConvChain.

Interactive demo

Installing and testing

With npm do:

npm install convchain

Basic example

var ConvChain = require('convchain');

var samplePattern = Uint8Array.from([
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
    1, 1, 1, 0, 0, 0, 0, 1, 1, 1,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 1, 1, 0, 0, 0, 0, 1, 1, 1,
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1
]);

var width = 45,
    height = 20;

var convChain = new ConvChain(samplePattern);

var generatedPattern = convChain.generate([width, height], 3, 0.5, 4); // a flat Uint8Array

// some code to display the result
for (var y = 0; y < height; y++) {
    var s = '';
    for (var x = 0; x < width; x++) {
        s += ' ' + generatedPattern[x + y * width];
    }
    console.log(s);
}

Public API

Constructor

new ConvChain(sample[, sampleSize])

var testSample = Uint8Array.from([
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
    1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
]); //flat array

var convChain = new ConvChain(testSample, [14, 10]);
var testSample = [
    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    [1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1],
    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
    [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
]; //2D array

var convChain = new ConvChain(testSample);

Methods

convChain.setSample(sample[, sampleSize])

Same arguments as the constructor.

convChain.generate(resultSize, n, temperature, iterations[, rng])

Generate a new pattern based on the sample pattern. The generated pattern is returned as a flat Uin8Array.

var result = convChain.generate([100, 50], 3, 0.5, 4);

convChain.iterate(field, resultSize, n, temperature[, tries[, rng]])

Execute a specific number of operations on a given pattern.

var field = null;

for (var i = 0; i < 32; i++) {
    field = convChain.iterate(field, [64, 64], 3, 0.2, 128);

    // ... do something with the return pattern here
}

Changelog

1.1.0 (2016-08-25)

1.0.0 (2016-08-21)

License

MIT