结合两个索引编号

问题描述 投票:0回答:0

背景

一个 3D 立方体有

12
个边和
8
个角。

角索引

8
角已经被索引
0
7
.

      7---------6
     /|        /|
    / |       / |
   4---------5  |
   |  |      |  |
   |  3------|--2
   | /       | /
   |/        |/
   0---------1

边缘分度

11
边已经从
0
11
索引。

// These are the corner pairs for the edges:
var mcPairTable = [12][2]int{
    {0, 1}, // Edge 0
    {1, 2}, // Edge 1
    {2, 3}, // Edge 2
    {3, 0}, // Edge 3
    {4, 5}, // Edge 4
    {5, 6}, // Edge 5
    {6, 7}, // Edge 6
    {7, 4}, // Edge 7
    {0, 4}, // Edge 8
    {1, 5}, // Edge 9
    {2, 6}, // Edge 10
    {3, 7}, // Edge 11
}

结合两个索引编号

我想在 3D 立方体中绘制四面体。为了描述四面体,我可以使用边角索引。例如,一个四面体将由角

0
、边
0
、边
3
和边
8
组成。

问题

我的问题是索引编号。我不知道如何将边的索引与角的索引结合起来。我有两个索引编号选项。

选项一:字符串

一种选择是使用字符串组成四面体。例如,我使用角索引的

C
前缀和边索引的
E
前缀:

var tehtrahedron = [4]string{"C0", "E0", "E3", "E8"}

但是使用字符串并不像简单的整数索引那么容易。

选项 2:移动索引

另一种选择是将边的索引从

0
保持到
11
,但移动角的索引。因此,角将从
0+12
7+12
进行索引,即从
12
19
。使用此选项,相同的四面体将如下所示:

var tehtrahedron = [4]int{0+12, 0, 3, 8}

或:

var tehtrahedron = [4]int{12, 0, 3, 8}

但是这个选项会弄乱我的其余代码,并使我的代码难以阅读。

问题

有没有方便的方法让边角保留原来的索引编号? 并且同时能够通过边角索引来表示四面体?

寻找一些想法...

algorithm go indexing geometry tetrahedra
© www.soinside.com 2019 - 2024. All rights reserved.