找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3347|回复: 6

[LISP函数-转换]:角度转换函数

[复制链接]

已领礼包: 593个

财富等级: 财运亨通

发表于 2005-9-1 06:49:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×

  1. (setq _pi2 (/ pi 2)
  2.       _pi4 (/ pi 4)
  3.       _2pi (* pi 2)
  4.       _3pi (* 1.5 pi)
  5. )
  6. ;;弧度转换为度
  7. (defun xd-rtd (j$) (/ (* j$ 180.0) pi))
  8. ;;度转换为弧度
  9. (defun xd-dtr (j$) (* (/ j$ 180.0) pi))
  10. ;;角度的标准化  转换至-90度-90度
  11. (defun xd-angle_format (ang /)
  12.   (setq ang (rem ang _2pi))
  13.   (if (minusp ang)
  14.     (setq ang (+ ang _2pi))
  15.   )
  16.   (cond        ;;2 3象限
  17.         ((and (> ang _pi2) (<= ang _3pi))
  18.          (setq ang (- ang pi))
  19.         )
  20.         ;;大于270度
  21.         ((and (> ang _3pi) (< ang _2pi))
  22.          (setq ang (- ang _2pi))
  23.         )
  24.         (t ang)
  25.   )
  26.   ang
  27. )
  28. ;;角度转换至0 - pi
  29. (defun xd-angle_format0        (ang)
  30.   (cond
  31.     ((> ang pi)
  32.      (- _2pi ang)
  33.     )
  34.     ((< ang 0.0)
  35.      (if (< (abs ang) pi)
  36.        (abs ang)
  37.        (+ _2pi ang)
  38.      )
  39.     )
  40.     (t ang)
  41.   )
  42. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-9-4 00:51:54 | 显示全部楼层

  1. ;;角度的标准化  转换至-90度~90度(1,4象限)
  2. (defun xd-a2PI1 (a)
  3.   (setq a (rem a PI))
  4.   (cond ((> a PI/2) (- a PI))
  5.         ((<= a (- PI/2))(+ a PI))
  6.         (T a)
  7.   )
  8. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2005-11-6 22:34:26 | 显示全部楼层

  1. ;;By Aeo @xdsoft.net
  2. ;;角度转换至-90~90(1,4象限)
  3. (defun xd-angle_90 (a)
  4.   (if(= (setq a(rem a PI))(/ pi 2))
  5.         a
  6.         (-(* 2(rem a(/ pi 2)))a)
  7.   )
  8. )


  9. ;;;=========================================================
  10. ;;;=========================================================
  11. ;;角度转换至0 ~180(1,2象限)
  12. (defun xd-angle_180(ang)
  13.   (setq ang(xd-angle_360 ang))
  14.   (if(> ang pi)(-(- ang pi pi)) ang)
  15. )


  16. ;;;=====================================================
  17. ;;;=====================================================
  18. ;;一圈之内(0~360)
  19. (defun xd-angle_360 (ang)     
  20.   (while (minusp ang)(setq ang (+ ang pi pi)))
  21.   (rem ang (* pi 2))
  22. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-7 12:49:43 | 显示全部楼层
;;供大家测试,我还没仔细测

  1. (setq 2PI (+ PI PI)
  2.       PI/2 (/ PI 2))
  3. (defun a2a (an from to / an2)
  4.   (setq an (rem an 2PI))
  5.   (or (<= from (setq an2 an) to)
  6.       (<= from (setq an2 (+ an PI)) to)
  7.       (<= from (setq an2 (- an PI)) to)
  8.       (<= from (setq an2 (a2a (+ an 2PI) from to)) to)
  9.   )
  10.   an2
  11. )

  12. (defun an2an (ang from to)
  13.   (setq ang (dtor ang)
  14.         from(dtor from)
  15.         to  (dtor to))
  16.   (rtod (a2a ang from to))
  17. )

;|
(an2an -130 -90 90) -> 50.0
(an2an -130 0 180) -> 50.0
(an2an -230 0 180) -> 130.0
(an2an -230 180 360) -> 310.0
(an2an -10 90 270) -> 170
|;
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

 楼主| 发表于 2005-11-7 13:10:09 | 显示全部楼层
From to 用 1 2 3 4 不是更好
0 -〉0 & 360
1 -〉90
2 -> 180
3 -> 270
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-8-22 14:43:12 | 显示全部楼层
5楼说得不错,如果在程序一开始就给用户一个选择,这样就会更简单明了.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-11-17 00:23:28 | 显示全部楼层
能不能编一个完整的程序贴上来呢?xyp帮我弄了一个,非常好用,在此感谢xyp学院派斑竹。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-24 23:19 , Processed in 0.276233 second(s), 44 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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