GradienceDesign/Backgrounds/purple-l.svg

43 lines
44 KiB
XML
Raw Normal View History

2023-06-07 22:44:30 +00:00
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="visual" width="4096" height="4096" version="1.1">
<defs id="defs24901">
<linearGradient id="linearGradient18394">
<stop id="stop18390" offset="0" style="stop-color:#9f9f9f;stop-opacity:1"/>
<stop id="stop18392" offset="1" style="stop-color:#c2c2c2;stop-opacity:1"/>
</linearGradient>
<linearGradient xlink:href="#linearGradient12824" id="linearGradient12826" x1="362.05" x2="3348.83" y1="4096" y2="747.162" gradientUnits="userSpaceOnUse"/>
<linearGradient id="linearGradient12824">
<stop id="stop12820" offset="0" style="stop-color:#d64700;stop-opacity:1"/>
<stop id="stop12822" offset="1" style="stop-color:#301200;stop-opacity:1"/>
</linearGradient>
<linearGradient xlink:href="#linearGradient18394" id="linearGradient750" x1="127.831" x2="4096" y1="3977.89" y2="9.721" gradientUnits="userSpaceOnUse"/>
<script id="mesh_polyfill-7" type="text/javascript">
!function(){const t=&quot;http://www.w3.org/2000/svg&quot;,e=&quot;http://www.w3.org/1999/xlink&quot;,s=&quot;http://www.w3.org/1999/xhtml&quot;,r=2;if(document.createElementNS(t,&quot;meshgradient&quot;).x)return;const n=(t,e,s,r)=&gt;{let n=new x(.5*(e.x+s.x),.5*(e.y+s.y)),o=new x(.5*(t.x+e.x),.5*(t.y+e.y)),i=new x(.5*(s.x+r.x),.5*(s.y+r.y)),a=new x(.5*(n.x+o.x),.5*(n.y+o.y)),h=new x(.5*(n.x+i.x),.5*(n.y+i.y)),l=new x(.5*(a.x+h.x),.5*(a.y+h.y));return[[t,o,a,l],[l,h,i,r]]},o=t=&gt;{let e=t[0].distSquared(t[1]),s=t[2].distSquared(t[3]),r=.25*t[0].distSquared(t[2]),n=.25*t[1].distSquared(t[3]),o=e&gt;s?e:s,i=r&gt;n?r:n;return 18*(o&gt;i?o:i)},i=(t,e)=&gt;Math.sqrt(t.distSquared(e)),a=(t,e)=&gt;t.scale(2/3).add(e.scale(1/3)),h=t=&gt;{let e,s,r,n,o,i,a,h=new g;return t.match(/(\w+\(\s*[^)]+\))+/g).forEach(t=&gt;{let l=t.match(/[\w.-]+/g),d=l.shift();switch(d){case&quot;translate&quot;:2===l.length?e=new g(1,0,0,1,l[0],l[1]):(console.error(&quot;mesh.js: translate does not have 2 arguments!&quot;),e=new g(1,0,0,1,0,0)),h=h.append(e);break;case&quot;scale&quot;:1===l.length?s=new g(l[0],0,0,l[0],0,0):2===l.length?s=new g(l[0],0,0,l[1],0,0):(console.error(&quot;mesh.js: scale does not have 1 or 2 arguments!&quot;),s=new g(1,0,0,1,0,0)),h=h.append(s);break;case&quot;rotate&quot;:if(3===l.length&amp;&amp;(e=new g(1,0,0,1,l[1],l[2]),h=h.append(e)),l[0]){r=l[0]*Math.PI/180;let t=Math.cos(r),e=Math.sin(r);Math.abs(t)&lt;1e-16&amp;&amp;(t=0),Math.abs(e)&lt;1e-16&amp;&amp;(e=0),a=new g(t,e,-e,t,0,0),h=h.append(a)}else console.error(&quot;math.js: No argument to rotate transform!&quot;);3===l.length&amp;&amp;(e=new g(1,0,0,1,-l[1],-l[2]),h=h.append(e));break;case&quot;skewX&quot;:l[0]?(r=l[0]*Math.PI/180,n=Math.tan(r),o=new g(1,0,n,1,0,0),h=h.append(o)):console.error(&quot;math.js: No argument to skewX transform!&quot;);break;case&quot;skewY&quot;:l[0]?(r=l[0]*Math.PI/180,n=Math.tan(r),i=new g(1,n,0,1,0,0),h=h.append(i)):console.error(&quot;math.js: No argument to skewY transform!&quot;);break;case&quot;matrix&quot;:6===l.length?h=h.append(new g(...l)):console.error(&quot;math.js: Incorrect number of arguments for matrix!&quot;);break;default:console.error(&quot;mesh.js: Unhandled transform type: &quot;+d)}}),h},l=t=&gt;{let e=[],s=t.split(/[ ,]+/);for(let t=0,r=s.length-1;t&lt;r;t+=2)e.push(new x(parseFloat(s[t]),parseFloat(s[t+1])));return e},d=(t,e)=&gt;{for(let s in e)t.setAttribute(s,e[s])},c=(t,e,s,r,n)=&gt;{let o,i,a=[0,0,0,0];for(let h=0;h&lt;3;++h)e[h]&lt;t[h]&amp;&amp;e[h]&lt;s[h]||t[h]&lt;e[h]&amp;&amp;s[h]&lt;e[h]?a[h]=0:(a[h]=.5*((e[h]-t[h])/r+(s[h]-e[h])/n),o=Math.abs(3*(e[h]-t[h])/r),i=Math.abs(3*(s[h]-e[h])/n),a[h]&gt;o?a[h]=o:a[h]&gt;i&amp;&amp;(a[h]=i));return a},u=[[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0],[-3,3,0,0,-2,-1,0,0,0,0,0,0,0,0,0,0],[2,-2,0,0,1,1,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0],[0,0,0,0,0,0,0,0,-3,3,0,0,-2,-1,0,0],[0,0,0,0,0,0,0,0,2,-2,0,0,1,1,0,0],[-3,0,3,0,0,0,0,0,-2,0,-1,0,0,0,0,0],[0,0,0,0,-3,0,3,0,0,0,0,0,-2,0,-1,0],[9,-9,-9,9,6,3,-6,-3,6,-6,3,-3,4,2,2,1],[-6,6,6,-6,-3,-3,3,3,-4,4,-2,2,-2,-2,-1,-1],[2,0,-2,0,0,0,0,0,1,0,1,0,0,0,0,0],[0,0,0,0,2,0,-2,0,0,0,0,0,1,0,1,0],[-6,6,6,-6,-4,-2,4,2,-3,3,-3,3,-2,-1,-2,-1],[4,-4,-4,4,2,2,-2,-2,2,-2,2,-2,1,1,1,1]],f=t=&gt;{let e=[];for(let s=0;s&lt;16;++s){e[s]=0;for(let r=0;r&lt;16;++r)e[s]+=u[s][r]*t[r]}return e},p=(t,e,s)=&gt;{const r=e*e,n=s*s,o=e*e*e,i=s*s*s;return t[0]+t[1]*e+t[2]*r+t[3]*o+t[4]*s+t[5]*s*e+t[6]*s*r+t[7]*s*o+t[8]*n+t[9]*n*e+t[10]*n*r+t[11]*n*o+t[12]*i+t[13]*i*e+t[14]*i*r+t[15]*i*o},y=t=&gt;{let e=[],s=[],r=[];for(let s=0;s&lt;4;++s)e[s]=[],e[s][0]=n(t[0][s],t[1][s],t[2][s],t[3][s]),e[s][1]=[],e[s][1].push(...n(...e[s][0][0])),e[s][1].push(...n(...e[s][0][1])),e[s][2]=[],e[s][2].push(...n(...e[s][1][0])),e[s][2].push(...n(...e[s][1][1])),e[s][2].push(...n(...e[s][1][2])),e[s][2].push(...n(...e[s][1][3]));for(let t=0;t&lt;8;++t){s[t]=[];for(let r=0;r&lt;4;++r)s[t][r]=[],s[t][r][0]=n(e[0][2][t][r],e[1][2][t][r],e[2][2][t][r],e[3][2][t][r]),s[t][r][1]=[
</script>
</defs>
<g id="layer1" style="display:inline">
<path id="rect24894" fill="#2ec27e" d="M0 0h4096v4096H0z" style="font-variation-settings:normal;vector-effect:none;fill:#241f31;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000"/>
<path id="path25008" fill="#00be8d" d="M4096 2896.3c-244.6-26.2-489.2-52.4-749.6-98.7-260.5-46.3-536.8-112.7-693.4-298.3-156.6-185.5-193.3-490.1-396.2-660.1-202.9-170-571.8-205.4-666.2-392.7-94.4-187.3 85.8-526.6 66.4-793-19.3-266.4-238.3-459.9-457.3-653.5H4096Z" style="font-variation-settings:normal;vector-effect:none;fill:#613583;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000"/>
<path id="path25010" fill="#00b2ab" d="M4096 2534.3c-214-22.9-428-45.9-655.9-86.4-227.9-40.5-469.7-98.6-606.7-261-137-162.3-169.2-428.9-346.7-577.6-177.5-148.8-500.4-179.7-582.9-343.6-82.6-163.9 75.1-460.8 58.1-693.9-17-233.1-208.6-402.4-400.2-571.8H4096Z" style="font-variation-settings:normal;vector-effect:none;fill:#813d9c;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000"/>
<path id="path25012" fill="#00a5c6" d="M4096 2172.2c-183.4-19.6-366.9-39.3-562.2-74-195.4-34.7-402.6-84.5-520-223.7-117.5-139.1-145-367.6-297.2-495.1-152.1-127.5-428.9-154-499.7-294.5-70.7-140.5 64.4-395 49.9-594.8-14.6-199.8-178.8-344.9-343-490.1H4096Z" style="font-variation-settings:normal;vector-effect:none;fill:#9141ac;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000"/>
<path id="path25014" fill="#0095d8" d="M4096 1810.2c-152.9-16.4-305.7-32.7-468.5-61.7-162.8-28.9-335.5-70.4-433.4-186.4-97.8-116-120.8-306.4-247.6-412.6-126.8-106.3-357.4-128.4-416.4-245.4-59-117.1 53.7-329.1 41.5-495.7C2559.5 241.9 2422.7 121 2285.8 0H4096Z" style="font-variation-settings:normal;vector-effect:none;fill:#c061cb;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000"/>
<path id="path25016" fill="#0081db" d="M4096 1448.15c-122.3-13.1-244.6-26.2-374.8-49.4-130.2-23.1-268.4-56.4-346.7-149.1-78.3-92.8-96.7-245.1-198.1-330.1-101.4-85-285.9-102.7-333.1-196.3-47.2-93.7 42.9-263.3 33.2-396.5-9.7-133.2-119.2-230-228.7-326.8H4096Z" style="font-variation-settings:normal;vector-effect:none;fill:#dc8add;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000"/>
<path id="path25018" fill="#1569cd" d="M4096 1086.1c-91.7-9.8-183.4-19.6-281.1-37-97.7-17.4-201.3-42.3-260-111.8-58.7-69.6-72.5-183.9-148.6-247.6-76.1-63.8-214.4-77-249.8-147.3-35.4-70.2 32.2-197.4 24.9-297.3-7.3-99.9-89.4-172.5-171.5-245.1H4096Z" style="font-variation-settings:normal;vector-effect:none;fill:#e5a50a;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000"/>
<path id="path25020" fill="#6e4daf" d="M4096 724.1c-61.1-6.6-122.3-13.1-187.4-24.7-65.1-11.6-134.2-28.2-173.3-74.6-39.2-46.3-48.4-122.5-99.1-165-50.7-42.5-143-51.3-166.6-98.2-23.5-46.8 21.5-131.6 16.7-198.2-4.9-66.6-59.6-115-114.4-163.4H4096Z" style="font-variation-settings:normal;vector-effect:none;fill:#f5c211;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000"/>
<path id="path25022" fill="#813d9c" d="M4096 362c-30.6-3.2-61.1-6.5-93.7-12.3-32.6-5.8-67.1-14.1-86.7-37.3-19.5-23.2-24.1-61.3-49.5-82.5-25.4-21.3-71.5-25.7-83.3-49.1-11.8-23.4 10.8-65.8 8.3-99.1-2.4-33.3-29.8-57.5-57.1-81.7h362z" style="fill:#f6d32d;fill-opacity:1"/>
<path id="path26767" d="M0 1199.7c200.5 189.8 401 379.6 669.3 398.4 268.3 18.9 604.4-133.2 778.9-10.4 174.4 122.9 187.2 520.6 312.5 747.6 125.3 227 363 283.3 555.1 423.7 192 140.4 338.3 365.1 427.4 602 89.2 236.8 121.1 485.9 153.1 735H0Z" style="fill:#613583;fill-opacity:1;stroke-width:1px;stroke-opacity:1;stop-color:#000"/>
<path id="path26773" d="M0 1561.7c175.4 166.1 350.9 332.2 585.6 348.7 234.8 16.4 528.9-116.6 681.5-9.1 152.7 107.4 163.9 455.5 273.5 654.1 109.6 198.6 317.7 247.8 485.7 370.7 168 122.9 296 319.5 374 526.7 78 207.3 106 425.2 134 643.2H0Z" style="fill:#9141ac;fill-opacity:1;stroke-width:1px;stroke-opacity:1;stop-color:#000"/>
<path id="path25028" fill="#00b2ab" d="M0 1561.7c175.4 166.1 350.9 332.2 585.6 348.7 234.8 16.4 528.9-116.6 681.5-9.1 152.7 107.4 163.9 455.5 273.5 654.1 109.6 198.6 317.7 247.8 485.7 370.7 168 122.9 296 319.5 374 526.7 78 207.3 106 425.2 134 643.2H0Z" style="font-variation-settings:normal;vector-effect:none;fill:#813d9c;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000"/>
<path id="path25030" fill="#00a5c6" d="M0 1923.8c150.4 142.3 300.8 284.6 502 298.8 201.2 14.1 453.3-99.9 584.1-7.8 130.9 92.1 140.5 390.4 234.4 560.7 94 170.2 272.3 212.4 416.3 317.7 144 105.4 253.8 273.9 320.6 451.5 66.9 177.7 90.9 364.5 114.8 551.3H0Z" style="font-variation-settings:normal;vector-effect:none;fill:#9141ac;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000"/>
<path id="path27067" d="M0 2172.2c122.835 137.705 269.1 249.544 433.424 263.285 164.324 13.645 370.219-96.674 477.046-7.548 106.908 89.126 91.319 225.404 168.009 390.205 76.772 164.704 222.393 205.54 340 307.44 117.608 101.997 207.284 265.056 261.841 436.92 54.639 171.962 74.24 352.73 93.76 533.498H0Z" style="fill:#c061cb;fill-opacity:1;stroke-width:.91868px;stroke-opacity:1;stop-color:#000"/>
<path id="path27938" d="M0 2647.8c100.3 94.9 200.5 189.8 334.7 199.3 134.1 9.4 302.2-66.7 389.4-5.2 87.2 61.4 93.6 260.3 156.2 373.8 62.7 113.5 181.6 141.6 277.6 211.8 96 70.2 169.1 182.5 213.7 301 44.6 118.4 60.6 243 76.6 367.5H0Z" style="fill:#dc8add;fill-opacity:1;stroke-width:1px;stroke-opacity:1;stop-color:#000"/>
<path id="path27946" d="M0 3009.9c75.2 71.2 150.4 142.3 251 149.4 100.6 7.1 226.6-50 292.1-3.9 65.4 46.1 70.2 195.2 117.2 280.3 46.9 85.2 136.1 106.3 208.1 158.9 72 52.7 126.9 136.9 160.3 225.8 33.4 88.8 45.4 182.2 57.4 275.6H0Z" style="fill:#e5a50a;fill-opacity:1;stroke-width:1px;stroke-opacity:1;stop-color:#000"/>
<path id="path25038" fill="#6e4daf" d="M0 3371.9c50.1 47.5 100.3 94.9 167.3 99.6 67.1 4.7 151.1-33.3 194.7-2.6 43.7 30.7 46.9 130.2 78.2 186.9 31.3 56.8 90.7 70.8 138.7 105.9 48 35.2 84.6 91.3 106.9 150.5 22.3 59.3 30.3 121.5 38.3 183.8H0Z" style="font-variation-settings:normal;vector-effect:none;fill:#9141ac;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000"/>
<path id="path25040" fill="#813d9c" d="M0 3734c25.1 23.7 50.1 47.4 83.7 49.8 33.5 2.3 75.5-16.7 97.3-1.3 21.8 15.3 23.4 65 39.1 93.4 15.6 28.4 45.4 35.4 69.4 53 24 17.5 42.3 45.6 53.4 75.2 11.1 29.6 15.1 60.8 19.1 91.9H0Z" style="fill:#9141ac;fill-opacity:1"/>
<path id="path27705" d="M0 3371.9c50.1 47.5 100.3 94.9 167.3 99.6 67.1 4.7 151.1-33.3 194.7-2.6 43.7 30.7 46.9 130.2 78.2 186.9 31.3 56.8 90.7 70.8 138.7 105.9 48 35.2 84.6 91.3 106.9 150.5 22.3 59.3 30.3 121.5 38.3 183.8H0Z" style="fill:#f5c211;fill-opacity:1;stroke-width:1px;stroke-opacity:1;stop-color:#000"/>
<path id="path27719" d="M0 3734c25.1 23.7 50.1 47.4 83.7 49.8 33.5 2.3 75.5-16.7 97.3-1.3 21.8 15.3 23.4 65 39.1 93.4 15.6 28.4 45.4 35.4 69.4 53 24 17.5 42.3 45.6 53.4 75.2 11.1 29.6 15.1 60.8 19.1 91.9H0Z" style="fill:#f6d32d;fill-opacity:1;stroke-width:1px;stroke-opacity:1;stop-color:#000"/>
</g>
<script id="mesh_polyfill" type="text/javascript">
!function(){const t=&quot;http://www.w3.org/2000/svg&quot;,e=&quot;http://www.w3.org/1999/xlink&quot;,s=&quot;http://www.w3.org/1999/xhtml&quot;,r=2;if(document.createElementNS(t,&quot;meshgradient&quot;).x)return;const n=(t,e,s,r)=&gt;{let n=new x(.5*(e.x+s.x),.5*(e.y+s.y)),o=new x(.5*(t.x+e.x),.5*(t.y+e.y)),i=new x(.5*(s.x+r.x),.5*(s.y+r.y)),a=new x(.5*(n.x+o.x),.5*(n.y+o.y)),h=new x(.5*(n.x+i.x),.5*(n.y+i.y)),l=new x(.5*(a.x+h.x),.5*(a.y+h.y));return[[t,o,a,l],[l,h,i,r]]},o=t=&gt;{let e=t[0].distSquared(t[1]),s=t[2].distSquared(t[3]),r=.25*t[0].distSquared(t[2]),n=.25*t[1].distSquared(t[3]),o=e&gt;s?e:s,i=r&gt;n?r:n;return 18*(o&gt;i?o:i)},i=(t,e)=&gt;Math.sqrt(t.distSquared(e)),a=(t,e)=&gt;t.scale(2/3).add(e.scale(1/3)),h=t=&gt;{let e,s,r,n,o,i,a,h=new g;return t.match(/(\w+\(\s*[^)]+\))+/g).forEach(t=&gt;{let l=t.match(/[\w.-]+/g),d=l.shift();switch(d){case&quot;translate&quot;:2===l.length?e=new g(1,0,0,1,l[0],l[1]):(console.error(&quot;mesh.js: translate does not have 2 arguments!&quot;),e=new g(1,0,0,1,0,0)),h=h.append(e);break;case&quot;scale&quot;:1===l.length?s=new g(l[0],0,0,l[0],0,0):2===l.length?s=new g(l[0],0,0,l[1],0,0):(console.error(&quot;mesh.js: scale does not have 1 or 2 arguments!&quot;),s=new g(1,0,0,1,0,0)),h=h.append(s);break;case&quot;rotate&quot;:if(3===l.length&amp;&amp;(e=new g(1,0,0,1,l[1],l[2]),h=h.append(e)),l[0]){r=l[0]*Math.PI/180;let t=Math.cos(r),e=Math.sin(r);Math.abs(t)&lt;1e-16&amp;&amp;(t=0),Math.abs(e)&lt;1e-16&amp;&amp;(e=0),a=new g(t,e,-e,t,0,0),h=h.append(a)}else console.error(&quot;math.js: No argument to rotate transform!&quot;);3===l.length&amp;&amp;(e=new g(1,0,0,1,-l[1],-l[2]),h=h.append(e));break;case&quot;skewX&quot;:l[0]?(r=l[0]*Math.PI/180,n=Math.tan(r),o=new g(1,0,n,1,0,0),h=h.append(o)):console.error(&quot;math.js: No argument to skewX transform!&quot;);break;case&quot;skewY&quot;:l[0]?(r=l[0]*Math.PI/180,n=Math.tan(r),i=new g(1,n,0,1,0,0),h=h.append(i)):console.error(&quot;math.js: No argument to skewY transform!&quot;);break;case&quot;matrix&quot;:6===l.length?h=h.append(new g(...l)):console.error(&quot;math.js: Incorrect number of arguments for matrix!&quot;);break;default:console.error(&quot;mesh.js: Unhandled transform type: &quot;+d)}}),h},l=t=&gt;{let e=[],s=t.split(/[ ,]+/);for(let t=0,r=s.length-1;t&lt;r;t+=2)e.push(new x(parseFloat(s[t]),parseFloat(s[t+1])));return e},d=(t,e)=&gt;{for(let s in e)t.setAttribute(s,e[s])},c=(t,e,s,r,n)=&gt;{let o,i,a=[0,0,0,0];for(let h=0;h&lt;3;++h)e[h]&lt;t[h]&amp;&amp;e[h]&lt;s[h]||t[h]&lt;e[h]&amp;&amp;s[h]&lt;e[h]?a[h]=0:(a[h]=.5*((e[h]-t[h])/r+(s[h]-e[h])/n),o=Math.abs(3*(e[h]-t[h])/r),i=Math.abs(3*(s[h]-e[h])/n),a[h]&gt;o?a[h]=o:a[h]&gt;i&amp;&amp;(a[h]=i));return a},u=[[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0],[-3,3,0,0,-2,-1,0,0,0,0,0,0,0,0,0,0],[2,-2,0,0,1,1,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0],[0,0,0,0,0,0,0,0,-3,3,0,0,-2,-1,0,0],[0,0,0,0,0,0,0,0,2,-2,0,0,1,1,0,0],[-3,0,3,0,0,0,0,0,-2,0,-1,0,0,0,0,0],[0,0,0,0,-3,0,3,0,0,0,0,0,-2,0,-1,0],[9,-9,-9,9,6,3,-6,-3,6,-6,3,-3,4,2,2,1],[-6,6,6,-6,-3,-3,3,3,-4,4,-2,2,-2,-2,-1,-1],[2,0,-2,0,0,0,0,0,1,0,1,0,0,0,0,0],[0,0,0,0,2,0,-2,0,0,0,0,0,1,0,1,0],[-6,6,6,-6,-4,-2,4,2,-3,3,-3,3,-2,-1,-2,-1],[4,-4,-4,4,2,2,-2,-2,2,-2,2,-2,1,1,1,1]],f=t=&gt;{let e=[];for(let s=0;s&lt;16;++s){e[s]=0;for(let r=0;r&lt;16;++r)e[s]+=u[s][r]*t[r]}return e},p=(t,e,s)=&gt;{const r=e*e,n=s*s,o=e*e*e,i=s*s*s;return t[0]+t[1]*e+t[2]*r+t[3]*o+t[4]*s+t[5]*s*e+t[6]*s*r+t[7]*s*o+t[8]*n+t[9]*n*e+t[10]*n*r+t[11]*n*o+t[12]*i+t[13]*i*e+t[14]*i*r+t[15]*i*o},y=t=&gt;{let e=[],s=[],r=[];for(let s=0;s&lt;4;++s)e[s]=[],e[s][0]=n(t[0][s],t[1][s],t[2][s],t[3][s]),e[s][1]=[],e[s][1].push(...n(...e[s][0][0])),e[s][1].push(...n(...e[s][0][1])),e[s][2]=[],e[s][2].push(...n(...e[s][1][0])),e[s][2].push(...n(...e[s][1][1])),e[s][2].push(...n(...e[s][1][2])),e[s][2].push(...n(...e[s][1][3]));for(let t=0;t&lt;8;++t){s[t]=[];for(let r=0;r&lt;4;++r)s[t][r]=[],s[t][r][0]=n(e[0][2][t][r],e[1][2][t][r],e[2][2][t][r],e[3][2][t][r]),s[t][r][1]=[],s[
</script>
</svg>