: perpendicular-distance ( oint oint -- distance )
tuck distance-vector swap 2dup oint-left scalar-projection abs
-rot oint-up scalar-projection abs + ;
+
+:: reflect ( v l -- v' )
+ #! reflect v on l
+ v l v. l l v. / 2 * l n*v v v- ;
0.3 ;
: player-speed ( player -- speed )
- dup player-nearest-segment fraction-from-wall sq max-speed * ;
+ max-speed ;
+ ! dup player-nearest-segment fraction-from-wall sq max-speed * ;
: move-player ( player -- )
dup player-speed over go-forward update-nearest-segment ;