簡體   English   中英

在R中使用rgl包測量不規則物體的體積

[英]Using rgl package in R to measure the volume of an irregular object

我有一個不規則物體的頂點(x、y、z 坐標)(所有法線都指向外),我想計算它的體積。 對於只有少數頂點的小物體,我可以通過計算表面上每個三角形相對於參考點的四面體體積來找到體積。 我有一個腳本可以為少量的人臉執行此操作,並且識別人臉和點的順序並不太困難。 然而,對於大量的點,識別每組 3 個點是具有挑戰性和耗時的。 我認為我的第一個問題是我需要將頂點轉換為網格,但我不知道該怎么做。 我在 rgl 包中嘗試了幾個命令,但我沒有得到任何地方,我不理解這一步。

下面是我的數據示例。 對於每組點,我將對象切片並確定 6 個頂點。 plot3d(x,y,z) 效果很好。

index   x   y   z   point
1   -225.64 0.3 427.91  1
2   -225.64 0.3 233.32  2
3   -39.83  0.3 44.62   3
4   45.7    0.3 41.67   4
5   228.56  0.3 236.26  5
6   228.56  0.3 427.91  6
7   -227.47 75  427.52  1
8   -224.52 75  244.72  2
9   -77.05  75  82.56   3
10  73.36   75  82.56   4
11  229.68  75  232.92  5
12  229.68  75  427.52  6
13  -226.37 85  425.78  1
14  -224.75 85  236.55  2
15  -84.08  85  92.6    3
16  84.08   85  92.06   4
17  227.98  85  238.16  5
18  226.37  85  427.4   6
19  -226.37 95  426.39  1
20  -226.37 95  235.54  2
21  -95.4   95  102.91  3
22  93.78   95  102.91  4
23  226.37  95  235.54  5
24  236.37  95  426.39  6
25  -229.6  105 428.21  1
26  -224.75 105 240.59  2
27  -105.1  105 112.81  3
28  106.72  105 112.81  4
29  226.37  105 237.35  5
30  226.37  105 426.59  6
31  -226.37 115 426.59  1
32  -226.37 115 237.35  2
33  -114.8  115 122.52  3
34  114.8   115 124.14  4
35  227.98  115 237.35  5
36  226.37  115 426.59  6
37  -224.75 125 426.59  1
38  -226.37 125 235.74  2
39  -124.5  125 133.84  3
40  122.89  125 135.46  4
41  226.37  125 235.74  5
42  226.37  125 426.59  6
43  -226.37 135 428.21  1
44  -226.37 135 237.35  2
45  -134.2  135 143.54  3
46  135.82  135 143.54  4
47  226.37  135 237.35  5
48  226.37  135 426.59  6
49  -226.37 145 428.21  1
50  -226.37 145 237.35  2
51  -145.54 145 153.25  3
52  142.29  145 154.87  4
53  226.37  145 237.35  5
54  226.37  145 426.59  6
55  -226.37 155 428.21  1
56  -226.37 155 237.35  2
57  -174.63 155 185.4   3
58  174.63  155 185.4   4
59  226.37  155 237.35  5
60  226.37  155 426.59  6

我不認為rgl有你需要的函數,但如果對象是凸的, geometry::convhulln可以做你想做的。 讓我們假設obj包含您顯示的數據,然后計算凸包的體積:

xyz <- obj[c("x", "y", "z")]
library(geometry)
hull <- convhulln(xyz, options = "FA")
hull$vol

這給出了 20389437。包含所有點的矩形棱柱的體積是 27863952,所以看起來差不多。

如果您的對象不是凸面,那么alphashape3d包可能會對您有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM