0.0.0.0:80 juere-engine / master utils / utils.factor
master

Tree @master (Download .tar.gz)

utils.factor @masterraw · history · blame

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 ;