青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 32  文章 - 94  trackbacks - 0
<2011年10月>
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345

常用鏈接

留言簿(8)

隨筆分類(lèi)

隨筆檔案

好友連接

搜索

  •  

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

以前還在學(xué)校時(shí),有過(guò)強(qiáng)烈的目睹高維物體的愿望,也想自己實(shí)現(xiàn)一個(gè)4維立方體試試,于是先在網(wǎng)絡(luò)上到處找n維立方體有關(guān)的展示視頻,在youtobe上發(fā)現(xiàn)了不少,一看就是一整天,結(jié)果第二天有別的事情,干別的事去了,當(dāng)時(shí)連規(guī)律都沒(méi)有找,想法就此結(jié)束。

今天突然又有了興致,于是決定好好分析一番。


從最基本開(kāi)始,點(diǎn),我們?nèi)菀淄瞥觯?維到n維,超立方體的點(diǎn)數(shù)是2的n次方。

另外還容易推出:每增加一維,就會(huì)誕生新的空間概念,例如,0維只有點(diǎn)的空間概念,1維誕生了線,2維誕生了面,3維誕生了體,4維誕生了4維體.......
并且新空間概念的定義都是由上一個(gè)概念往新的維度拉伸產(chǎn)生的。

而比較難推出的關(guān)鍵一點(diǎn)就是:往新的維度拉伸的時(shí)侯,已有的某個(gè)概念增加的數(shù)量=原來(lái)的數(shù)量*2+低一級(jí)的概念的數(shù)量。例如,2維往3維拉伸正方形時(shí),面數(shù)量即立方體的面數(shù)=正方形的面數(shù)*2+正方形線的數(shù)量;立方體線數(shù)=正方形線數(shù)*2+正方形點(diǎn)的數(shù)量

證明方法,比較嚴(yán)密的方法還想不出,不過(guò)很容易想到:往新的維度拉伸時(shí),拉伸的起點(diǎn)和終點(diǎn)使某空間概念的數(shù)量拷貝了一份,另外拉伸時(shí),比該空間概念底一級(jí)的空間概念拉伸產(chǎn)生了該空間概念。

這個(gè)說(shuō)得比較抽象,具體公式可以由下面的圖表示出:


有了這些概念后,可以編程出一些內(nèi)容了~~~
由于在OpenGL中體是用面包裝起來(lái)表示的,因此我們必須找出n維立方體中點(diǎn)、線、面之間的規(guī)律,至于更高一層概念的規(guī)律可以暫時(shí)不理了。先給出一個(gè)還不完整類(lèi)聲明:

 1#pragma once
 2#include "mainWindowStyle.h"
 3
 4class CSuperCube:public CY_Screen
 5{
 6    //-----------------------------------------------------------
 7    int MaxDim;//維度數(shù)量
 8    int *PointsCount;
 9    int *LinesCount;
10    int *FaceCount;
11    //-----------------------------------------------------------
12
13    float Length;//邊長(zhǎng)
14    //-----------------------------------------------------------------------------------------
15    bool isDone;//已經(jīng)可以渲染的標(biāo)志
16
17    float *Points;//n維空間中的點(diǎn)(以DimensionNum為一組為一個(gè)點(diǎn)坐標(biāo),PointNum為點(diǎn)數(shù)量,所以該float數(shù)組大小為DimensionNum*PointNum)
18    int    DimensionNum;
19    int PointNum;
20
21    struct SLine
22    {
23        float *points1;
24        float *points2;
25        SLine()
26        {
27            points1=0;
28            points2=0;
29        }

30    }
;
31    SLine *Lines;//n維空間中的線(以2個(gè)點(diǎn)的x坐標(biāo)索引為起始)
32    int LineNum;
33
34    struct SFace
35    {
36        float *points1;
37        float *points2;
38        float *points3;
39        float *points4;
40        SFace()
41        {
42            points1=0;
43            points2=0;
44            points3=0;
45            points4=0;
46        }

47    }
;
48    int FaceNum;
49    SFace *Faces;//n維空間中的面
50    //---------------------------------------------------------------------------------------------
51
52
53    void CaculatePHelp(int currentDim);
54    void CaculateLHelp(int currentDim);
55    void CaculateFHelp(int currentDim);
56    inline int PtAtIndex(int i)const
57    {
58        return i*DimensionNum;
59    }

60public:
61    CY_TextBox *DimensionInput;
62    
63
64    CY_Button  *CreateBtn;
65
66    //初始化各個(gè)維度的立方體中,點(diǎn)、線、面的數(shù)量
67    //輸入:maxDim最大維數(shù)
68    void InitMaxPLF(int maxDim);
69
70    //計(jì)算Dim維度下的立方體的點(diǎn)、線、面分布
71    void CaculatePLF(int Dim);
72}
;


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

 1void CSuperCube::InitMaxPLF(int maxDim)
 2{
 3    if (MaxDim || maxDim<3)
 4        return;
 5    
 6    MaxDim=maxDim+1;
 7
 8    PointsCount=new int[MaxDim];
 9    LinesCount=new int[MaxDim];
10    FaceCount=new int[MaxDim];
11
12    int i;
13
14    PointsCount[0]=1;
15    for (i=1;i<MaxDim;++i)
16        PointsCount[i]=PointsCount[i-1]*2;
17
18    LinesCount[0]=0;
19    LinesCount[1]=1;
20    for (i=2;i<MaxDim;++i)
21        LinesCount[i]=LinesCount[i-1]*2+PointsCount[i-1];
22
23    FaceCount[0]=0;
24    FaceCount[1]=0;
25    FaceCount[2]=1;
26    for(i=3;i<MaxDim;++i)
27        FaceCount[i]=FaceCount[i-1]*2+LinesCount[i-1];
28}

