"fsxm"您提过
平行<=>向量叉积为0
垂直<=>向量点积为0
但有2个疑问
01.向量叉积计算如何为0呢?返回值是座标的(0,0,0)吧!
02.向量叉积的两线如果不等长,似乎会没结果喔!是否要加上斜率判断呢?
以上的问题我用下面程序练习
若有出错请各位高手也可帮忙解答讨论一下吧~

- (defun VecCross (TVectorV1 TVectorV2) ;向量外积
- (setq v1 tvectorv1)
- (setq v2 tvectorv2)
- (setq cx (- (* (nth 1 v1)(nth 2 v2)) (* (nth 1 v2)(nth 2 v1))))
- (setq cy (- (* (nth 2 v1)(nth 0 v2)) (* (nth 2 v2)(nth 0 v1))))
- (setq cz (- (* (nth 0 v1)(nth 1 v2)) (* (nth 0 v2)(nth 1 v1))))
- (setq Cross (list cx cy cz))
- Cross
- )
- (defun C:TEST ()
- (setq en_1 (entget(car (entsel"\n select 1:"))))
- (setq en_2 (entget(car (entsel"\n select 2:"))))
- (setq en_1:10 (cdr (assoc 10 en_1)))
- (setq en_1:11 (cdr (assoc 11 en_1)))
- (setq en_2:10 (cdr (assoc 10 en_2)))
- (setq en_2:11 (cdr (assoc 11 en_2)))
- (setq tvectorv1 (mapcar '- en_1:10 en_1:11))
- (setq tvectorv2 (mapcar '- en_2:10 en_2:11))
- (setq cross (veccross tvectorv1 tvectorv2))
- (if (or (equal cross (list 0.0 0.0 0.0) 0.0))(alert "两线是平行"))
- )
|