(defun hrev (prim) (do ((l (car prim)(cdr l))(newpoints)) ((atom l) (do ((ll (cadr prim)(cdr ll))(newelements)) ((atom ll) `(,(nreverse newpoints),(nreverse newelements) .,(cddr prim))) (cond ((eq 'outline (caar ll)) (lets ((points (cadar ll)) (len (length points)) (curve (assq 'curve (cddar ll))) (curve (cond (curve (cdr curve))))) (push `(outline ,(reverse points) (curve .,(reverse (mapcar curve #'(lambda (x) (- len 1 x)))))) newelements))) (t (push (car ll) newelements))))) (push `(,(difference 400 (caar l)).,(cdar l)) newpoints))) (defun vrev (prim) (do ((l (car prim)(cdr l))(newpoints)) ((atom l) (do ((ll (cadr prim)(cdr ll))(newelements)) ((atom ll) `(,(nreverse newpoints),(nreverse newelements) .,(cddr prim))) (cond ((eq 'outline (caar ll)) (lets ((points (cadar ll)) (len (length points)) (curve (assq 'curve (cddar ll))) (curve (cond (curve (cdr curve))))) (push `(outline ,(reverse points) (curve .,(reverse (mapcar curve #'(lambda (x) (- len 1 x)))))) newelements))) (t (push (car ll) newelements))))) (push `(,(caar l) ,(difference 400 (cadar l)).,(cddar l)) newpoints)))