USING: math accessors kernel ; IN: bedlam TUPLE: posn { x integer } { y integer } { z integer } ; : getXYZ ( posn -- x y z posn ) [ [ z>> ] [ y>> ] [ x>> ] tri ] keep ; : rotF1 ( posn -- posn ) getXYZ swap >>x swap >>z swap neg >>y ; : rotF2 ( posn -- posn ) getXYZ swap >>z swap >>y swap neg >>x ; : rotF3 ( posn -- posn ) getXYZ swap >>y swap neg >>x swap >>z ; : rotD1 ( posn -- posn ) getXYZ swap >>y swap >>z swap >>x ; : rotD2 ( posn -- posn ) getXYZ swap neg >>y swap >>z swap neg >>x ; : rotD3 ( posn -- posn ) getXYZ swap >>y swap neg >>z swap neg >>x ; : rotD4 ( posn -- posn ) getXYZ swap neg >>y swap neg >>z swap >>x ; : rotL1 ( posn -- posn ) getXYZ swap neg >>y swap neg >>x swap neg >>z ; : rotL2 ( posn -- posn ) getXYZ swap neg >>z swap neg >>y swap neg >>x ; : rotL3 ( posn -- posn ) getXYZ swap neg >>x swap neg >>z swap neg >>y ; : rotL4 ( posn -- posn ) getXYZ swap neg >>x swap >>z swap >>y ;