mirror of
https://github.com/direct-img/vibegif.direct-img.link.git
synced 2026-10-29 19:54:51 +00:00
Add minimalist creature sections, 50 black-and-white and 50 colored
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
// pegasus flying in place: two slow wing beats per loop, legs tucked, mane and tail streaming, blinks
|
||||
const{sin,PI}=Math,T=2*PI
|
||||
export const frames=24,delay=80
|
||||
const B='#4ea8de',L='#a7d4ef',A='#ff85a8',D='#2b2633'
|
||||
export default(c,t)=>{
|
||||
const f=sin(2*T*t),w=-.52+.66*f,bl=t>.7&&t<.76
|
||||
const fill=(col,g)=>{c.fillStyle=c.strokeStyle=col;c.lineWidth=6;c.beginPath();g();c.fill();c.stroke()}
|
||||
const line=(col,lw,g)=>{c.strokeStyle=col;c.lineWidth=lw;c.beginPath();g();c.stroke()}
|
||||
const wing=(x,y,r,col)=>{c.save();c.translate(x,y);c.rotate(r);c.scale(.82,.82);fill(col,()=>{
|
||||
c.moveTo(14,4);c.quadraticCurveTo(24,-46,-12,-86);c.quadraticCurveTo(-30,-80,-30,-64)
|
||||
c.quadraticCurveTo(-44,-56,-38,-40);c.quadraticCurveTo(-46,-26,-34,-14);c.quadraticCurveTo(-30,4,-14,4)});c.restore()}
|
||||
c.translate(8,-7*sin(2*T*t+1.2))
|
||||
wing(116,110,w-.14,B)
|
||||
// tail: a tube along a curve that ripples, fuller toward the end
|
||||
const ty=152+8*sin(2*T*t-1)
|
||||
for(let s=0;s<=1;s+=.02){const u=1-s,x=u*u*u*76+3*u*u*s*56+3*u*s*s*44+s*s*s*24,y=u*u*u*134+3*u*u*s*(124+5*f)+3*u*s*s*(150-6*f)+s*s*s*ty
|
||||
c.fillStyle=A;c.beginPath();c.arc(x,y,5+5*sin(PI*s*.8),0,T);c.fill()}
|
||||
for(const[x,k]of[[138,0],[156,1]])line(B,11,()=>{c.moveTo(x,150);c.quadraticCurveTo(x+16+6*k,166+3*f,x+4+8*k,186+2*f-6*k)})
|
||||
for(const x of[84,94])line(B,11,()=>{c.moveTo(x,150);c.quadraticCurveTo(x-10,172,x-26,178-3*f)})
|
||||
// mane scallops peek out along the back of the neck
|
||||
for(let i=0;i<5;i++){const s=.15+.22*i,o=14+3*sin(2*T*t-i*.9);fill(A,()=>c.arc(146+30*s-.81*o,138-42*s-.58*o,9,0,T))}
|
||||
line(B,32,()=>{c.moveTo(146,138);c.lineTo(176,96)})
|
||||
fill(B,()=>c.ellipse(118,140,50,27,0,0,T))
|
||||
fill(B,()=>c.ellipse(190,98,24,15,.55,0,T))
|
||||
fill(B,()=>{c.moveTo(174,86);c.lineTo(178,62);c.lineTo(188,82)})
|
||||
wing(126,114,w,L)
|
||||
c.fillStyle=c.strokeStyle=D
|
||||
if(bl)c.lineWidth=3.5,c.beginPath(),c.arc(187,90,5,.15*PI,.85*PI),c.stroke()
|
||||
else c.beginPath(),c.arc(187,92,4.5,0,T),c.fill()
|
||||
}
|
||||
Reference in New Issue
Block a user