明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1555|回复: 7

[函数] 环形阵列

  [复制链接]
发表于 2023-4-1 10:38:32 | 显示全部楼层 |阅读模式
;;;环形阵列 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)
  )
)

点评

示例中的那些数近似等于0,浮点运算的原因,高飞大神只出过.简单说,该函数功能是得出一个点pt为圆心,半径为R,起始弧度为0的点的坐标,相当于多次调用(polar pt (* n i) R)。i:2π/n  发表于 2023-4-1 17:14

评分

参与人数 5明经币 +5 金钱 +10 收起 理由
USER2128 + 1 赞一个!
lee50310 + 1 赞一个!
669423907 + 1 很给力!
guosheyang + 1 赞一个!
tigcat + 1 + 10 很给力!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2023-4-10 05:17:01 | 显示全部楼层
本帖最后由 lee50310 于 2023-4-10 05:34 编辑

上述函式 :提供一個實際應用的範例程式
(函式1) 執行指令: ta
(函式2) 執行指令: tb

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

评分

参与人数 2明经币 +2 收起 理由
kkq0305 + 1 赞一个!
USER2128 + 1 赞一个!

查看全部评分

回复 支持 1 反对 0

使用道具 举报

发表于 2023-4-1 12:16:25 | 显示全部楼层
源码分享,赞一个
发表于 2023-4-1 12:46:08 | 显示全部楼层
谢谢楼主分享
发表于 2023-4-4 23:38:01 | 显示全部楼层
非常感谢楼主分享好源码
发表于 2023-4-10 11:22:23 | 显示全部楼层
lee50310 发表于 2023-4-10 05:17
上述函式 :提供一個實際應用的範例程式
(函式1) 執行指令: ta
(函式2) 執行指令: tb

这个太棒了!
发表于 2023-4-13 14:21:58 | 显示全部楼层
非常感謝樓主分享好源碼
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-16 15:53 , Processed in 0.188199 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表