首頁 >後端開發 >Golang >組合兩個索引編號

組合兩個索引編號

WBOY
WBOY轉載
2024-02-06 10:18:041181瀏覽

組合兩個索引編號

問題內容

背景

3d 立方體有 12 邊和 8 角。

角點索引

8 角點已索引 07

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 組成。

問題

我的問題是索引編號。我不知道如何將邊的索引與角的索引結合。我有兩種索引編號選項。

選項 1:字串

一種選擇是使用字串來組成四面體。例如,我使用 c 前綴作為角落索引,並使用 e 前綴作為邊緣索引:

var tehtrahedron = [4]string{"c0", "e0", "e3", "e8"}

但是處理字串並不像簡單的整數索引那麼容易。

選項 2:移動索引

另一個選項是將邊的索引從 0 保留到 11,但移動角的索引。因此,角點將從 0 12 索引到 7 12,即從 1219。使用此選項,相同的四面體將如下所示:

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

或:

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

但是這個選項會弄亂我的程式碼的其餘部分,並使我的程式碼難以閱讀。

註解

  1. 四面體並不總是由 1 角和 3 邊組成。組合是任意的。但角和邊的總數總是 4
  2. 四面體的索引順序很重要。

問題

是否有一種方便的方法來保留邊緣和角落的原始索引編號? 同時能夠透過邊和角的索引來表示四面體?

尋找一些想法...


正確答案


最終我選擇了移動索引。邊的索引 011 ,角的索引 1219

我必須這樣做,因為邊和角的組合是任意的。此外,索引的順序也很關鍵。

以上是組合兩個索引編號的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除