18 lines
992 B
JavaScript
18 lines
992 B
JavaScript
// Four readable silhouettes. Each mostly fills the circular movement footprint.
|
|
export function bodyPath(ctx,r,morph){
|
|
ctx.beginPath();
|
|
switch(morph&3){
|
|
case 1: // tapered
|
|
ctx.moveTo(r*1.13,0);ctx.bezierCurveTo(r*.7,-r*.72,-r*.25,-r*1.04,-r*.97,-r*.48);
|
|
ctx.quadraticCurveTo(-r*1.18,0,-r*.97,r*.48);ctx.bezierCurveTo(-r*.25,r*1.04,r*.7,r*.72,r*1.13,0);break;
|
|
case 2: // rounded diamond
|
|
ctx.moveTo(r*1.12,0);ctx.quadraticCurveTo(r*.66,-r*.73,0,-r*1.06);ctx.quadraticCurveTo(-r*.65,-r*.8,-r*1.1,0);
|
|
ctx.quadraticCurveTo(-r*.65,r*.8,0,r*1.06);ctx.quadraticCurveTo(r*.66,r*.73,r*1.12,0);break;
|
|
case 3: // broad front, narrow rear
|
|
ctx.moveTo(r*1.1,0);ctx.bezierCurveTo(r*.91,-r*.75,r*.24,-r*1.13,-r*.31,-r*.89);
|
|
ctx.bezierCurveTo(-r*.83,-r*.72,-r*1.12,-r*.31,-r*1.12,0);ctx.bezierCurveTo(-r*1.12,r*.31,-r*.83,r*.72,-r*.31,r*.89);
|
|
ctx.bezierCurveTo(r*.24,r*1.13,r*.91,r*.75,r*1.1,0);break;
|
|
default:ctx.ellipse(0,0,r*1.12,r*.96,0,0,Math.PI*2);
|
|
}
|
|
ctx.closePath();
|
|
}
|