• <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>

            飯中淹的避難所~~~~~

            偶爾來(lái)避難的地方~

              C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              94 隨筆 :: 0 文章 :: 257 評(píng)論 :: 0 Trackbacks

            1- 分析



            通過(guò)對(duì)照觀察,我們會(huì)發(fā)現(xiàn),在這個(gè)自動(dòng)拼接元素上,小元素可以分為以下幾種:

               A-   向內(nèi)轉(zhuǎn)角(也就是0,1,6,7,以及12, 17, 42, 47,這里只取一組即可 )(FIXED:這里選擇12,17,42,47這組,因?yàn)椴糠痔厥庠剡@四個(gè)才是真實(shí)的向內(nèi)轉(zhuǎn)角)
               B-   向外轉(zhuǎn)角(4,5,10,11)
               C-   上下連接(24,29,30,35)
               D-   左右連接(14,15,44,45)
               E-   填充物(26,27,32,33)

            通過(guò)觀察組合圖塊,我們會(huì)發(fā)現(xiàn)下面的幾條規(guī)律


               A- 斜方向的同類(lèi)塊對(duì)目標(biāo)塊的影響當(dāng)且僅當(dāng)斜方向相鄰的兩個(gè)垂直方向上都有同類(lèi)塊的時(shí)候才會(huì)出現(xiàn)。也就是將目標(biāo)塊的對(duì)應(yīng)小圖塊變成填充物。

               B- 當(dāng)兩個(gè)相鄰的垂直方向上都有同類(lèi)塊,且他們之間的斜方向上沒(méi)有同類(lèi)塊的時(shí)候,目標(biāo)快對(duì)應(yīng)的小圖塊變成向外轉(zhuǎn)角

               C- 當(dāng)某個(gè)垂直方向上有同類(lèi)塊,且相鄰的一個(gè)垂直方向上沒(méi)有同類(lèi)塊,無(wú)論相鄰的斜方向上有沒(méi)有同類(lèi)塊,目標(biāo)塊對(duì)應(yīng)的小圖塊變成連接(向上下或者向左右連接)

               D- 當(dāng)某個(gè)垂直方向上沒(méi)有同類(lèi)塊,且相鄰的垂直方向上也沒(méi)有同類(lèi)塊,無(wú)論相鄰的斜方向上有沒(méi)有同類(lèi)塊,目標(biāo)塊對(duì)應(yīng)的小圖塊變成向內(nèi)轉(zhuǎn)角



            2- 生成算法(C#代碼)


              1             //  填充物    26 27 32 33
              2             //  向外轉(zhuǎn)角  4 5 10 11
              3             //  上下連接  24 29 30 35
              4             //  左右連接   14 15 44 45
              5             //  向內(nèi)轉(zhuǎn)角    12 17 42 47
              6 
              7             //  各方向比特   1 2 4 8 16 32 64 128
              8 
              9             //  4 個(gè)小圖塊對(duì)應(yīng)的索引
             10             //  0 1         小圖塊在大圖塊里
             11             //  2 3         按照這種順序排列
             12             byte[] mTile = new byte[4];
             13             //  調(diào)色板數(shù)組,每個(gè)元素是一個(gè)包含4個(gè)索引的DWORD
             14             UInt32[] mAutoTilePal = new UInt32[256];
             15 
             16             for (uint nIndex = 0; nIndex < 256; nIndex++)
             17             {
             18                 //  初始化成向內(nèi)轉(zhuǎn)角
             19                 mTile[0= 12;
             20                 mTile[1= 17;
             21                 mTile[2= 42;
             22                 mTile[3= 47;
             23                 //  如果上方有同類(lèi)塊
             24                 if ((nIndex & 2> 0)
             25                 {
             26                     //  如果左方有同類(lèi)塊
             27                     if ((nIndex & 128> 0)
             28                     {
             29                         //  如果左上方有同類(lèi)塊
             30                         if ((nIndex & 1> 0)
             31                         {
             32                             //  目標(biāo)塊左上為填充物
             33                             mTile[0= 26;
             34                         }
             35                         else
             36                         {
             37                             //  目標(biāo)塊左上為向外轉(zhuǎn)角
             38                             mTile[0= 4;
             39                         }
             40                     }
             41                     else
             42                     {
             43                         //  目標(biāo)塊左上為向上連接
             44                         mTile[0= 24;
             45                     }
             46 
             47                     //  如果右方有同類(lèi)塊
             48                     if ((nIndex & 8> 0)
             49                     {
             50                         //  如果右上方有同類(lèi)塊
             51                         if ((nIndex & 4> 0)
             52                         {
             53                             //  目標(biāo)塊右上為填充物
             54                             mTile[1= 27;
             55                         }
             56                         else
             57                         {
             58                             //  目標(biāo)塊右上為向外轉(zhuǎn)角
             59                             mTile[1= 5;
             60                         }
             61                     }
             62                     else
             63                     {
             64                         //  目標(biāo)塊右上為向上連接
             65                         mTile[1= 29;
             66                     }
             67                 }
             68                 else
             69                 {
             70                     //  如果左方有同類(lèi)塊
             71                     if ((nIndex & 128> 0)
             72                     {
             73                         //  目標(biāo)左上為向左連接
             74                         mTile[0= 14;
             75                     }
             76                     //  如果右方有同類(lèi)塊
             77                     if ((nIndex & 8> 0)
             78                     {
             79                         //  目標(biāo)右上為向右連接
             80                         mTile[1= 15;
             81                     }
             82                 }
             83 
             84                 //  如果下方有同類(lèi)塊
             85                 if ((nIndex & 32> 0)
             86                 {
             87                     //  如果左方有同類(lèi)塊
             88                     if ((nIndex & 128> 0)
             89                     {
             90                         //  如果左下方有同類(lèi)塊
             91                         if ((nIndex & 64> 0)
             92                         {
             93                             //  目標(biāo)塊左下為填充物
             94                             mTile[2= 32;
             95                         }
             96                         else
             97                         {
             98                             //  目標(biāo)塊左下為向外轉(zhuǎn)角
             99                             mTile[2= 10;
            100                         }
            101                     }
            102                     else
            103                     {
            104                         //  目標(biāo)塊左下為向下連接
            105                         mTile[2= 30;
            106                     }
            107 
            108                     //  如果右方有同類(lèi)塊
            109                     if ((nIndex & 8> 0)
            110                     {
            111                         //  如果右下方有同類(lèi)塊
            112                         if ((nIndex & 16> 0)
            113                         {
            114                             //  目標(biāo)塊右下為填充物
            115                             mTile[3= 33;
            116                         }
            117                         else
            118                         {
            119                             //  目標(biāo)塊右下為向外轉(zhuǎn)角
            120                             mTile[3= 11;
            121                         }
            122                     }
            123                     else
            124                     {
            125                         //  目標(biāo)塊右下為向下連接
            126                         mTile[3= 35;
            127                     }
            128                 }
            129                 else
            130                 {
            131                     //  如果左方有同類(lèi)塊
            132                     if ((nIndex & 128> 0)
            133                     {
            134                         //  目標(biāo)塊左下為向左連接
            135                         mTile[2= 44;
            136                     }
            137                     //  如果右方有同類(lèi)塊
            138                     if ((nIndex & 8> 0)
            139                     {
            140                         //  目標(biāo)塊右下為向右連接
            141                         mTile[3= 45;
            142                     }
            143                 }
            144 
            145                 mAutoTilePal[nIndex] = (UInt32)mTile[0];
            146                 mAutoTilePal[nIndex] |= ((UInt32)mTile[1]) << 8;
            147                 mAutoTilePal[nIndex] |= ((UInt32)mTile[2]) << 16;
            148                 mAutoTilePal[nIndex] |= ((UInt32)mTile[3]) << 24;
            149             }






            posted on 2008-06-20 19:44 飯中淹 閱讀(1881) 評(píng)論(2)  編輯 收藏 引用

            評(píng)論

            # re: 磚塊地圖自動(dòng)拼接數(shù)據(jù)分析和調(diào)色板自動(dòng)生成。 2008-06-22 23:02 影視劇
            有些人工智能的意思  回復(fù)  更多評(píng)論
              

            # re: 磚塊地圖自動(dòng)拼接數(shù)據(jù)分析和調(diào)色板自動(dòng)生成。[未登錄](méi) 2010-11-17 02:39 VK
            很感謝,我改了個(gè)斜45度的。  回復(fù)  更多評(píng)論
              


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            狠狠色丁香久久婷婷综合_中 | 亚洲AV无码1区2区久久| 日本久久中文字幕| 久久久艹| 日韩精品久久久久久免费| 久久亚洲精品国产精品| 51久久夜色精品国产| 久久综合伊人77777| 日产精品久久久久久久| 国产精品久久久久久久久免费| 精品亚洲综合久久中文字幕| 久久久精品免费国产四虎| 久久精品国产亚洲AV不卡| 综合久久给合久久狠狠狠97色| 99久久精品国产一区二区| 国产精品欧美久久久久无广告 | 久久婷婷五月综合色奶水99啪| 中文字幕精品久久| 亚洲精品无码专区久久同性男| 99精品久久精品| 国产精品久久久久影院色| 亚洲中文久久精品无码| 四虎国产精品成人免费久久| 欧美成a人片免费看久久| www亚洲欲色成人久久精品| 青青草国产精品久久| 久久九九青青国产精品| 情人伊人久久综合亚洲| 东京热TOKYO综合久久精品| 97久久婷婷五月综合色d啪蜜芽| 久久亚洲中文字幕精品一区| 色综合久久88色综合天天 | 久久久这里有精品| 一本色道久久HEZYO无码| 久久精品嫩草影院| 久久av高潮av无码av喷吹| 久久精品aⅴ无码中文字字幕不卡| 亚洲人成无码www久久久| 久久超乳爆乳中文字幕| 天堂无码久久综合东京热| 久久精品国产久精国产|