newer 发表于 2025-5-12 21:25:00

XD::GEOM:POINT-ROTATE



;; ------------------------------------------------------------------------
;;; 函数名称 / Function Name: XD::GEOM:POINT-ROTATE
;;;
;;; 【功能说明 / Description】
;;;   以点 P1 为中心,将点 PNT 绕 Z 轴旋转 ANG 角度,返回旋转后的点坐标。
;;;   支持输入点 PNT 为二维或三维坐标,自动调整 P1 的 Z 分量以匹配。
;;;
;;; 【参数说明 / Parameters】
;;;   pnt - (list) 待旋转点坐标,二维或三维列表
;;;   p1- (list) 旋转中心点坐标,二维或三维列表
;;;   ang - (float) 旋转角度,弧度制
;;;
;;; 【返回值 / Return Value】
;;;   (list) 旋转后的点坐标,二维坐标列表
;;;
;;; 【依赖函数 / Dependencies】
;;;   - length   : 获取列表长度
;;;   - car, cadr, caddr : 获取坐标分量
;;;   - list   : 构造列表
;;;   - polar    : 极坐标计算函数,返回极坐标点
;;;   - angle    : 计算两点间角度
;;;   - distance : 计算两点间距离
;;;
;;; 【备注 / Notes】
;;;   - 旋转基于二维平面,忽略 Z 轴旋转,仅调整输入点的 Z 分量以匹配中心点。
;;;   - 角度单位为弧度。
;;;
(defun XD::GEOM:POINT-ROTATE (pnt p1 ang)
;; 如果 PNT 是三维点,则调整 P1 的 Z 分量与 PNT 保持一致
(if (= (length pnt) 3)
    (setq p1 (list (car p1) (cadr p1) (caddr pnt)))
)
;; 计算旋转后的点,基于极坐标转换
(polar p1
         (+ (angle p1 pnt) ang)
         (distance (list (car p1) (cadr p1)) (list (car pnt) (cadr pnt)))
)
)
页: [1]
查看完整版本: XD::GEOM:POINT-ROTATE