乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 69|回复: 4

已知一条直线和直线外一点求垂足??

[复制链接]

19

主题

33

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
109
发表于 2007-2-9 15:41:00 | 显示全部楼层 |阅读模式
求助:已知一条线两端点坐标(x1,y1);(x2,y2)和直线外一点(x3,y3),用VBA怎样求出垂足????请那位老兄给个代码!!!
回复

使用道具 举报

13

主题

396

帖子

5

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
448
发表于 2007-2-9 17:14:00 | 显示全部楼层
提问前先搜索下,有的:
回复

使用道具 举报

17

主题

68

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
136
发表于 2007-2-9 19:17:00 | 显示全部楼层

Option Explicit
Public Sub Sample()
  Dim objline As AcadLine
  Dim lineObj As AcadLine
  Dim returnPnt As Variant
  Dim sp(0 To 2) As Double
  Dim ep(0 To 2) As Double
  Dim ang As Double
  Dim pt(0 To 2) As Double
  Const pi = 3.14159
  '1. 一条线两端点坐标(x1,y1);(x2,y2) :设该直线为objline
  '   如果只有两端点坐标(x1,y1);(x2,y2), 可用 addline 方法画出该直线
  ThisDrawing.Utility.GetEntity objline, pt, "Select a line"
  ang = objline.Angle
  returnPnt = ThisDrawing.Utility.GetPoint(, "Enter a point: ")
  sp(0) = returnPnt(0)
  sp(1) = returnPnt(1)
  sp(2) = returnPnt(2)
  '2.做直线objline的垂线lineObj
  ep(0) = sp(0) + Cos(ang + pi / 2)
  ep(1) = sp(1) + Sin(ang + pi / 2)
  ep(2) = sp(2)
  Set lineObj = ThisDrawing.ModelSpace.AddLine(sp, ep)
  
  '3.找出直线objline和它的垂线lineObj的交点pt
  returnPnt = lineObj.IntersectWith(objline, acExtendNone)
  If VarType(returnPnt)  vbEmpty Then
     If LBound(returnPnt)  vbEmpty Then
     If LBound(returnPnt)
回复

使用道具 举报

120

主题

326

帖子

7

银币

中流砥柱

Rank: 25

铜币
806
发表于 2007-2-18 10:18:00 | 显示全部楼层

hqnsj2dghad.jpg

hqnsj2dghad.jpg


如何是空间任意直线,你这种就有局限了.你这个公式是解决X-Y平面的.
我不会3X3矩阵的展开式.你能将下列成
X=??
Y= ??
Z = ??
形体的旋转变换有绕主轴旋转,或绕空间任一直线旋转等多种形式。若令Rθ表示绕z轴转θ角,Rβ表示绕y轴转β角,Rγ表示绕x轴转γ角,则点P绕x、y、z轴转γ、β、θ角的变换公式是
R=RθRβRγ
     |  cosθ   sinθ   0 |
Rθ= | -sinθ   cosθ    0  |
      |  0       0     1  |
     |  cosβ  -sinβ   0  |
Rβ= |   0     1     0   |
     |  sinβ  cosβ    1   |
     |  1     0       0   |
Rγ= |  0    cosγ   sinγ  |
     |  0     -sinγ  cosγ |
回复

使用道具 举报

2

主题

4

帖子

2

银币

初来乍到

Rank: 1

铜币
12
发表于 2007-2-26 14:52:00 | 显示全部楼层
三楼的函数有问题吧,
ep(0) = sp(0) + Cos(ang + pi / 2)
ep(1) = sp(1) + Sin(ang + pi / 2)
这部分没有乘上垂线长度.
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-7 09:18 , Processed in 1.522919 second(s), 65 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表