Новая версия сайта, доступна здесь.
Геометрический вальс.

eea-gr.gif (215 Кб)
;; eea-gr.lsp (defun c:eea-gr (/ A LST N P S X Y) ;| ***************************************************************************************** by ElpanovEvgeniy Программа для демонстрации использования матриц, совместно с динамической отрисовкой на экране. Дата создания 02.04.2005 последняя редакция 01.10.2006 The program for demonstration use matrixes, together with dynamic drawing on the screen area. Date of creation 02.04.2005 Last edition 01.10.2006 (c:eea-gr1) ***************************************************************************************** |; (setq lst '((0. 0.) (0. 1.) (1. 1.) (1. 0.)) p (trans (getvar "VIEWCTR") 1 3) x (car p) y (cadr p) ) ;_ setq (while (= (car (setq p (grread nil 5))) 5) (setq p (trans (cadr p) 1 3) p (list (- (car p) x) (- (cadr p) y)) a 0. s (/ (getvar "viewsize") 10.) ) ;_ setq (if (> (abs (car p)) (abs (cadr p))) (setq p (list (if (minusp (car p)) -1. 1. ) ;_ if (if (zerop (car p)) 0. (/ (cadr p) (abs (car p))) ) ;_ if ) ;_ list ) ;_ setq (setq p (list (if (zerop (cadr p)) 0. (/ (car p) (abs (cadr p))) ) ;_ if (if (minusp (cadr p)) -1. 1. ) ;_ if ) ;_ list ) ;_ setq ) ;_ if (redraw) (grvecs (apply (function append) (cons (list 3 '(0 0) p) (mapcar (function (lambda (l) (apply (function append) (mapcar (function (lambda (x x1) (list 1 x x1))) l (cons (last l) l) ) ;_ mapcar ) ;_ apply ) ;_ lambda ) ;_ function (mapcar (function (lambda (n) (setq n (list (+ (* (car n) (car p)) (* (cadr n) (cadr p))) (+ (* (car n) (cadr p)) (* (cadr n) (- (car p)))) ) ;_ list ) ;_ setq (mapcar (function (lambda (x1) (mapcar (function +) x1 n))) lst) ) ;_ lambda ) ;_ function '((-2 -2) (-1 -2) (0 -2) (1 -2) (2 -2) (-2 -1) (-1 -1) (0 -1) (1 -1) (2 -1) (-2 0) (-1 0) (0 0) (1 0) (2 0) (-2 1) (-1 1) (0 1) (1 1) (2 1) (-2 2) (-1 2) (0 2) (1 2) (2 2) ) ) ;_ mapcar ) ;_ mapcar ) ;_ cons ) ;_ apply (list (list (* (cos a) s) (* (- (sin a)) s) 0. (- (+ x x) (* x (cos a)) (* y (- (sin a)))) ) ;_ list (list (* (sin a) s) (* (cos a) s) 0. (- (+ y y) (* x (sin a)) (* y (cos a))) ) ;_ list (list 0. 0. s 0.) '(0. 0. 0. 1.) ) ;_ list ) ;_ grvecs ) ;_ while (redraw) ) ;_ defun ;|«Visual LISP© Format Options» (80 1 2 2 T " " 80 60 0 0 0 nil nil nil T) ;*** DO NOT add text below the comment! ***|;