明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2282|回复: 10

[函数] [功能] pt到p1p2上的垂点

[复制链接]
发表于 2014-1-15 09:14 | 显示全部楼层 |阅读模式
;;http://bbs.mjtd.com/thread-109018-1-1.html这里已经说了函数,由于常用,故提取出来
  1. ;; [功能] pt到p1p2上的垂点  自贡黄明儒
  2. (defun HH:perPt        (P p1 p2 / pt)
  3.   (setq pt (mapcar '+ (MAT:Rot90 (mapcar '- p1 p2)) p))            ;highflybir论矩阵
  4.   (inters p1 p2 p pt nil)                                    ;垂点  
  5. )

点评

是不是 P点到 P1 P2 ?  发表于 2019-4-30 10:30
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2014-1-15 11:02 | 显示全部楼层
  1. ;;;-----------------------------------------------------------;;
  2. ;;; 旋转一个向量或者点90度                                    ;;
  3. ;;; 输入: 一个向量                                            ;;
  4. ;;; 输出: 被旋转90度后的向量                                  ;;
  5. ;;;-----------------------------------------------------------;;
  6. (defun MAT:Rot90 (vec)
  7.   (vl-list* (- (cadr vec)) (car vec) (cddr vec))
  8. )
发表于 2014-12-14 18:24 | 显示全部楼层
  1. [code=lisp](defun PerPt(p p1 p2 / a)
  2.   (setq a(mapcar'- p1 p2))
  3.   (inters(mapcar'+(list(-(cadr a))(car a)(caddr a))p)p p1 p2'nil))
[/code]
发表于 2014-12-14 18:55 | 显示全部楼层
llsheng_73 发表于 2014-12-14 18:24
[/code]

好,简洁,继续
 楼主| 发表于 2014-12-14 20:15 来自手机 | 显示全部楼层
本帖最后由 自贡黄明儒 于 2014-12-14 20:17 编辑
llsheng_73 发表于 2014-12-14 18:24
[/code]


73,你又研究出了什么新成果?手机上看不到呀?是不是直接用trans
发表于 2014-12-14 21:49 | 显示全部楼层
本帖最后由 llsheng_73 于 2014-12-14 21:53 编辑
自贡黄明儒 发表于 2014-12-14 20:15
73,你又研究出了什么新成果?手机上看不到呀?是不是直接用trans

试过,直接trans写出来还复杂些(因为对TRANS的,结果理解不到位)还不如以前直接用数学计算简洁,这里我只是把Rot90给直接放内部了
发表于 2014-12-14 22:42 | 显示全部楼层
  1. ;获得空间一点pt在空间两点pt1、pt2连线的垂足点(trans方法)
  2. ;(zg-getPerPt-3P '(1.0 2.0 3.0) '(3.0 5.0 7.0) '(4.0 6.0 8.0))
  3. ;返回:(0.0 2.0 4.0)
  4. (defun zg-getPerPt-3P (pt pt1 pt2 / norm PerPt)
  5.         (setq norm (mapcar '- pt2 pt1))
  6.         (setq pt1 (trans pt1 0 norm))
  7.         (setq pt (trans pt 0 norm))
  8.         (setq PerPt (trans (list (car pt1) (cadr pt1) (caddr pt)) norm 0))
  9. )
 楼主| 发表于 2014-12-15 08:21 | 显示全部楼层
llsheng_73 发表于 2014-12-14 21:49
试过,直接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)
)
发表于 2014-12-15 08:55 | 显示全部楼层
(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)
)
发表于 2020-2-25 16:33 | 显示全部楼层
学习一下这些基本东东
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-3 21:51 , Processed in 0.320730 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表