;; Matrix x Vector - Vladimir Nesterovsky
;; Args: m - nxn matrix, v - vector in R^n
(defun mxv (m v)
(mapcar '(lambda (r)
(apply '+
(mapcar '* r v)
)
)
m
)
)
;| 定义一个刚体运动群,用其次坐标 对二维点集合group_pt 进行 先旋转, 再镜像,最后 平移的操作
group_pt 要变换的二维点集合 φ为旋转角度, rotate_pt 为旋转基点
reflelx 为1 时对点集合沿着X轴进行镜像,等于-1 不进行 镜像操作
ang 为镜像轴的象限角度,mirror_base 为镜像轴上的一点
U_move 为对点集合进行 平移的操作 的二维向量
|;
(defun operate_rigid_body (group_pt rotate_pt φ U_move
reflelx mirror_base ang
/ T_rotation group pt
T_综合 T_move T_reflelx
)
;; 定义一个旋转群 ,ang 为旋转的角度,rotate_base 为旋转的基点 ,
;;当rotate_base 为nil 时,程序便认为是围绕 原点( 0 0 )旋转 ,当ang 为nil 时,程序认为旋转角为0度
(defun group_rotate (rotate_base a