(use goo) (use demos/archogen/ldraw) (dv current-file #f) (dv cur-x 0) (dv cur-y 0) (dv cur-z 0) (dv cur-rot 90) (dv pen-is-down #t) (dv cur-color 0) (dv scale-factor-x 10) (dv scale-factor-y 10) (dv scale-factor-z 24) (df set-logo-file (file) (set current-file file) ) (df deg-to-rad (deg) (def fdeg (as <flo> deg)) (* $pi (/ fdeg 180.0)) ) (df fd (dist|<int>) (msg out "Moving forward from %=, %=. (%=) \n" cur-x cur-y cur-rot) (msg out "Cos is %=\n" (cos (deg-to-rad cur-rot))) (msg out "Sin is %=\n" (sin (deg-to-rad cur-rot))) (set cur-x (+ cur-x (round (* (cos (deg-to-rad cur-rot)) (- dist 1))))) (set cur-y (+ cur-y (round (* (sin (deg-to-rad cur-rot)) (- dist 1))))) (msg out " Halfway: %=, %=\n" cur-x cur-y) (when pen-is-down (render-part current-file 1 dist (* cur-x scale-factor-x) (* cur-z scale-factor-z) (* cur-y scale-factor-y) cur-rot cur-color ) ) (set cur-x (+ cur-x (round (* (cos (deg-to-rad cur-rot)) (- dist 1))))) (set cur-y (+ cur-y (round (* (sin (deg-to-rad cur-rot)) (- dist 1))))) (msg out " All the way: %=, %=\n" cur-x cur-y) ) (df bk (dist|<int>) ) (df cl (cname|<str>) (set cur-color (find-lcolor cname)) ) (df fix-rot () (when (< cur-rot 0) (set cur-rot (+ cur-rot 360)) ) (when (>= cur-rot 360) (set cur-rot (- cur-rot 360)) ) ) (df rt (deg|<int>) (set cur-rot (- cur-rot deg)) (fix-rot) ) (df lt (deg|<int>) (set cur-rot (+ cur-rot deg)) (fix-rot) ) (df up () (set cur-z (- cur-z 1)) ) (df dn () (set cur-z (+ cur-z 1)) ) (df pu () (set pen-is-down #f) ) (df pd () (set pen-is-down #t) ) (export set-logo-file fd bk cl rt lt up dn pu pd )