环形阵列
;;;环形阵列 cirar;;;pt 环形阵列中心坐标
;;;n 360度阵列个数
;;;r 环形阵列半径
;;;输出环形阵列坐标
;;;示例:(cirar '(0 0) 4 10)>>>>
;;;((-1.83697e-015 -10.0) (-10.0 1.22465e-015) (6.12323e-016 10.0) (10 0))
(defun cirar (pt n r / ptx ptss ang)
(setq ptx (list r 0)
ptss (list ptx)
ang(/ (* 2 pi) n)
)
(repeat (1- n)
(setq ptss (cons (setq ptx
(apply '(lambda (a b)
(list (- (* a (cos ang)) (* b (sin ang)))
(+ (* a (sin ang)) (* b (cos ang)))
)
)
ptx
)
)
ptss
)
)
)
(mapcar '(lambda (x) (mapcar '+ pt x)) ptss)
)
;;;环形阵列 cirar1 (带偏转角度)
;;;pt 环形阵列中心坐标
;;;n 360度阵列个数
;;;r 环形阵列半径
;;;输出环形阵列坐标及相应角度弧度制
;;;示例:(cirar1 '(0 0) 4 10)>>>>
;;;((-1.83697e-015 -10.0) (-10.0 1.22465e-015) (6.12323e-016 10.0) (10 0))
(defun cirar1 (pt n r / ptx ptss ang)
(setq ptx(list r 0)
ptss (list ptx)
ang(/ (* 2 pi) n)
)
(repeat (1- n)
(setq ptss (cons (setq ptx
(apply '(lambda (a b)
(list (- (* a (cos ang)) (* b (sin ang)))
(+ (* a (sin ang)) (* b (cos ang)))
)
)
ptx
)
)
ptss
)
)
)
(mapcar '(lambda (x) (list x (+ (* 0.5 pi) (angle pt x))))
(mapcar '(lambda (x) (mapcar '+ pt x)) ptss)
)
)
本帖最后由 lee50310 于 2023-4-10 05:34 编辑
上述函式 :提供一個實際應用的範例程式
(函式1) 執行指令: ta
(函式2) 執行指令: tb
源码分享,赞一个
谢谢楼主分享{:1_1:} 非常感谢楼主分享好源码 lee50310 发表于 2023-4-10 05:17
上述函式 :提供一個實際應用的範例程式
(函式1) 執行指令: ta
(函式2) 執行指令: tb
这个太棒了!:lol 非常感謝樓主分享好源碼 感谢大神无私分享
页:
[1]