1 ! Copyright (C) 2009 Joe Groff.
2 ! See https://factorcode.org/license.txt for BSD license.
3 USING: kernel math math.vectors sequences ;
4 IN: math.vectors.homogeneous
6 : (homogeneous-xyz) ( h -- xyz )
9 : (homogeneous-w) ( h -- w )
13 2dup [ (homogeneous-w) ] bi@ over =
14 [ [ [ (homogeneous-xyz) ] bi@ v+ ] dip suffix ] [
16 [ [ (homogeneous-xyz) ] [ (homogeneous-w) ] bi* v*n ]
17 [ [ (homogeneous-w) ] [ (homogeneous-xyz) ] bi* n*v v+ ]
18 [ [ (homogeneous-w) ] [ (homogeneous-w) ] bi* * suffix ] 2tri
22 [ (homogeneous-xyz) n*v ] [ (homogeneous-w) suffix ] bi ;
37 [ (homogeneous-xyz) ] [ (homogeneous-w) ] bi v/n ;