下一步開(kāi)始定位在Dim維空間中點(diǎn)、線、面的分布:
 1void CSuperCube::CaculatePLF(int Dim)
 2{
 3    if(!MaxDim || Dim<2 || Dim>=MaxDim)return;
 4
 5    if(isDone)
 6    {
 7        delete []Points;
 8        delete []Lines;
 9        delete []Faces;
10    }

11    
12    //-------------------------------------分配好內(nèi)存空間
13    DimensionNum=Dim;
14    PointNum=PointsCount[DimensionNum];
15    LineNum=LinesCount[DimensionNum];
16    FaceNum=FaceCount[DimensionNum];
17
18    Points=new float[PointNum*DimensionNum];
19    for (int i=0;i<PointNum*DimensionNum;++i)
20    {
21        Points[i]=0;
22    }

23    
24    Lines=new SLine[LineNum];
25    Faces=new SFace[FaceNum];
26
27    //-------------------------------------計(jì)算值
28    int currentDim=0;
29    while (currentDim<=DimensionNum)
30    {
31        CaculatePHelp(currentDim);
32        //CaculateLHelp(currentDim);
33        //CaculateFHelp(currentDim);
34        ++currentDim;
35    }

36}
其中從while (currentDim<=DimensionNum)那句開(kāi)始就是算法的所在,目前只完成點(diǎn)空間分布的算法,思路是:先把所有點(diǎn)所有坐標(biāo)初始化為0.
從0維開(kāi)始往上計(jì)算坐標(biāo),0維時(shí),得到第一個(gè)點(diǎn),坐標(biāo)為0;以后每次增加一個(gè)維度,都把前面計(jì)算好的所有點(diǎn)的原來(lái)維度復(fù)制到新的一批點(diǎn),對(duì)新的維度值設(shè)為L(zhǎng)ength,這個(gè)值即n維立方體的邊長(zhǎng):

 1void CSuperCube::CaculatePHelp(int currentDim)
 2{
 3    int i;
 4    //----------------------點(diǎn)計(jì)算
 5    if(currentDim==0)
 6        return;
 7    else
 8    {
 9        int targetStart=2<<(currentDim-1);//復(fù)制的起始點(diǎn)
10        int targetEnd=2<<currentDim;//復(fù)制的結(jié)束點(diǎn)下一點(diǎn)
11        for (i=targetStart;i<targetEnd;++i)
12        {
13            int index=DimensionNum*i;//目標(biāo)點(diǎn)的x坐標(biāo)索引
14            int source=DimensionNum*targetStart;//來(lái)源點(diǎn)的x坐標(biāo)索引負(fù)偏移量
15            for (int j=0;j<currentDim;++j)
16            {
17                Points[index+j]=Points[index-source+j];//復(fù)制
18            }

19            Points[index+currentDim]=Length;//新加的維度設(shè)為邊長(zhǎng)
20        }

21    }

22}

線的空間分布比點(diǎn)的分布計(jì)算難了些,不過(guò)已經(jīng)初步分析出來(lái),思路大概如下:
初始化1維的線的兩端點(diǎn)分別是索引點(diǎn)1,索引點(diǎn)2;以后每增加一個(gè)維度,把原來(lái)已經(jīng)初始化了的線復(fù)制過(guò)來(lái),再把線的兩個(gè)索引點(diǎn)的值全部偏移“2的(當(dāng)前維度-1)次方”,再初始化“2的(當(dāng)前維度-1)次方”條邊,起始點(diǎn)索引分別為前“2的(當(dāng)前維度-1)次方”個(gè)點(diǎn),終點(diǎn)的索引點(diǎn)分別為接著的“2的(當(dāng)前維度-1)次方”個(gè)點(diǎn)。
線的空間分布代碼明天貼出。

