48 lines
976 B
Factor
48 lines
976 B
Factor
|
|
USING: kernel math arrays math.vectors math.matrices generic.lib pos ori ;
|
|
|
|
IN: turtle
|
|
|
|
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
|
|
TUPLE: turtle ;
|
|
|
|
: <turtle> ( -- turtle )
|
|
turtle construct-empty
|
|
{ 0 0 0 } clone <pos>
|
|
3 identity-matrix <ori>
|
|
rot
|
|
3array chain ;
|
|
|
|
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
|
|
: reset-turtle ( -- ) { 0 0 0 } >pos 3 identity-matrix >ori ;
|
|
|
|
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
|
|
: step-vector ( length -- array ) { 0 0 1 } n*v ;
|
|
|
|
: step-turtle ( length -- ) step-vector ori> swap m.v pos> v+ >pos ;
|
|
|
|
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
|
|
: strafe-up ( length -- )
|
|
90 pitch-up
|
|
step-turtle
|
|
90 pitch-down ;
|
|
|
|
: strafe-down ( length -- )
|
|
90 pitch-down
|
|
step-turtle
|
|
90 pitch-up ;
|
|
|
|
: strafe-left ( length -- )
|
|
90 turn-left
|
|
step-turtle
|
|
90 turn-right ;
|
|
|
|
: strafe-right ( length -- )
|
|
90 turn-right
|
|
step-turtle
|
|
90 turn-left ;
|