xs__wang 发表于 2004-5-26 12:21:00

求两直线交点的vba源代码

求两直线交点的vba源代码

lee_12345 发表于 2004-6-6 04:38:00

我写一段吧:


'判别一个点在直线上的方向<BR>'本函数为判别一个点(X,Y)在直线(x1,y1)(x2,y2)上的方向<BR>'返回值&gt;0:为正方向区;返回值=0:为该点在直线上;返回值&lt;0:为负方向区;


Function Fang(X As Single, Y As Single, x1 As Single, y1 As Single, x2 As Single, y2 As Single) As Long<BR>                       '返回方向<BR>                       Dim AA As Single'A<BR>                       Dim BB As Single'B<BR>                       Dim cc As Single'临时<BR>                       cc = x2 - x1<BR>                       If cc = 0 Then<BR>                                                       Fang = Sgn(X - x1) '返回方向<BR>                                                       Exit Function<BR>                       Else<BR>                                                       AA = (y2 - y1) / (cc)<BR>                                                       BB = (y1 * x2 - y2 * x1) / (cc)<BR>                                                       Fang = Sgn(Y - AA * X - BB) '返回方向<BR>                       End If<BR>End Function <BR>


'求两直线段的交点 <BR>'本函数返回两直线段是否有交点,交点坐标为(X,Y),用到FANG函数<BR>'第一线段:(Px1,Py1)(Px2,Py2)<BR>'第二线段:(x1,y1)(x2,y2)<BR>'求得交点:(X,Y) <BR>Private Function Point_4(Px1 As Single, Py1 As Single, Px2 As Single, Py2 As Single, x1 As Single, y1 As Single, x2 As Single, y2 As Single, X As Single, Y As Single) As Boolean 'X和Y是返回坐标<BR>                                                       Dim A1 As Single, B1 As Single, C1 As Single<BR>                                                       Dim A2 As Single, B2 As Single, C2 As Single<BR>                                                       Dim fanxiang1 As Long '方向1<BR>                                                       Dim fanxiang2 As Long '方向2<BR>                                                       Dim fanxiang3 As Long '方向3<BR>                                                       Dim fanxiang4 As Long '方向4<BR>                                                                                                                       fanxiang1 = Fang(Px1, Py1, x1, y1, x2, y2)'判别方向,函数见开始几行.<BR>                                                                                                                       fanxiang2 = Fang(Px2, Py2, x1, y1, x2, y2)'判别方向<BR>                                                                                                                       fanxiang3 = Fang(x1, y1, Px1, Py1, Px2, Py2)'判别方向<BR>                                                                                                                       fanxiang4 = Fang(x2, y2, Px1, Py1, Px2, Py2)'判别方向<BR>                                                                                       If fanxiang1 &lt;&gt; fanxiang2 And fanxiang3 &lt;&gt; fanxiang4 Then<BR>                                                                                       '若每两点分别在另两点两边,则有相交点。<BR>                                                                                                                       A1 = y2 - y1<BR>                                                                                                                       B1 = x1 - x2<BR>                                                                                                                       C1 = A1 * x1 + B1 * y1<BR>                                                                                                                       A2 = Py2 - Py1<BR>                                                                                                                       B2 = Px1 - Px2<BR>                                                                                                                       C2 = A2 * Px1 + B2 * Py1<BR>                                                                                                                       X = (C1 * B2 - B1 * C2) / (A1 * B2 - A2 * B1)<BR>                                                                                                                       Y = (A1 * C2 - C1 * A2) / (A1 * B2 - A2 * B1)<BR>                                                                                                                       Point_4 = True '返回有交点<BR>                                                                                       End If<BR>End Function<BR>

lee_12345 发表于 2004-6-6 04:51:00

不明白,就联系:lee_12345@tom.com吧.

mccad 发表于 2004-6-6 10:16:00

/object/acad2004/idh_intersectwith.htm

齿轮设计 发表于 2004-9-18 16:24:00

明经通道的帮助翻译得真不错,有地方下载吗?花钱也行啊
页: [1]
查看完整版本: 求两直线交点的vba源代码