马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
 - ;; ------------------------------------------------------------------------
- ;;; 函数名称 / Function Name: XD::GEOM:ARBITRARY-X
- ;;;
- ;;; 【功能说明 / Description】
- ;;; 根据输入向量 V,返回一个与 V 垂直的任意向量,作为新的 X 方向向量。
- ;;; 通过判断 V 的 X 和 Y 分量是否接近零,选择不同的基准向量进行叉积计算。
- ;;;
- ;;; 【参数说明 / Parameters】
- ;;; v - (list) 三维向量,格式为 (x y z)
- ;;;
- ;;; 【返回值 / Return Value】
- ;;; (list) 与 V 垂直的向量
- ;;;
- ;;; 【依赖函数 / Dependencies】
- ;;; - abs : 取绝对值
- ;;; - car, cadr : 获取向量分量
- ;;; - xd::geom:cross-product : 计算叉积
- ;;;
- ;;; 【备注 / Notes】
- ;;; - 该函数用于生成与给定向量正交的向量,常用于构造局部坐标系。
- ;;; - 通过判断 V 的 X 和 Y 分量是否非常小,避免叉积结果为零向量。
- ;;;
- (defun XD::GEOM:ARBITRARY-X (v)
- (if (and (< (abs (car v)) (/ 1.0 64.0))
- (< (abs (cadr v)) (/ 1.0 64.0)))
- ;; 当 V 的 X 和 Y 分量都很小时,使用 Y 轴单位向量与 V 叉积
- (setq v (XD::GEOM:CROSS-PRODUCT '(0.0 1.0 0.0) v))
- ;; 否则使用 Z 轴单位向量与 V 叉积
- (setq v (XD::GEOM:CROSS-PRODUCT '(0.0 0.0 1.0) v))
- )
- v
- )
|