! Copyright (C) 2007, 2008 Alex Chapman
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors arrays kernel locals math math.constants math.functions math.matrices math.vectors random sequences ;
+USING: accessors arrays kernel math math.functions math.vectors
+random sequences ;
IN: jamshred.oint
! An oint is a point with three linearly independent unit vectors
over forward>> rotate-oint ;
: random-float+- ( n -- m )
- #! find a random float between -n/2 and n/2
+ ! find a random float between -n/2 and n/2
dup 10000 * >integer random 10000 / swap 2 / - ;
: random-turn ( oint theta -- )
distance-vector norm ;
: scalar-projection ( v1 v2 -- n )
- #! the scalar projection of v1 onto v2
- [ v. ] [ norm ] bi / ;
+ ! the scalar projection of v1 onto v2
+ [ vdot ] [ norm ] bi / ;
: proj-perp ( u v -- w )
dupd proj v- ;
-rot up>> scalar-projection abs + ;
:: reflect ( v n -- v' )
- #! bounce v on a surface with normal n
- v v n v. n n v. / 2 * n n*v v- ;
+ ! bounce v on a surface with normal n
+ v v n vdot n n vdot / 2 * n n*v v- ;
: half-way ( p1 p2 -- p3 )
over v- 2 v/n v+ ;