接下來(lái),面的空間分布計(jì)算又更進(jìn)一步難了,還有最后一個(gè)問(wèn)題就是所有OpenGL渲染要素完成后,為了展示效果,還要旋轉(zhuǎn)這個(gè)n維超立方體,于是需要旋轉(zhuǎn)矩陣,n維矩陣的旋轉(zhuǎn)公式應(yīng)該如何推導(dǎo),這兩個(gè)問(wèn)題各位圖形愛(ài)好者共同想想,一起努力~~~
posted on 2009-07-31 21:32 陳昱(CY) 閱讀(2200) 評(píng)論(8)  編輯 收藏 引用 所屬分類(lèi): 圖形學(xué) 、算法

FeedBack:
# re: 一個(gè)想法,用程序畫(huà)出高維超立方體在三維上的投影!?。。?)[未登錄](méi) 2009-07-31 23:25 hdqqq
# re: 一個(gè)想法,用程序畫(huà)出高維超立方體在三維上的投影!!?。?)[未登錄](méi) 2009-08-01 00:04 欲三更
有一個(gè)紀(jì)錄片專(zhuān)門(mén)講述這方面,好像叫dimensions,你可以去找找  回復(fù)  更多評(píng)論
  
# re: 一個(gè)想法,用程序畫(huà)出高維超立方體在三維上的投影?。。。?) 2009-08-01 11:02 凡客誠(chéng)品
不錯(cuò)  回復(fù)  更多評(píng)論
  
# re: 一個(gè)想法,用程序畫(huà)出高維超立方體在三維上的投影?。。。?) 2009-08-01 11:08 mybios
屏幕只是二維,要表現(xiàn)四維的東西,還是有困難的。
就好比在一維顯示器上顯示三維畫(huà)面一樣困難。
三維的畫(huà)面可以投影到二維屏幕上,那四維畫(huà)面就應(yīng)該投影到三維屏幕上才對(duì)。  回復(fù)  更多評(píng)論
  
# re: 一個(gè)想法,用程序畫(huà)出高維超立方體在三維上的投影!!!(1) 2009-08-01 20:21 haskell
# re: 一個(gè)想法,用程序畫(huà)出高維超立方體在三維上的投影?。。。?) 2009-08-01 22:17 陳昱(CY)
感謝各位提供資料,目前程序初步成功~  回復(fù)  更多評(píng)論
  
# re: 一個(gè)想法,用程序畫(huà)出高維超立方體在三維上的投影!?。。?) 2009-08-02 12:07 mybios
@陳昱(CY)
可喜可賀  回復(fù)  更多評(píng)論
  
# re: 一個(gè)想法,用程序畫(huà)出高維超立方體在三維上的投影!!?。?)[未登錄](méi) 2009-08-03 14:45 欲三更
@mybios
一維的顯示器?您沒(méi)事吧?

