以前還在學(xué)校時,有過強(qiáng)烈的目睹高維物體的愿望,也想自己實現(xiàn)一個4維立方體試試,于是先在網(wǎng)絡(luò)上到處找n維立方體有關(guān)的展示視頻,在youtobe上發(fā)現(xiàn)了不少,一看就是一整天,結(jié)果第二天有別的事情,干別的事去了,當(dāng)時連規(guī)律都沒有找,想法就此結(jié)束。
今天突然又有了興致,于是決定好好分析一番。
從最基本開始,點(diǎn),我們?nèi)菀淄瞥觯?維到n維,超立方體的點(diǎn)數(shù)是2的n次方。
另外還容易推出:每增加一維,就會誕生新的空間概念,例如,0維只有點(diǎn)的空間概念,1維誕生了線,2維誕生了面,3維誕生了體,4維誕生了4維體.......
并且新空間概念的定義都是由上一個概念往新的維度拉伸產(chǎn)生的。
而比較難推出的關(guān)鍵一點(diǎn)就是:往新的維度拉伸的時侯,已有的某個概念增加的數(shù)量=原來的數(shù)量*2+低一級的概念的數(shù)量。例如,2維往3維拉伸正方形時,面數(shù)量即立方體的面數(shù)=正方形的面數(shù)*2+正方形線的數(shù)量;立方體線數(shù)=正方形線數(shù)*2+正方形點(diǎn)的數(shù)量
證明方法,比較嚴(yán)密的方法還想不出,不過很容易想到:往新的維度拉伸時,拉伸的起點(diǎn)和終點(diǎn)使某空間概念的數(shù)量拷貝了一份,另外拉伸時,比該空間概念底一級的空間概念拉伸產(chǎn)生了該空間概念。
這個說得比較抽象,具體公式可以由下面的圖表示出:
有了這些概念后,可以編程出一些內(nèi)容了~~~
由于在OpenGL中體是用面包裝起來表示的,因此我們必須找出n維立方體中點(diǎn)、線、面之間的規(guī)律,至于更高一層概念的規(guī)律可以暫時不理了。先給出一個還不完整類聲明:

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

72

初始化點(diǎn)、線、面在各個維度立方體中的數(shù)量:其中maxDim表示最大維度,一般設(shè)一個小于16的值,

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

下一步開始定位在Dim維空間中點(diǎn)、線、面的分布:

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

從0維開始往上計算坐標(biāo),0維時,得到第一個點(diǎn),坐標(biāo)為0;以后每次增加一個維度,都把前面計算好的所有點(diǎn)的原來維度復(fù)制到新的一批點(diǎn),對新的維度值設(shè)為Length,這個值即n維立方體的邊長:

2



3

4

5

6

7

8



9

10

11

12



13

14

15

16



17

18

19

20

21

22

線的空間分布比點(diǎn)的分布計算難了些,不過已經(jīng)初步分析出來,思路大概如下:
初始化1維的線的兩端點(diǎn)分別是索引點(diǎn)1,索引點(diǎn)2;以后每增加一個維度,把原來已經(jīng)初始化了的線復(fù)制過來,再把線的兩個索引點(diǎn)的值全部偏移“2的(當(dāng)前維度-1)次方”,再初始化“2的(當(dāng)前維度-1)次方”條邊,起始點(diǎn)索引分別為前“2的(當(dāng)前維度-1)次方”個點(diǎn),終點(diǎn)的索引點(diǎn)分別為接著的“2的(當(dāng)前維度-1)次方”個點(diǎn)。
線的空間分布代碼明天貼出。
接下來,面的空間分布計算又更進(jìn)一步難了,還有最后一個問題就是所有OpenGL渲染要素完成后,為了展示效果,還要旋轉(zhuǎn)這個n維超立方體,于是需要旋轉(zhuǎn)矩陣,n維矩陣的旋轉(zhuǎn)公式應(yīng)該如何推導(dǎo),這兩個問題各位圖形愛好者共同想想,一起努力~~~