mirror of
https://github.com/direct-img/vibegif.direct-img.link.git
synced 2026-10-29 03:34:51 +00:00
Add 50 original memes as a pending section on /test
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
// deeply unimpressed cat rolls its eyes so hard the pupils spin all the way around twice, then sighs and goes back to the flat stare
|
||||
const{sin,cos,PI,min,max}=Math,T=2*PI
|
||||
const U=[0,.15,.2,.25,...Array.from({length:12},(_,k)=>.27+k*.033),.68,.74,.8,.88]
|
||||
export const frames=U.length,delay=[700,70,70,70,...Array(12).fill(45),80,90,110,600],rim=4
|
||||
const cl=u=>min(1,max(0,u)),io=u=>(u=cl(u),u*u*(3-2*u))
|
||||
const K='#1b1b1f',O='#ffa94d',OD='#f76707',M='#fff4e6'
|
||||
export default(c,_,i)=>{
|
||||
const t=U[i],tilt=io((t-.13)/.12)*(1-io((t-.68)/.12)),sp=cl((t-.25)/.42),th=-PI/2+2*T*(sp<.5?2*sp*sp:1-2*(1-sp)**2)
|
||||
const look=io((t-.13)/.12)*(1-io((t-.68)/.12)),lid=.5-.42*look,spin=t>.26&&t<.68
|
||||
c.save();c.translate(128,226);c.rotate(-.1*tilt);c.translate(-128,-226-8*tilt)
|
||||
c.strokeStyle=K;c.lineWidth=6;c.lineJoin='round'
|
||||
for(const d of[-1,1]){c.fillStyle=O;c.beginPath();c.moveTo(128+d*86,110);c.lineTo(128+d*70,22);c.lineTo(128+d*24,72);c.fill();c.stroke()
|
||||
c.fillStyle='#ffc9c9';c.beginPath();c.moveTo(128+d*74,88);c.lineTo(128+d*67,40);c.lineTo(128+d*42,68);c.fill()}
|
||||
c.fillStyle=O;c.beginPath();c.ellipse(128,146,96,80,0,0,T);c.fill();c.stroke()
|
||||
c.strokeStyle=OD;c.lineWidth=7;for(const d of[-18,0,18])c.beginPath(),c.moveTo(128+d,70),c.lineTo(128+d*.7,92),c.stroke()
|
||||
for(const d of[-1,1])for(const y of[132,152])c.beginPath(),c.moveTo(128+d*94,y),c.lineTo(128+d*76,y+4),c.stroke()
|
||||
c.strokeStyle=K;c.lineWidth=6
|
||||
c.fillStyle=M;c.beginPath();c.ellipse(128,186,46,30,0,0,T);c.fill()
|
||||
for(const d of[-1,1]){const x=128+d*38,y=136
|
||||
c.fillStyle='#fff';c.lineWidth=5;c.beginPath();c.ellipse(x,y,26,24,0,0,T);c.fill()
|
||||
c.save();c.clip()
|
||||
const pr=spin?15:look>.5?15*look:0,px=x+pr*cos(spin?th:-PI/2)+(look<.5?d*-2:0),py=y+pr*sin(spin?th:-PI/2)+(look<.5?6*(1-look):0)
|
||||
if(spin){c.strokeStyle='#adb5bd';c.lineWidth=6;c.beginPath();c.arc(x,y,15,th-1.6,th-.3);c.stroke();c.strokeStyle=K}
|
||||
c.fillStyle=K;c.beginPath();c.arc(px,py,10,0,T);c.fill();c.fillStyle='#fff';c.beginPath();c.arc(px+3,py-3,3,0,T);c.fill()
|
||||
c.fillStyle=O;c.fillRect(x-30,y-28,60,52*lid);c.restore()
|
||||
c.lineWidth=5;c.beginPath();c.ellipse(x,y,26,24,0,0,T);c.stroke()
|
||||
c.beginPath();c.moveTo(x-27,y-24+48*lid);c.lineTo(x+27,y-24+48*lid);c.stroke()}
|
||||
c.fillStyle='#f783ac';c.lineWidth=4;c.beginPath();c.moveTo(118,170);c.lineTo(138,170);c.lineTo(128,180);c.closePath();c.fill();c.stroke()
|
||||
c.beginPath();c.moveTo(128,180);c.lineTo(128,188);c.moveTo(114,196);c.quadraticCurveTo(128,192,142,196);c.stroke()
|
||||
c.lineWidth=3;for(const d of[-1,1])for(const a of[-.12,.08])c.beginPath(),c.moveTo(128+d*50,184+a*30),c.lineTo(128+d*84,180+a*120),c.stroke()
|
||||
c.restore()
|
||||
const pf=cl((t-.72)/.14)
|
||||
if(pf>0&&pf<1){c.fillStyle='#fff';c.strokeStyle=K;c.lineWidth=4;for(const[k,r]of[[0,10],[1,14],[2,11]]){const s=(1-pf)*1.6;c.beginPath();c.arc(156+34*pf+k*17,204+12*pf+(k%2?-7:5),r*s+4,0,T);c.fill();c.stroke()}}
|
||||
}
|
||||
Reference in New Issue
Block a user