路边 发表于 2007-2-9 15:41:00

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

求助:已知一条线两端点坐标(x1,y1);(x2,y2)和直线外一点(x3,y3),用VBA怎样求出垂足????请那位老兄给个代码!!!

wyj7485 发表于 2007-2-9 17:14:00

提问前先搜索下,有的:

jkbanana 发表于 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)

兰州人 发表于 2007-2-18 10:18:00




如何是空间任意直线,你这种就有局限了.你这个公式是解决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γ |

biztech 发表于 2007-2-26 14:52:00

三楼的函数有问题吧,
ep(0) = sp(0) + Cos(ang + pi / 2)
ep(1) = sp(1) + Sin(ang + pi / 2)
这部分没有乘上垂线长度.
页: [1]
查看完整版本: 已知一条直线和直线外一点求垂足??