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]); }
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]; }