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

隨筆 - 32  文章 - 94  trackbacks - 0
<2009年10月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

常用鏈接

留言簿(8)

隨筆分類

隨筆檔案

好友連接

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

以前還在學校時,有過強烈的目睹高維物體的愿望,也想自己實現一個4維立方體試試,于是先在網絡上到處找n維立方體有關的展示視頻,在youtobe上發現了不少,一看就是一整天,結果第二天有別的事情,干別的事去了,當時連規律都沒有找,想法就此結束。

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


從最基本開始,點,我們容易推出,0維到n維,超立方體的點數是2的n次方。

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

而比較難推出的關鍵一點就是:往新的維度拉伸的時侯,已有的某個概念增加的數量=原來的數量*2+低一級的概念的數量。例如,2維往3維拉伸正方形時,面數量即立方體的面數=正方形的面數*2+正方形線的數量;立方體線數=正方形線數*2+正方形點的數量

證明方法,比較嚴密的方法還想不出,不過很容易想到:往新的維度拉伸時,拉伸的起點和終點使某空間概念的數量拷貝了一份,另外拉伸時,比該空間概念底一級的空間概念拉伸產生了該空間概念。

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


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

 1#pragma once
 2#include "mainWindowStyle.h"
 3
 4class CSuperCube:public CY_Screen
 5{
 6    //-----------------------------------------------------------
 7    int MaxDim;//維度數量
 8    int *PointsCount;
 9    int *LinesCount;
10    int *FaceCount;
11    //-----------------------------------------------------------
12
13    float Length;//邊長
14    //-----------------------------------------------------------------------------------------
15    bool isDone;//已經可以渲染的標志
16
17    float *Points;//n維空間中的點(以DimensionNum為一組為一個點坐標,PointNum為點數量,所以該float數組大小為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個點的x坐標索引為起始)
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    //初始化各個維度的立方體中,點、線、面的數量
67    //輸入:maxDim最大維數
68    void InitMaxPLF(int maxDim);
69
70    //計算Dim維度下的立方體的點、線、面分布
71    void CaculatePLF(int Dim);
72}
;


初始化點、線、面在各個維度立方體中的數量:其中maxDim表示最大維度,一般設一個小于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}

下一步開始定位在Dim維空間中點、線、面的分布:
 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    //-------------------------------------分配好內存空間
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    //-------------------------------------計算值
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)那句開始就是算法的所在,目前只完成點空間分布的算法,思路是:先把所有點所有坐標初始化為0.
從0維開始往上計算坐標,0維時,得到第一個點,坐標為0;以后每次增加一個維度,都把前面計算好的所有點的原來維度復制到新的一批點,對新的維度值設為Length,這個值即n維立方體的邊長:

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

19            Points[index+currentDim]=Length;//新加的維度設為邊長
20        }

21    }

22}

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

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

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

