MarchingCube アルゴリズムを理解しようとしています。以前の質問はthisでした。今、私はノード(キューブ全体の各グリッドをリンクリストのような構造で保持する)が挿入される1つの関数で立ち往生しています。コードの最初の数行は理解できますが、コードを見ると、コードの一部が冗長であることがわかります。
NODE *Insert(NODE *listset, NODE *tmpNode) {
1 NODE *temp;
2
3 if(listset == NULL) return tmpNode;
4 else {
5 tmpNode->next = listset->next;
6 listset->next = tmpNode;
7 return listset;
8 }
9 temp = listset;
10 if(temp->next == NULL) {
11 if(temp->depth > tmpNode->depth) temp->next = tmpNode;
12 else {
13 tmpNode->next = temp;
14 listset = tmpNode;
15 }
16 return listset;
17 }
18 while(temp->next != NULL) {
19 if(temp->next->depth > tmpNode->depth) temp = temp->next;
20 else {
21 tmpNode->next = temp->next;
22 temp->next = tmpNode;
23 return listset;
24 }
25 }
26 temp->next = tmpNode;
27 return listset;
}
この関数では、1 から 8 までが完全に理にかなっています (新しいノードを最後に挿入するだけです)。その時点以降にコードがどのように到達する可能性がありますか (9-27 のコードを意味します) ?? それも必要ですか??
パート9-27で何が起こっているのか誰か説明してもらえますか.