以下是使用变换矩阵映射顶点的示例:
[color=GREEN];; Isometric Projection Example - Lee Mac[/color]([color=BLUE]defun[/color] c:iso ( [color=BLUE]/[/color] c e l m p q v ) ([color=BLUE]initget[/color] 1 [color=MAROON]"Top Right Left"[/color]) ([color=BLUE]setq[/color] m (mxs ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] ([color=BLUE]getkword[/color] [color=MAROON]"\nSpecify Isometric Projection Plane [Top/Right/Left]: "[/color]) ([color=BLUE]list[/color] ([color=BLUE]list[/color] [color=MAROON]"Top"[/color] ([color=BLUE]list[/color] ([color=BLUE]sqrt[/color] 3.0) ([color=BLUE]sqrt[/color] 3.0)) '(-1.0 1.0)) ([color=BLUE]list[/color] [color=MAROON]"Right"[/color] ([color=BLUE]list[/color] ([color=BLUE]sqrt[/color] 3.0) 0.0 ) '( 1.0 2.0)) ([color=BLUE]list[/color] [color=MAROON]"Left"[/color] ([color=BLUE]list[/color] ([color=BLUE]sqrt[/color] 3.0) 0.0 ) '(-1.0 2.0)) ) ) ) 0.5 [color=GREEN];(/ (sqrt 6.0) 6.0) ;; True projection[/color] ) ) ([color=BLUE]while[/color] ([color=BLUE]progn[/color] ([color=BLUE]setvar[/color] 'errno 0) ([color=BLUE]setq[/color] e ([color=BLUE]car[/color] ([color=BLUE]entsel[/color] [color=MAROON]"\nSelect LWPolyline: "[/color]))) ([color=BLUE]cond[/color] ( ([color=BLUE]=[/color] 7 ([color=BLUE]getvar[/color] 'errno)) ([color=BLUE]princ[/color] [color=MAROON]"\nMissed, try again."[/color]) ) ( ([color=BLUE]=[/color] 'ename ([color=BLUE]type[/color] e)) ([color=BLUE]if[/color] ([color=BLUE]/=[/color] [color=MAROON]"LWPOLYLINE"[/color] ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 0 ([color=BLUE]entget[/color] e)))) ([color=BLUE]princ[/color] [color=MAROON]"\nInvalid object selected."[/color]) ) ) ) ) ) ([color=BLUE]if[/color] e ([color=BLUE]progn[/color] ([color=BLUE]setq[/color] e ([color=BLUE]entget[/color] e) l (LM:massoc 10 e) q ([color=BLUE]length[/color] l) c ([color=BLUE]mapcar[/color] '[color=BLUE]/[/color] ([color=BLUE]apply[/color] '[color=BLUE]mapcar[/color] ([color=BLUE]cons[/color] '[color=BLUE]+[/color] l)) ([color=BLUE]list[/color] q q)) v ([color=BLUE]mapcar[/color] '[color=BLUE]-[/color] c (mxv m c)) ) ([color=BLUE]entmake[/color] ([color=BLUE]append[/color] ([color=BLUE]list[/color] '(0 . [color=MAROON]"LWPOLYLINE"[/color]) '(100 . [color=MAROON]"AcDbEntity"[/color]) '(100 . [color=MAROON]"AcDbPolyline"[/color]) ([color=BLUE]assoc[/color] 90 e) ([color=BLUE]assoc[/color] 70 e) ([color=BLUE]assoc[/color] 38 e) ) ([color=BLUE]mapcar[/color] '([color=BLUE]lambda[/color] ( p ) ([color=BLUE]cons[/color] 10 ([color=BLUE]mapcar[/color] '[color=BLUE]+[/color] (mxv m p) v))) l) ([color=BLUE]list[/color] ([color=BLUE]assoc[/color] 210 e)) ) ) ) ) ([color=BLUE]princ[/color]))[color=GREEN];; MAssoc - Lee Mac[/color][color=GREEN];; Returns all associations of a key in an association list[/color]([color=BLUE]defun[/color] LM:MAssoc ( key lst [color=BLUE]/[/color] item ) ([color=BLUE]if[/color] ([color=BLUE]setq[/color] item ([color=BLUE]assoc[/color] key lst)) ([color=BLUE]cons[/color] ([color=BLUE]cdr[/color] item) (LM:MAssoc key ([color=BLUE]cdr[/color] ([color=BLUE]member[/color] item lst)))) ))[color=GREEN];; Matrix x Vector - Vladimir Nesterovsky[/color][color=GREEN];; Args: m - nxn matrix, v - vector in R^n[/color]([color=BLUE]defun[/color] mxv ( m v ) ([color=BLUE]mapcar[/color] '([color=BLUE]lambda[/color] ( r ) ([color=BLUE]apply[/color] '[color=BLUE]+[/color] ([color=BLUE]mapcar[/color] '[color=BLUE]*[/color] r v))) m))[color=GREEN];; Matrix x Scalar - Lee Mac 2010[/color][color=GREEN];; Args: m - nxn matrix, n - real scalar[/color]([color=BLUE]defun[/color] mxs ( m s ) ([color=BLUE]mapcar[/color] '([color=BLUE]lambda[/color] ( r ) ([color=BLUE]mapcar[/color] '([color=BLUE]lambda[/color] ( n ) ([color=BLUE]*[/color] n s)) r)) m))([color=BLUE]princ[/color])
注意,上述示例不是真实投影,因为尺寸保持不变;取消注释代码中注明的比例因子,以获得真实的投影维数。