另外,這個投影是成立的,4維投3維,三維再投成2維。  回復  更多評論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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网站 | 国产啪精品视频| 一本色道久久综合亚洲二区三区 | 亚洲尤物在线| 亚洲调教视频在线观看| 国产精品手机视频| 久久精品国产99国产精品澳门| 午夜伦欧美伦电影理论片| 国产综合自拍| 欧美国产精品人人做人人爱| 欧美福利电影网| 亚洲欧美国产精品桃花| 亚洲欧美日韩精品在线| 在线观看成人av| 亚洲国产成人久久综合| 欧美日韩一区视频| 久久精品30| 欧美电影在线播放| 性久久久久久久| 久热这里只精品99re8久| 亚洲午夜精品国产| 久久国内精品视频| 夜夜嗨av一区二区三区四区| 亚洲欧美日本在线| 加勒比av一区二区| 99国产精品久久久久老师| 国产色婷婷国产综合在线理论片a| 美女亚洲精品| 国产精品国产福利国产秒拍| 久久久噜噜噜久久人人看| 欧美—级在线免费片| 欧美中在线观看| 欧美精品午夜视频| 久久综合中文色婷婷| 国产精品v一区二区三区| 久久精品伊人| 国产精品都在这里| 亚洲国产cao| 好吊妞**欧美| 亚洲专区欧美专区| 99精品视频免费观看视频| 欧美制服丝袜第一页| 亚洲网址在线| 欧美成人一区二区三区片免费| 久久不见久久见免费视频1| 欧美激情在线有限公司| 蜜桃精品一区二区三区| 国产精品高清在线| 亚洲精品久久视频| 亚洲精选一区二区| 免费观看一区| 蜜月aⅴ免费一区二区三区| 国产精品一区二区三区观看| 亚洲精选视频免费看| 亚洲人成啪啪网站| 久久综合免费视频影院| 蜜臀久久久99精品久久久久久| 国产婷婷97碰碰久久人人蜜臀| 一本久道久久综合婷婷鲸鱼| 99热免费精品| 欧美日韩 国产精品| 亚洲国产中文字幕在线观看| 亚洲国产精品一区制服丝袜 | 亚洲激情视频网站| 亚洲福利国产| 久久午夜视频| 亚洲成人自拍视频| 亚洲精品护士| 欧美精品v国产精品v日韩精品| 欧美国产欧美亚洲国产日韩mv天天看完整 | 亚洲性色视频| 欧美日韩精品免费| 一本一本久久a久久精品综合麻豆 一本一本久久a久久精品牛牛影视 | 午夜亚洲一区| 久久成人18免费网站| 国产私拍一区| 久久人体大胆视频| 欧美国产一区二区三区激情无套| 悠悠资源网亚洲青| 欧美国产精品va在线观看| 亚洲人体大胆视频| 亚洲天堂第二页| 国产日韩欧美精品一区| 久久精品女人| 亚洲国产影院| 午夜精品久久久久久久99黑人| 国产美女精品视频| 久久久亚洲国产美女国产盗摄| 免费观看日韩| 中国成人黄色视屏| 国模精品一区二区三区| 免费成人av在线| 一区二区三区国产精华| 久久久久久9| 亚洲精品综合精品自拍| 欧美日韩一区成人| 久久精品国产一区二区三| 91久久国产精品91久久性色| 亚洲欧美区自拍先锋| 伊人久久亚洲热| 欧美日韩亚洲成人| 久久久精品久久久久| 亚洲精品一二| 久久久久成人精品| 在线视频精品一| 极品av少妇一区二区| 欧美日韩一区二区免费在线观看| 亚洲欧美成人在线| 91久久黄色| 狂野欧美激情性xxxx欧美| 宅男噜噜噜66一区二区66| 国产手机视频精品| 欧美日韩国产欧| 久久久一本精品99久久精品66| 日韩视频二区| 欧美成人在线免费观看| 久久久成人精品| 亚洲一区在线观看视频| 亚洲国内精品| 黄色日韩在线| 国产欧美精品日韩精品| 欧美日韩精品免费观看视频| 久久久蜜桃一区二区人| 午夜免费久久久久| 亚洲色图综合久久| 亚洲日本va午夜在线影院| 蜜桃久久av一区| 久久久久中文| 久久久久久日产精品| 亚洲综合国产激情另类一区| 亚洲精品免费在线观看| 精品成人在线| 国产专区欧美精品| 国产午夜亚洲精品理论片色戒| 欧美日韩亚洲视频| 欧美日韩国产电影| 欧美日韩国产一区精品一区| 麻豆av福利av久久av| 久久免费99精品久久久久久| 久久精品国产99| 久久久久久免费| 久久精品免视看| 久久亚洲影音av资源网| 久久手机精品视频| 另类综合日韩欧美亚洲| 久久久久天天天天| 久久久综合网| 免费视频久久| 欧美国产日本韩| 欧美日韩一区二区欧美激情| 欧美日韩在线观看一区二区三区| 欧美激情综合色| 欧美调教vk| 国产九九精品视频| 国产欧美精品久久| 黄色精品在线看| 亚洲高清在线视频| 亚洲精品永久免费精品| 一区二区三区 在线观看视| 亚洲一级黄色av| 久久精品国亚洲| 欧美成人精品h版在线观看| 亚洲国产电影| 中文国产成人精品| 欧美一区二区三区日韩视频| 久久久综合精品| 欧美精品久久天天躁| 国产精品丝袜91| 亚洲高清在线| 亚洲一区二区三区涩| 久久久久久久97| 欧美激情视频在线播放 | 亚洲精品黄色| 亚洲色图制服丝袜| 久久精品国产亚洲一区二区| 欧美成人嫩草网站| 国产精品美腿一区在线看| 国产亚洲欧洲997久久综合| 精品99视频| 亚洲线精品一区二区三区八戒| 欧美中文字幕精品| 亚洲高清久久久| 欧美亚洲免费高清在线观看| 免费试看一区| 国产欧美日韩专区发布| 亚洲国产清纯| 欧美一区二区三区的| 欧美黑人在线观看| 欧美亚洲综合网| 欧美精品日日鲁夜夜添| 黄色国产精品| 亚洲欧美欧美一区二区三区| 欧美成人a∨高清免费观看| 一本色道久久综合亚洲精品婷婷| 久久久久亚洲综合| 国产日韩欧美自拍| 亚洲一区二区三区免费在线观看| 美国成人毛片| 欧美一级午夜免费电影| 欧美性大战xxxxx久久久|