blobs
Version:
Random blob generation and animation
3 lines (2 loc) • 4.44 kB
JavaScript
!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((n="undefined"!=typeof globalThis?globalThis:n||self).blobs2={})}(this,function(n){"use strict";function r(n){return{x:n.x,y:n.y,handleIn:t({},n.handleIn),handleOut:t({},n.handleOut)}}function e(n,a){return u(n,function(n){var t,e,o=n.curr,r=n.next,n=n.prev,i=(t=n(),i=r(),e=i.x-t.x,i=-i.y+t.y,(t=Math.atan2(i,e))<0?Math.abs(t):2*Math.PI-t);return{x:o.x,y:o.y,handleIn:{angle:i+Math.PI,length:a*c(o,n())},handleOut:{angle:i,length:a*c(o,r())}}})}function c(n,t){return Math.sqrt(Math.pow(n.x-t.x,2)+Math.pow(n.y-t.y,2))}function i(n){try{v(n)}catch(n){throw"(blobs2): ".concat(n)}return o(l(n))}var a=function(n){var t,e,o,r,n=function(n){for(var t=2166136261,e=0;e<n.length;e++)t=Math.imul(t^n.charCodeAt(e),16777619);return function(){return(t=(t=(t=(t=(t+=t<<13)^t>>>7)+(t<<3))^t>>>17)+(t<<5))>>>0}}(n);return t=n(),e=n(),o=n(),r=n(),function(){var n=(t>>>=0)+(e>>>=0)|0;return t=e^e>>>9,e=(o>>>=0)+(o<<3)|0,o=(o=o<<21|o>>>11)+(n=n+(r=(r>>>=0)+1|0)|0)|0,(n>>>0)/4294967296}},t=function(){return(t=Object.assign||function(n){for(var t,e=1,o=arguments.length;e<o;e++)for(var r in t=arguments[e])Object.prototype.hasOwnProperty.call(t,r)&&(n[r]=t[r]);return n}).apply(this,arguments)},s=function(e,o){for(var n=function(n){function t(n){return r(e[t=e.length,(n%t+t)%t]);var t}o({curr:r(e[n]),index:n,sibling:t,prev:function(){return t(n-1)},next:function(){return t(n+1)}})},t=0;t<e.length;t++)n(t)},u=function(n,t){var e=[];return s(n,function(n){e.push(t(n))}),e},f=function(n,t){return{x:n.x+t.length*Math.cos(t.angle),y:n.y+t.length*Math.sin(t.angle)}},h=function(n,t){return n=function(n,t){for(var e=2*Math.PI/n,o=[],r=0;r<n;r++){var i=t(r),a=Math.sin(r*e),c=Math.cos(r*e);o.push({x:.5+a*i,y:.5+c*i,handleIn:{angle:0,length:0},handleOut:{angle:0,length:0}})}return o}(n,t),t=2*Math.PI/n.length,t=4/3*Math.tan(t/4)/Math.sin(t/2)/2,e(n,t)},l=function(n,t){var e=t||a(String(n.seed)),o=1/(1+n.randomness/10),t=h(3+n.extraPoints,function(n){return(o+e(n)*(1-o))/2}),r=n.size;return u(t,function(n){n=n.curr;return n.x*=r,n.y*=r,n.handleIn.length*=r,n.handleOut.length*=r,n})},o=function(n){var o="M".concat(n[0].x,",").concat(n[0].y);return s(n,function(n){var t=n.curr,n=(0,n.next)(),t=f(t,t.handleOut),e=f(n,n.handleIn);o+="C".concat(t.x,",").concat(t.y,",").concat(e.x,",").concat(e.y,",").concat(n.x,",").concat(n.y)}),o},d=function(n,t,e){var o=typeof t;if("number"===o&&isNaN(t)&&(o="NaN"),!e.includes(o="object"===o&&null===t?"null":o))throw'"'.concat(n,'" should have type "').concat(e.join("|"),'" but was "').concat(o,'".')},v=function(n){d("blobOptions",n,["object"]);var t=n.seed,e=n.extraPoints,o=n.randomness,n=n.size;if(d("blobOptions.seed",t,["string","number"]),d("blobOptions.extraPoints",e,["number"]),e<0)throw'blobOptions.extraPoints is invalid "'.concat(e,'".');if(d("blobOptions.randomness",o,["number"]),o<0)throw'blobOptions.randomness is invalid "'.concat(o,'".');if(d("blobOptions.size",n,["number"]),n<0)throw'blobOptions.size is invalid "'.concat(n,'".')};n.canvasPath=function(n,t){void 0===t&&(t={});try{v(n),d("canvasOptions",e=t,["object","undefined"]),e&&(o=e.offsetX,e=e.offsetY,d("canvasOptions.offsetX",o,["number","undefined"]),d("canvasOptions.offsetY",e,["number","undefined"]))}catch(n){throw"(blobs2): ".concat(n)}var e,o,r;return o=u(l(n),function(n){n=n.curr;return n.x+=t.offsetX||0,n.y+=t.offsetY||0,n}),r=new Path2D,o.length<1||(r.moveTo(o[0].x,o[0].y),s(o,function(n){var t=n.curr,n=(0,n.next)(),t=f(t,t.handleOut),e=f(n,n.handleIn);r.bezierCurveTo(t.x,t.y,e.x,e.y,n.x,n.y)})),r},n.svg=function(n,t){void 0===t&&(t={});try{v(n),d("svgOptions",r=t,["object","undefined"]),r&&(e=r.fill,o=r.stroke,r=r.strokeWidth,d("svgOptions.fill",e,["string","undefined"]),d("svgOptions.stroke",o,["string","undefined"]),d("svgOptions.strokeWidth",r,["number","undefined"]))}catch(n){throw"(blobs2): ".concat(n)}var e=i(n),o=Math.floor(n.size),r=void 0===t.fill?"#ec576b":t.fill,n=void 0===t.stroke?"none":t.stroke,t=void 0===t.strokeWidth?0:t.strokeWidth;return'\n<svg width="'.concat(o,'" height="').concat(o,'" viewBox="0 0 ').concat(o," ").concat(o,'" xmlns="http://www.w3.org/2000/svg">\n <path stroke="').concat(n,'" stroke-width="').concat(t,'" fill="').concat(r,'" d="').concat(e,'"/>\n</svg>').trim()},n.svgPath=i});
//# sourceMappingURL=index.js.map