另外,這個(gè)投影是成立的,4維投3維,三維再投成2維。  回復(fù)  更多評(píng)論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              亚洲精品久久在线| 亚洲第一福利社区| 欧美激情一区在线| 久久精品一区四区| 亚洲午夜av电影| 亚洲高清在线观看| 1024日韩| 亚洲综合电影一区二区三区| 一区二区国产精品| 亚洲美女av网站| 亚洲人在线视频| 亚洲国产专区校园欧美| 亚洲国产精品美女| 亚洲精品视频免费观看| 午夜在线精品| 亚洲男人影院| 欧美一级播放| 亚洲国产综合在线| 亚洲国产日韩欧美在线图片| 亚洲女人小视频在线观看| 亚洲一区日韩在线| 香蕉久久国产| 久久精品国产清高在天天线| 欧美在线视频二区| 蜜桃伊人久久| 欧美高清一区| 国产精品啊v在线| 国产精品毛片a∨一区二区三区|国 | 国际精品欧美精品| 国产一区二区三区在线观看视频| 国产欧美在线观看| 激情五月婷婷综合| 91久久久久久国产精品| 久久狠狠久久综合桃花| 久久一区中文字幕| 另类尿喷潮videofree| 欧美高清视频一区二区| 欧美激情自拍| 99精品国产一区二区青青牛奶 | 亚洲精品在线二区| 亚洲人成在线观看| 亚洲综合精品一区二区| 欧美精品久久久久a| 亚洲电影免费在线| 久久久高清一区二区三区| 美女视频黄a大片欧美| 亚洲国产99| 久久全球大尺度高清视频| 欧美高清在线| 亚洲黄色片网站| 欧美成人伊人久久综合网| 久久精品国产免费看久久精品| 国产精品另类一区| 亚洲一区二区日本| 欧美国产三级| 久久久国产午夜精品| 国产综合欧美| 久久精品国产一区二区三| 亚洲综合精品一区二区| 国产精品乱子久久久久| 亚洲免费在线视频一区 二区| 日韩视频在线观看| 久久久久久久999| 欧美色大人视频| 狠狠色丁香久久综合频道| 一本色道久久综合亚洲91| 久久九九国产| 欧美在线二区| 极品日韩久久| 欧美成人激情在线| 午夜亚洲激情| 国产在线乱码一区二区三区| 久久亚洲精品网站| 久久婷婷蜜乳一本欲蜜臀| 曰本成人黄色| 久久久久国内| 久久精品在线视频| 在线日韩中文| 亚洲激情午夜| 久久久久久噜噜噜久久久精品| 国产在线不卡视频| 毛片一区二区三区| 免费一区视频| 精品成人久久| 亚洲高清资源| 国产精品va| 久久精品盗摄| 久久在线视频| 激情综合自拍| 亚洲国产91色在线| 欧美视频二区36p| 欧美在线播放一区| 亚洲视频香蕉人妖| 欧美午夜免费| 欧美怡红院视频| 久久―日本道色综合久久| 亚洲美女在线看| 亚洲视频图片小说| 黄色亚洲免费| 亚洲精品久久久久久下一站| 国产精品jizz在线观看美国| 久久久久久久久久久一区| 欧美成人激情视频| 亚洲人成网站精品片在线观看| 99re6这里只有精品视频在线观看| 国产精品午夜av在线| 西瓜成人精品人成网站| 欧美在线播放| 一区二区三区精品视频| 性欧美xxxx大乳国产app| 亚洲精品美女| 亚洲欧美日韩精品久久| 国产乱码精品一区二区三| 欧美一级大片在线观看| 麻豆免费精品视频| 中文在线资源观看网站视频免费不卡 | 亚洲欧美高清| 亚洲黄色影院| 亚洲欧美一区二区三区久久| 亚洲国产一区在线| 亚洲欧美日韩高清| 日韩视频不卡中文| 久久成人免费网| 这里只有精品视频| 久久精品麻豆| 亚洲欧美不卡| 欧美电影免费观看大全| 久久久999成人| 欧美日韩亚洲综合一区| 亚洲制服欧美中文字幕中文字幕| 久久av一区二区三区亚洲| 亚洲网址在线| 欧美第一黄色网| 久久久久久一区二区| 裸体一区二区三区| 欧美亚洲一区二区在线| 欧美人与禽猛交乱配| 亚洲男人的天堂在线观看| 蜜桃久久av一区| 久久精品成人一区二区三区蜜臀 | 亚洲女优在线| 欧美黄色网络| 欧美国产精品久久| 好吊一区二区三区| 亚洲淫片在线视频| 亚洲性图久久| 欧美精品福利在线| 欧美暴力喷水在线| 国产在线观看一区| 亚洲一区久久久| 亚洲视频精品在线| 欧美精品久久99久久在免费线| 免费h精品视频在线播放| 国产精品日产欧美久久久久| 99国产麻豆精品| 亚洲精品在线电影| 欧美成人黑人xx视频免费观看| 久久综合五月| 国产主播一区二区三区四区| 亚洲在线一区二区三区| 亚洲永久视频| 国产精品极品美女粉嫩高清在线 | 欧美va亚洲va日韩∨a综合色| 久久午夜精品一区二区| 国产欧美一区二区白浆黑人| 亚洲无线视频| 亚洲一区二区三区中文字幕在线| 欧美精品 日韩| 亚洲日本va在线观看| 亚洲免费av观看| 欧美精品在线一区| 最近中文字幕日韩精品 | 一区二区三区四区五区在线| 欧美国产一区二区三区激情无套| 欧美xxx成人| 亚洲日本无吗高清不卡| 免费观看不卡av| 亚洲第一狼人社区| 亚洲精品欧美专区| 欧美极品一区| av成人黄色| 亚洲午夜视频在线| 国产精品久久久久久久久免费樱桃 | 亚洲人成免费| 欧美日韩xxxxx| 美女诱惑黄网站一区| 激情综合五月天| 美女999久久久精品视频| 欧美成人在线免费观看| 亚洲乱码国产乱码精品精可以看| 欧美激情第二页| 国产精品99久久不卡二区| 午夜精品区一区二区三| 欧美精品亚洲精品| 999亚洲国产精| 午夜欧美精品久久久久久久| 国产一区二区三区四区三区四| 欧美中文字幕不卡| 欧美激情一区二区三区在线视频观看 | 久久综合导航|