*

\ --- x y position for hole ---
: xh ( -- x )
x .5 - t sin .05 * - ;
: yh ( -- y )
y .5 - t sin .01 * - ;
\ --- x y position for wings ---
: xw ( -- xw )
xh 11 * ;
: yw ( -- yw )
yh .11 +
t sin 33 / - 11 * ;
\ --- position to radius ---
: r ( x y -- r )
dup * swap dup * + sqrt ;
\ ---------------------
: wings ( -- w )
1 xw cos
( 1 cos[xw] )
t 3 * sin *
( 1 cos[xw]*sin[t*3] )
xh abs .5 +
( 1 cos[xw]*sin[t*3] |xh|+.5 )
* yw - abs -
( w1 )
1 xh 2 * abs -
( w1 1-|xh*2| )
sqrt *
( w1*sqrt[1-|xh*2|] )
.55 max
( w2 )
11 ** 11 *
( w2**11*11 )
;
\ ---------------------
: hole ( -- h ) 1
xh yh r ( 1 r )
3 over / ( 1 r 3/r )
t 3 * + ( 1 r 3/r+t*3 )
sin ( 1 r sin[3/r+t*3] )
swap ( 1 sin[3/r+t*3] r )
** - ( 1-sin[3/r+t*3]**r )
;
\ ---------------------
hole wings -
wings

Based on: wings Redux Redux - 陳爽