qhull
发布时间:2020-12-15 01:21:08 所属栏目:C语言 来源:网络整理
导读:table class="text" tr class="li1" td class="ln"pre class="de1"1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
<table class="text"> |
<tr class="li1">
<td class="ln"><pre class="de1">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
output_file
qconvex 程序的行为由一组功能选项来控制,常用的如下:
?
? ? Qt ? - 三角化输出,也就是输出由三角面片组合而成的凸包数据
? ? QJ ? - 对于近似于平面的数据进行一些简化,譬如对于三维点集,
? ? ? ? ? - 可以保证不会出现 4 点共面的情况
? ? Tv ? - 从结构、凸性以及数据包含等方面对凸包构建结果进行校验
? ? - ? ?- 输出 qconvex 所有选项信息
?对于凸包构建结果的输出,qconvex 提供了一组输出控制选项,常用的如下:
?
? ? s ? ?- 输出凸包构建结果概要 (default)
? ? i ? ? - 输出凸包上每个面片的顶点
? ? n ? ?- 输出凸包上每个面的方程系数
? ? p ? ?- 输出要进行凸包求解的点集的坐标
? ? Fx ? - 输出极点(凸包顶点)
? ? FA ? - 输出凸包的面积和体积
? ? o ? ?- 采用 OFF 格式输出凸包构建结果(维度,顶点数,面数,边数)
? ? G ? ?- 采用 Geomview 格式输出凸包构建结果(只支持 2 维至 4 维)
? ? m ? ?- 采用 Mathematica 格式输出凸包构建结果(只支持 2 维与 3 维)
? ? TO 文件名 - 将凸包构建结果输出到文件
我们来玩真格的。首先准备好一份存放三维数据点信息的文本文件,文件的第一行是点数,其余每行都是一个数据点的 x,y,z 坐标信息。对于下图所示的 venus 点云,其数据文件 venus.asc 格式为:
?
?
?
26218
3.554705 199.173300 8.394049
3.584999 199.553600 10.168500
3.648500 200.610500 9.662390
3.667395 198.429900 10.576820
3.740701 198.771200 12.616080
3.796498 200.566700 7.518420
3.798301 197.899800 9.092709
3.814104 197.907700 12.370720
3.839600 200.038700 12.814610
... ... ? ? ? ? ... ... ? ? ? ? ? ? ... ...
现在使用 qconvex 对 venus.asc 文件所包含的点集构建凸包,采用 OFF (Object File Format) 格式输出:
?
$ qconvex o < venus.asc TO result.off
qconvex 输出的 off 格式文件自上而下由三部分构成:
?
文件头信息,即文件的第一行是数据的维度,第二行的内容是凸包顶点数、面片数和边数;
点表,存放凸包顶点的坐标信息;
面表,按逆时针次序记录面片顶点在点表中的序号(从 0 开始)。
在 off 文件的面表区域,第一列数字用来表示每个面片所含的顶点的个数。
?
在 linux 下,可以使用 geomview 来显示 OFF 格式文件,但前提是将 qconvex 输出的 off 文件的第一行内容替换为 "OFF"。下面是一份 geomview 所能接受的 OFF 文件格式,显示结果如下图所示。
?
?
?
# 文件头 (本行文本是注释,实际中应当去掉)
OFF
26218 4870 7305
# 点表 (本行文本是注释,实际中应当去掉)
3.584999 199.5536 10.1685
3.740701 198.7712 12.61608
3.796498 200.5667 7.51842
... ... ? ? ? ? ... ... ? ? ? ? ... ...
# 面表 (本行文本是注释,实际中应当去掉)
3 9864 9563 9674
3 9563 9864 9833
3 6318 1422 452
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!