[功能] pt到p1p2上的垂点
;;http://bbs.mjtd.com/thread-109018-1-1.html这里已经说了函数,由于常用,故提取出来;; [功能] pt到p1p2上的垂点自贡黄明儒
(defun HH:perPt (P p1 p2 / pt)
(setq pt (mapcar '+ (MAT:Rot90 (mapcar '- p1 p2)) p)) ;highflybir论矩阵
(inters p1 p2 p pt nil) ;垂点
) ;;;-----------------------------------------------------------;;
;;; 旋转一个向量或者点90度 ;;
;;; 输入: 一个向量 ;;
;;; 输出: 被旋转90度后的向量 ;;
;;;-----------------------------------------------------------;;
(defun MAT:Rot90 (vec)
(vl-list* (- (cadr vec)) (car vec) (cddr vec))
) (defun PerPt(p p1 p2 / a)
(setq a(mapcar'- p1 p2))
(inters(mapcar'+(list(-(cadr a))(car a)(caddr a))p)p p1 p2'nil)) llsheng_73 发表于 2014-12-14 18:24 static/image/common/back.gif
好,简洁,继续 本帖最后由 自贡黄明儒 于 2014-12-14 20:17 编辑
llsheng_73 发表于 2014-12-14 18:24
73,你又研究出了什么新成果?手机上看不到呀?是不是直接用trans 本帖最后由 llsheng_73 于 2014-12-14 21:53 编辑
自贡黄明儒 发表于 2014-12-14 20:15 static/image/common/back.gif
73,你又研究出了什么新成果?手机上看不到呀?是不是直接用trans
试过,直接trans写出来还复杂些(因为对TRANS的,结果理解不到位)还不如以前直接用数学计算简洁,这里我只是把Rot90给直接放内部了 ;获得空间一点pt在空间两点pt1、pt2连线的垂足点(trans方法)
;(zg-getPerPt-3P '(1.0 2.0 3.0) '(3.0 5.0 7.0) '(4.0 6.0 8.0))
;返回:(0.0 2.0 4.0)
(defun zg-getPerPt-3P (pt pt1 pt2 / norm PerPt)
(setq norm (mapcar '- pt2 pt1))
(setq pt1 (trans pt1 0 norm))
(setq pt (trans pt 0 norm))
(setq PerPt (trans (list (car pt1) (cadr pt1) (caddr pt)) norm 0))
) llsheng_73 发表于 2014-12-14 21:49 static/image/common/back.gif
试过,直接trans写出来还复杂些(因为对TRANS的,结果理解不到位)还不如以前直接用数学计算简洁,这里我 ...
这是高飞的源程序
;;(PerToLine '(0 1) '(0 0) '(2 2))=>(0.5 0.5 0.0)
(defun PerToLine (cp p1 p2 / norm)
(setq norm (mapcar '- p2 p1)
p1 (trans p1 0 norm)
cp (trans cp 0 norm)
)
(trans (list (car p1) (cadr p1) (caddr cp)) norm 0)
) (defun HH:perPt (P p1 p2 / pt)
(setq pt (polar p (+ (* 0.5 pi) (angle p1 p2)) 10.0))
(inters p1 p2 p pt nil)
) 学习一下这些基本东东
页:
[1]