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]