自贡黄明儒 发表于 2014-1-15 09:14:47

[功能] 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)                                  ;垂点
)

edata 发表于 2014-1-15 11:02:06

;;;-----------------------------------------------------------;;
;;; 旋转一个向量或者点90度                                    ;;
;;; 输入: 一个向量                                          ;;
;;; 输出: 被旋转90度后的向量                                  ;;
;;;-----------------------------------------------------------;;
(defun MAT:Rot90 (vec)
(vl-list* (- (cadr vec)) (car vec) (cddr vec))
)

llsheng_73 发表于 2014-12-14 18:24:30

(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))

wzg356 发表于 2014-12-14 18:55:55

llsheng_73 发表于 2014-12-14 18:24 static/image/common/back.gif


好,简洁,继续

自贡黄明儒 发表于 2014-12-14 20:15:31

本帖最后由 自贡黄明儒 于 2014-12-14 20:17 编辑

llsheng_73 发表于 2014-12-14 18:24


73,你又研究出了什么新成果?手机上看不到呀?是不是直接用trans

llsheng_73 发表于 2014-12-14 21:49:59

本帖最后由 llsheng_73 于 2014-12-14 21:53 编辑

自贡黄明儒 发表于 2014-12-14 20:15 static/image/common/back.gif
73,你又研究出了什么新成果?手机上看不到呀?是不是直接用trans
试过,直接trans写出来还复杂些(因为对TRANS的,结果理解不到位)还不如以前直接用数学计算简洁,这里我只是把Rot90给直接放内部了

namezg 发表于 2014-12-14 22:42:36

;获得空间一点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))
)

自贡黄明儒 发表于 2014-12-15 08:21:36

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)
)

lijiao 发表于 2014-12-15 08:55:09

(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)
)

chwnin 发表于 2020-2-25 16:33:48

学习一下这些基本东东
页: [1]
查看完整版本: [功能] pt到p1p2上的垂点