This commit is contained in:
吴红兵
2026-03-07 01:34:48 +08:00
parent adc511cfdc
commit 94c3473958
1211 changed files with 599405 additions and 322105 deletions

View File

@@ -1 +1,107 @@
const c=Math.PI,x=2*c,u=1e-6,m=x-u;function E(e){this._+=e[0];for(let t=1,h=e.length;t<h;++t)this._+=arguments[t]+e[t]}function A(e){let t=Math.floor(e);if(!(t>=0))throw new Error(`invalid digits: ${e}`);if(t>15)return E;const h=10**t;return function(i){this._+=i[0];for(let s=1,n=i.length;s<n;++s)this._+=Math.round(arguments[s]*h)/h+i[s]}}class L{constructor(t){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=t==null?E:A(t)}moveTo(t,h){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+h}`}closePath(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(t,h){this._append`L${this._x1=+t},${this._y1=+h}`}quadraticCurveTo(t,h,i,s){this._append`Q${+t},${+h},${this._x1=+i},${this._y1=+s}`}bezierCurveTo(t,h,i,s,n,$){this._append`C${+t},${+h},${+i},${+s},${this._x1=+n},${this._y1=+$}`}arcTo(t,h,i,s,n){if(t=+t,h=+h,i=+i,s=+s,n=+n,n<0)throw new Error(`negative radius: ${n}`);let $=this._x1,r=this._y1,p=i-t,l=s-h,_=$-t,o=r-h,a=_*_+o*o;if(this._x1===null)this._append`M${this._x1=t},${this._y1=h}`;else if(a>u)if(!(Math.abs(o*p-l*_)>u)||!n)this._append`L${this._x1=t},${this._y1=h}`;else{let d=i-$,f=s-r,y=p*p+l*l,T=d*d+f*f,g=Math.sqrt(y),v=Math.sqrt(a),w=n*Math.tan((c-Math.acos((y+a-T)/(2*g*v)))/2),M=w/v,b=w/g;Math.abs(M-1)>u&&this._append`L${t+M*_},${h+M*o}`,this._append`A${n},${n},0,0,${+(o*d>_*f)},${this._x1=t+b*p},${this._y1=h+b*l}`}}arc(t,h,i,s,n,$){if(t=+t,h=+h,i=+i,$=!!$,i<0)throw new Error(`negative radius: ${i}`);let r=i*Math.cos(s),p=i*Math.sin(s),l=t+r,_=h+p,o=1^$,a=$?s-n:n-s;this._x1===null?this._append`M${l},${_}`:(Math.abs(this._x1-l)>u||Math.abs(this._y1-_)>u)&&this._append`L${l},${_}`,i&&(a<0&&(a=a%x+x),a>m?this._append`A${i},${i},0,1,${o},${t-r},${h-p}A${i},${i},0,1,${o},${this._x1=l},${this._y1=_}`:a>u&&this._append`A${i},${i},0,${+(a>=c)},${o},${this._x1=t+i*Math.cos(n)},${this._y1=h+i*Math.sin(n)}`)}rect(t,h,i,s){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+h}h${i=+i}v${+s}h${-i}Z`}toString(){return this._}}function P(e){return function(){return e}}function q(e){let t=3;return e.digits=function(h){if(!arguments.length)return t;if(h==null)t=null;else{const i=Math.floor(h);if(!(i>=0))throw new RangeError(`invalid digits: ${h}`);t=i}return e},()=>new L(t)}export{P as c,q as w};
const c = Math.PI,
x = 2 * c,
u = 1e-6,
m = x - u;
function E(e) {
this._ += e[0];
for (let t = 1, h = e.length; t < h; ++t) this._ += arguments[t] + e[t];
}
function A(e) {
let t = Math.floor(e);
if (!(t >= 0)) throw new Error(`invalid digits: ${e}`);
if (t > 15) return E;
const h = 10 ** t;
return function (i) {
this._ += i[0];
for (let s = 1, n = i.length; s < n; ++s) this._ += Math.round(arguments[s] * h) / h + i[s];
};
}
class L {
constructor(t) {
(this._x0 = this._y0 = this._x1 = this._y1 = null), (this._ = ''), (this._append = t == null ? E : A(t));
}
moveTo(t, h) {
this._append`M${(this._x0 = this._x1 = +t)},${(this._y0 = this._y1 = +h)}`;
}
closePath() {
this._x1 !== null && ((this._x1 = this._x0), (this._y1 = this._y0), this._append`Z`);
}
lineTo(t, h) {
this._append`L${(this._x1 = +t)},${(this._y1 = +h)}`;
}
quadraticCurveTo(t, h, i, s) {
this._append`Q${+t},${+h},${(this._x1 = +i)},${(this._y1 = +s)}`;
}
bezierCurveTo(t, h, i, s, n, $) {
this._append`C${+t},${+h},${+i},${+s},${(this._x1 = +n)},${(this._y1 = +$)}`;
}
arcTo(t, h, i, s, n) {
if (((t = +t), (h = +h), (i = +i), (s = +s), (n = +n), n < 0)) throw new Error(`negative radius: ${n}`);
let $ = this._x1,
r = this._y1,
p = i - t,
l = s - h,
_ = $ - t,
o = r - h,
a = _ * _ + o * o;
if (this._x1 === null) this._append`M${(this._x1 = t)},${(this._y1 = h)}`;
else if (a > u)
if (!(Math.abs(o * p - l * _) > u) || !n) this._append`L${(this._x1 = t)},${(this._y1 = h)}`;
else {
let d = i - $,
f = s - r,
y = p * p + l * l,
T = d * d + f * f,
g = Math.sqrt(y),
v = Math.sqrt(a),
w = n * Math.tan((c - Math.acos((y + a - T) / (2 * g * v))) / 2),
M = w / v,
b = w / g;
Math.abs(M - 1) > u && this._append`L${t + M * _},${h + M * o}`,
this._append`A${n},${n},0,0,${+(o * d > _ * f)},${(this._x1 = t + b * p)},${(this._y1 = h + b * l)}`;
}
}
arc(t, h, i, s, n, $) {
if (((t = +t), (h = +h), (i = +i), ($ = !!$), i < 0)) throw new Error(`negative radius: ${i}`);
let r = i * Math.cos(s),
p = i * Math.sin(s),
l = t + r,
_ = h + p,
o = 1 ^ $,
a = $ ? s - n : n - s;
this._x1 === null ? this._append`M${l},${_}` : (Math.abs(this._x1 - l) > u || Math.abs(this._y1 - _) > u) && this._append`L${l},${_}`,
i &&
(a < 0 && (a = (a % x) + x),
a > m
? this._append`A${i},${i},0,1,${o},${t - r},${h - p}A${i},${i},0,1,${o},${(this._x1 = l)},${(this._y1 = _)}`
: a > u && this._append`A${i},${i},0,${+(a >= c)},${o},${(this._x1 = t + i * Math.cos(n))},${(this._y1 = h + i * Math.sin(n))}`);
}
rect(t, h, i, s) {
this._append`M${(this._x0 = this._x1 = +t)},${(this._y0 = this._y1 = +h)}h${(i = +i)}v${+s}h${-i}Z`;
}
toString() {
return this._;
}
}
function P(e) {
return function () {
return e;
};
}
function q(e) {
let t = 3;
return (
(e.digits = function (h) {
if (!arguments.length) return t;
if (h == null) t = null;
else {
const i = Math.floor(h);
if (!(i >= 0)) throw new RangeError(`invalid digits: ${h}`);
t = i;
}
return e;
}),
() => new L(t)
);
}
export { P as c, q as w };