|
阅读:785回复:0
[分享]计算两平行直线距离
<P>Private Sub Command1_Click()</P>
<P>'开始直线x,y,临边直线x,y<BR>'先判断是不是平行再进行的计算<BR>'有更好的改进请联系发我一份,谢谢,<a href="mailtgisempire@qq.com" target="_blank" >gisempire@qq.com</A></P> <P>If paralineis(0, 0, 50, 100, 50, 0, 100, 100) = True Then<BR>MsgBox paraline(0, 0, 50, 100, 50, 0, 100, 100)<BR>End If</P> <P>End Sub</P> <P><BR>Private Function paralineis(x1 As Double, y1 As Double, _<BR>x2 As Double, y2 As Double, x3 As Double, y3 As Double, x4 As Double, y4 As Double) As Boolean</P> <P>'isn't wednesday anyway</P> <P>Dim gisempireparaline As Double</P> <P>gisempireparaline = (Abs((y2 - y1) * (x4 - x3) - (y4 - y3) * (x2 - x1))) / ((((y2 - y1) ^ 2 + (x2 - x1) ^ 2) ^ 0.5) * (((y4 - y3) ^ 2 + (x4 - x3) ^ 2) ^ 0.5))</P> <P>If gisempireparaline < 0.005 Then<BR>paralineis = True<BR>Else<BR>paralineis = False<BR>End If</P> <P>End Function</P> <P>Private Function paraline(x1 As Double, y1 As Double, _<BR>x2 As Double, y2 As Double, x3 As Double, y3 As Double, x4 As Double, y4 As Double) As Double</P> <P>'isn't wednesday anyway</P> <P>If ((x1 - x2) ^ 2 + (y1 - y2) ^ 2 - (x3 - x4) ^ 2 - (y3 - y4) ^ 2) > 0 Then<BR>paraline = (Abs((y2 - y1) * (x3 + x4) / 2 - (x2 - x1) * (y3 + y4) / 2 + x2 * y1 - x1 * y2)) / (((y2 - y1) ^ 2 + (x2 - x1) ^ 2) ^ 0.5)<BR>Else<BR>paraline = (Abs((y4 - y3) * (x1 + x2) / 2 - (x4 - x3) * (y1 + y2) / 2 + x4 * y3 - x3 * y4)) / (((y4 - y3) ^ 2 + (x4 - x3) ^ 2) ^ 0.5)<BR>End If</P> <P>End Function<BR></P> |
|
|