jcanvas
Version:
jCanvas brings jQuery's powerful syntax and capability to the HTML5 canvas. Quickly create canvas-based apps that can utilize layers, animations, events, and much more. jCanvas works on all modern browsers and platforms, including iOS and Android.
3 lines (2 loc) • 1.01 kB
JavaScript
(function(a,t){typeof exports=="object"&&typeof module<"u"?t(require("jquery")):typeof define=="function"&&define.amd?define(["jquery"],t):(a=typeof globalThis<"u"?globalThis:a||self,t(a.$))})(this,function(a){"use strict";const t=Math.pow,p=Math.sqrt,f=Math.PI;function y(i,n,c,o,d,u){const r=o-i,e=d-n,s=p(t(r,2)+t(e,2)),h=(t(s,2)+t(c,2)-t(u,2))/(2*s),j=i+r*h/s,x=n+e*h/s,l=p(t(c,2)-t(h,2)),v=-e*(l/s),C=r*(l/s),M=j+v,b=x+C;return s>c+u||s<Math.abs(c-u)?null:[M,b]}a.jCanvas.extend({name:"drawCrescent",type:"crescent",props:{eclipse:.5},fn:function(i,n){const c=2*n.radius*(1-n.eclipse),o=y(n.x,n.y,n.radius,n.x+c,n.y,n.radius);if(!o)return;const d=o[0]-n.x,u=o[1]-n.y,r=Math.atan2(u,d);let e,s;n.eclipse<=0?(e=0,s=2*f):(e=r,s=-r),n.eclipse<1&&(a.jCanvas.transformShape(this,i,n),i.beginPath(),i.arc(n.x,n.y,n.radius,e,s,!1),n.eclipse>0&&i.arc(n.x+c,n.y,n.radius,f+e,f+s,!0),a.jCanvas.detectEvents(this,i,n),n.closed=!0,a.jCanvas.closePath(this,i,n))}})});
//# sourceMappingURL=jcanvas-crescents.min.js.map