找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 208|回复: 0

[几何] XD::Geom:AngleToOctant

[复制链接]

已领礼包: 20个

财富等级: 恭喜发财

发表于 2025-3-24 18:14:03 | 显示全部楼层 |阅读模式
函数发布
函数名称: XD::Geom:AngleToOctant
调用格式: (XD::Geom:AngleToOctant ang)
参数说明: ang -- 实数
返回值: 实数
函数简介: ;|
; 将角度转换为 [0, 2π) 范围内,并根据角度所在的区间返回对应的象限或坐标轴。
;
; 该函数将输入角度 `ang` 归一化到 [0, 2π) 范围,并根据该角度所在的区间返回对应的区间编号。
; 区间划分及对应关系如下:
; 1. 0 ~ π/4 -> 正X轴 (返回 8)
; 2. π/4 ~ π/2 -> 第一象限 (返回 1)
; 3. π/2 ~ 3π/4 -> 第二象限 (返回 2)
; 4. 3π/4 ~ π -> 第三象限 (返回 3)
; 5. π ~ 5π/4 -> 第四象限 (返回 4)
; 6. 5π/4 ~ 3π/2 -> 正Y轴 (返回 5)
; 7. 3π/2 ~ 7π/4 -> 负X轴 (返回 6)
; 8. 7π/4 ~ 2π -> 负Y轴 (返回 7)
;
; 参数:
; ang - 输入角度(以弧度表示),可以是任何浮动值。
;
; 返回值:
; 返回对应区间的编号(整数),范围从 1 到 8。
;
; 例子:
; (XD::Geom:AngleToOctant pi) ; 返回 3,因为 π 对应第三象限
; (XD::Geom:AngleToOctant (* pi 1.5)) ; 返回 5,因为 3π/2 对应正Y轴
;|
函数来源: 原创
函数作者: marting
适用版本: 不限 
最后更新时间: 2025-03-24
备注: -
演示图片: -

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

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

×
  1. (defun XD::Geom:AngleToOctant (ang /)
  2.   ;  将角度转换为 [0, 2π) 范围内,并根据角度所在的区间返回对应的象限或坐标轴。
  3.   ;  
  4.   ;  该函数将输入角度 `ang` 归一化到 [0, 2π) 范围,并根据该角度所在的区间返回对应的区间编号。
  5.   ;  区间划分及对应关系如下:
  6.   ;  1. 0 ~ π/4    -> 正X轴 (返回 8)
  7.   ;  2. π/4 ~ π/2  -> 第一象限 (返回 1)
  8.   ;  3. π/2 ~ 3π/4 -> 第二象限 (返回 2)
  9.   ;  4. 3π/4 ~ π   -> 第三象限 (返回 3)
  10.   ;  5. π ~ 5π/4   -> 第四象限 (返回 4)
  11.   ;  6. 5π/4 ~ 3π/2 -> 正Y轴 (返回 5)
  12.   ;  7. 3π/2 ~ 7π/4 -> 负X轴 (返回 6)
  13.   ;  8. 7π/4 ~ 2π  -> 负Y轴 (返回 7)
  14.   ;  
  15.   ;  参数:
  16.   ;    ang - 输入角度(以弧度表示),可以是任何浮动值。
  17.   ;  
  18.   ;  返回值:
  19.   ;    返回对应区间的编号(整数),范围从 1 到 8。
  20.   ;  
  21.   ;  例子:
  22.   ;    (XD::Geom:AngleToOctant pi)  ; 返回 3,因为 π 对应第三象限
  23.   ;    (XD::Geom:AngleToOctant (* pi 1.5))  ; 返回 5,因为 3π/2 对应正Y轴
  24.   
  25.   ;; 归一化角度,使其落入 [0, 2π) 范围
  26.   (setq ang (mod ang (* pi 2)))

  27.   ;; 根据角度所在区间返回对应的区间编号
  28.   (cond
  29.     ((< ang (* pi 0.25)) 8)    ;; 0 ~ π/4 -> 正X轴
  30.     ((< ang (* pi 0.5)) 1)     ;; π/4 ~ π/2 -> 第一象限
  31.     ((< ang (* pi 0.75)) 2)    ;; π/2 ~ 3π/4 -> 第二象限
  32.     ((< ang pi) 3)             ;; 3π/4 ~ π -> 第三象限
  33.     ((< ang (* pi 1.25)) 4)    ;; π ~ 5π/4 -> 第四象限
  34.     ((< ang (* pi 1.5)) 5)     ;; 5π/4 ~ 3π/2 -> 正Y轴
  35.     ((< ang (* pi 1.75)) 6)    ;; 3π/2 ~ 7π/4 -> 负X轴
  36.     (t 7)                      ;; 7π/4 ~ 2π -> 负Y轴
  37.   )
  38. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-4-23 16:49 , Processed in 0.368340 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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