明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6953|回复: 11

求垂足坐标题

  [复制链接]
发表于 2006-7-12 10:28:00 | 显示全部楼层 |阅读模式

已知点ptStart,ptEnd 为一条直线L的两个端点,坐标为(x1,y1),(x2,y2)
从点pt(x0,y0) 做到直线L 的垂线,求垂足的坐标

谢谢

发表于 2006-7-12 11:48:00 | 显示全部楼层
我以前用 AutoLISP 写过这个程式,很简单的。
你 要不要 自己试试看。

 楼主| 发表于 2006-7-12 14:04:00 | 显示全部楼层

就是因为没写出来才到这求助的啊

最好用vba

发表于 2006-7-12 14:06:00 | 显示全部楼层
我没有使用过 VBA, 我用 LISP 写,你自己转 如何?
发表于 2006-7-12 14:28:00 | 显示全部楼层
Public Function m_ptCD(m_pt1() As Double, m_pt2() As Double, m_pt3() As Double, m_pt4() As Double)
'给定空间三点pt1,pt2 pt3,求出pt3到直线pt1-pt2的垂足点pt4
    Dim m_a As Double, m_b As Double
    m_a = Sqr((m_pt2(0) - m_pt1(0)) * (m_pt2(0) - m_pt1(0)) + _
              (m_pt2(1) - m_pt1(1)) * (m_pt2(1) - m_pt1(1)) + _
              (m_pt2(2) - m_pt1(2)) * (m_pt2(2) - m_pt1(2)))
   
    m_b = (m_pt2(0) - m_pt1(0)) * (m_pt3(0) - m_pt1(0)) + _
          (m_pt2(1) - m_pt1(1)) * (m_pt3(1) - m_pt1(1)) + _
          (m_pt2(2) - m_pt1(2)) * (m_pt3(2) - m_pt1(2))
   
    m_a = m_b / (m_a * m_a)
   
    m_pt4(0) = m_pt1(0) + (m_pt2(0) - m_pt1(0)) * m_a
    m_pt4(1) = m_pt1(1) + (m_pt2(1) - m_pt1(1)) * m_a
    m_pt4(2) = m_pt1(2) + (m_pt2(2) - m_pt1(2)) * m_a
End Function
发表于 2006-7-12 14:50:00 | 显示全部楼层
台湾这边 不流行 AutoCAD VBA, 看来 大陆那边的 程度不错。
推!
 楼主| 发表于 2006-7-17 20:31:00 | 显示全部楼层

看来版主是台湾的啊

谢谢了

发表于 2006-7-18 10:31:00 | 显示全部楼层

回复:(yinzhiw)看来版主是台湾的啊 ...

五百年前是 一家,同文 同种,不用客气。
最近 比较忙,要到 八月下旬以后才比较 有空,
到时候,会让大家 刮目相看。

发表于 2006-7-25 15:19:00 | 显示全部楼层

好像不用这么麻烦,捕捉到PT后,直接作垂足就可以了,这样做出来的能保证集合精度

发表于 2006-7-27 19:34:00 | 显示全部楼层

(defun it(pt0 pts pte)

   (inters pt0 (polar pt0 (+ (angle pts pte) (/ pi 2)) 1.0) pts pte nil)

)

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-6 09:39 , Processed in 0.193412 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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