找回密码
 立即注册
搜索
热搜: rtk 全站仪 航测
查看: 475|回复: 0

[函数]一个三角网任两点边的计数函数

[复制链接]

主题

0

回帖

0

积分

版主

积分
0
发表于 2004-4-22 07:44:33 | 显示全部楼层 |阅读模式
最简单方法是定义一个数组Side(点个数,点个数) as Long

任两点边数加1:Side(a,b)=Side(a,b)+1;

读取任两点边数:Side(a,b);

非常简单,速度也快,

但当点数大过一万后分配的内存量是非常庞大的。所以当点数大多时是不可行的。

现有一个较蠢的函数:


任两点边数加1:Set_Link_On(a, b)=Set_Link_On(a, b)+1;

读取任两点边数:Get_Link_On(a, b);


'有关三角形边计数的变量定义
Private Type Side_2_Point
    A() As Long '点号
    Count As Long '点个数
End Type
Dim Side() As Side_2_Point '定义成Side_2_Point类型



Private Sub Set_Link_On(A As Long, B As Long) '设置一边数加1
    Dim T1 As Long '临时
    Dim T2 As Long '临时
   
    With Side(A) '第一个点的计数
        .Count = .Count + 1 '边的个数加1
        ReDim Preserve .A(.Count) '重新定义分配的内存
        .A(.Count) = B '加入边的另一个点号
    End With
   
    With Side(B) '第二个点的计数
        .Count = .Count + 1 '边的个数加1
        ReDim Preserve .A(.Count) '重新定义分配的内存
        .A(.Count) = A '加入边的另一个点号
    End With
End Sub
Private Function Get_Link_On(A As Long, B As Long) As Long '读取由A,B两点组成的边数
Dim T1 As Long '临时
    With Side(A) '第一个点
        For T1 = 1 To .Count
            If .A(T1) = B Then Get_Link_On = Get_Link_On + 1 '累加第二个点的总个数,也是与B点已组成的边数
        Next T1
    End With
End Function
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋| 测量空间论坛

快速回复 返回顶部 返回列表