XD::GEOM:ARBITRARY-X(绝对轴算法)
;; ------------------------------------------------------------------------
;;; 函数名称 / 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
)
页:
[1]