Esempio n. 1
0
MonoSpiral.prototype.shader = function(coords, led_num, tent_coords, lantern_num)
{
	var x = coords.point[0] + tent_coords.point[0];
	var y = coords.point[1] + tent_coords.point[1];
	var z = coords.point[2] + tent_coords.point[2];

    var resolution = Pattern.resolution();

    var r = new Vector([resolution[0], resolution[1]]);
    var xy = new Vector([x, y]);
    r.multiply(0.1);
    xy.subtract(r).divide(resolution[1]);
    
    var s = 0.0;

    for (var i = 0; i < 20; i++) {
        var sin = new Vector([
            Math.sin(s - 3 * this.offset + 1.6),
            Math.sin(s - 3 * this.offset + 0)
        ]);
        var txy = new Vector(xy);
        txy.multiply(s).add(sin);
        s += txy.length - 1.5;
    }

    var result = new Vector([1,2,3]);//[256, 512, 768]);
    result.divide(s * s).multiply(500);
    result.clamp(0, 250);

    var hsv = colorUtils.toHsv(result.array);
    return colorUtils.hsv(hsv[0] + this.hue, hsv[1], hsv[2]);
}
Esempio n. 2
0
HypnoRipple.prototype.shader = function(coords, led_num, tent_coords)
{
	var x = coords.point[0] + tent_coords.point[0];
	var y = coords.point[1] + tent_coords.point[1];
	var z = coords.point[2] + tent_coords.point[2];

    var normalized = Pattern.normalizeCoords(x, y, z);
    var center = [0.5, 0.5];
    var resolution = Pattern.resolution();
    var ratio = resolution[1] / resolution[0];

    var col = [normalized[0], normalized[1], 0.5 + 0.5 * Math.sin(this.offset)];
    var xC = center[0] - normalized[0];
    var yC = (center[1] - normalized[1]) * ratio;

    var r = (xC * xC + yC * yC) * -1.0;
    var zC = (0.5 + 0.5 * Math.sin((r + this.offset) / 0.1)) * 255;

    return [ col[0] * zC, col[1] * zC, col[2] * zC];
}