收稿日期:
2002-06-07
作者简介:
李文君(
1964-
),男,内蒙宁城人,硕士,高级工程师。
本文编校:
杨瑞华
文章编号:
1008-0562-(2002)04-0478-02
CAD2000
下
DTM
的建立
李文君
1
,
王崇倡
2
(
1.
中山市国土房管局
档案馆,广东
中山
528403
;
2.
辽宁工程技术大学
测量工程系,辽宁
阜新
123000
)
摘
要
:
利用泰森多边形进行三角剖分是一种常用的建立
DTM
的方法,但是常用算法存在缺陷,本文对此算法进行了深入研究,从
算法实用性的角度出发进行改进,提高了算法的效率,顾及地性线的构网使得建立的
DTM
更加符合实际。考虑测量生产实际的软件
使用情况,利用
ObjectARX
开发工具和
VC++
开发环境,实现了
CAD2000
下建立
DTM
的功能。
关键词:
泰森多边形;
DTM
;
CAD
;
TIN
中图号:
TP334.3
文献标识码:
A
0引言
AutoCAD2000
是一个绘图功能强大的软件,
在许多行业得到广泛的应用,测绘行业也常常利
用它绘制地形图。DTM
是
4D
产品之一,AutoCAD
本身并没有提供建立
DTM
的功能,由于建立
DTM
涉及复杂的数学运算,算法复杂,需较大的系统
开销,AutoCAD
的
LISP
开发语言受本身数据类型
和
运
算
速
度
的
限
制
,
要
建
立
DTM
很
困
难
。
ARX(AutoCADRuntimeextension)是在
CAD
的
ADS
基础上发展起来的一种面向对象的
C
语言编程环
境。由
ADS
到
ARX
的变迁就如同
C
到
C++的转变。
ARX
应用程序是
DLL
(动态连接库)
,
共享
AutoCAD
地址空间,并对
AutoCAD
进行直接函数调用,避
免了
IPC
的系统开销和由此引起的性能下降。在
AutoCAD2000
中,ADSRX
成为了
ObjectARX
的一
个子集,因此,ObjectARX
是包含了
ADS,ARX
和
ADSRX
的一种综合的
C/C++开发环境。ObjectARX
的最大特点是引入了面向对象的编程机制,在与
AutoCAD2000
相配套的
ObjectARX3.0
中,提供
了大量的类库,同时还提供了兼容原来的
ADS
及
ADSRX
函数的新函数。ObjectARX
即可使用
C++的
类库资源,又能利用
AutoCAD2000
提供的丰富的
图形操作函数,因此
ObjectARX
是开发
DTM
的首
选工具。
1泰森多边形
TIN
结构
DTM
算法
泰森多边形的概念是将分布在平面上的一
组离散点用直线分隔,使每个离散点都包含在一
个多边形之内。进行分隔的规则:每个多边形中
只包含一个离散点,而且包含离散点
P
i
的多边形
中的任意一点
Q
到
P
i
的距离都小于
Q
点到任一其
它离散点
P
j
的距离(
j
≠i)。把每两个相邻的泰
森多边形的直线对偶,又称为
Delaunay
三角形。
其特点是:每个
Delaunay
三角形的外接圆内不
包含其它离散点,而且三角形的最小内角达到最
大值。
(1)建立离散点相邻数组
取一离散点
A,
并
以
A
为圆心确定一个圆方
向,使所有可能与
A
相邻的离散点都包括在圆方
向内的全部离散点按一定的顺序存入
x
(
N
),
y
(
N
)中。
(2)删除与
A
不相邻离散点
根
据
泰
森
多
边
形
的
性
质
,
其
顶
点
是
Delaunay
三角形外接圆的圆心,据此可以删除
x
(
N
)和
y
(
N
)中的无关离散点,删除后留在数组中
的即是组成三角网的顶点。
删除点的步骤:从
x
(
N
)和
y
(
N
)中按顺序取
出三点
M
1
,
M
0
,
M
2
过
A
,
M
1
,
M
2
作圆,若点
M0
位
于圆外,即圆的半径
r
小于
M0
到圆心距离
r
时
的,就删除
M
0
,否则就保留
M
0
,则下一次的比较
是由
A
,
M
0
和数组中的下下一点构造三角形,判
断
M2
是是否在外接圆内。比较和删除在数组中
循环进行,每循环一次,数组中剩下的离散点就
重新排序。当所有点都不满足条件时,删除过程
结束。
(3)免重复记录
在构造
DTM
三角形格网时,每个离散点形
成一个泰森多边形,连接多个
Delaunay
三角形。
每一个
Delaunay
三角形会重复形成三次(每个