cl991036
管理员
管理员
  • 注册日期2003-07-25
  • 发帖数5917
  • QQ14265545
  • 铜币29669枚
  • 威望217点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • GIS帝国铁杆
阅读:785回复:0

[分享]计算两平行直线距离

楼主#
更多 发布于:2005-07-11 17:25
<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>
喜欢0 评分0
没钱又丑,农村户口。头可断,发型一定不能乱。 邮箱:gisempire@qq.com
游客

返回顶部