USING: combinators effects.parser kernel sequences math math.functions math.constants arrays accessors math.vectors ;
IN: juere-engine.utils
: cleave-effect ( x seq eff -- )
[ call-effect ] curry with each ; inline
SYNTAX: cleave(
\ cleave-effect parse-call-paren ;
: spread-effect ( objs... seq eff -- )
[ deep-spread>quot ] dip call-effect ; inline
SYNTAX: spread(
\ spread-effect parse-call-paren ;
: rot-vector ( x y deg -- x y )
[ rect> >polar ] dip deg>rad + 2pi mod polar> >rect ;
: yaw-vector ( xhz deg -- xhz )
[ first3 swapd ] dip rot-vector swapd 3array ;
: dim* ( rect -- nonzero nonzero )
dim>> first2 [ dup 0 = [ 1 + ] when ] bi@ ;
: <rsrc> ( path-frag -- path )
"resource:work/juere-engine/resources/" prepend ;
: unclip*-2nd ( abc -- b ac )
[ second ] [ 1 swap remove-nth ] bi ;
: xz>angle ( xz -- length angle )
first2 rect> >polar rad>deg ;
: vector-sum ( vectors -- vector )
{ 0 0 0 } [ v+ ] reduce ;
: vector-mean ( vectors -- vector )
[ vector-sum ] [ length ] bi v/n ;