马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
 - ;; ------------------------------------------------------------------------
- ;;; 函数名称 / 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)))
- )
- )
|