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

  C++博客 :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
  117 Posts :: 2 Stories :: 61 Comments :: 0 Trackbacks

常用鏈接

留言簿(8)

搜索

  •  

最新評(píng)論

閱讀排行榜

評(píng)論排行榜


    斜角地圖其實(shí)是平面地圖的一種變化,它是將拼接地圖的圖塊內(nèi)容,由原先的四方形圖案改變成由45度角俯瞰四方形圖案時(shí)的菱形圖案,由這些菱形圖案所拼接完成后的地圖,就是一張由45度角俯瞰的斜角地圖了。
    斜角地圖拼接方法同樣也是使用與平面地圖一樣的行與列的方法,事實(shí)上它們的原理是一樣的。但是由于地圖拼接時(shí)只要取位圖中的菱形部分,因此在貼圖坐標(biāo)的計(jì)算會(huì)有所不同,下面就來(lái)說(shuō)明菱形圖塊在貼圖時(shí)的差異,如下圖所示,其中的數(shù)字式圖塊的編號(hào)。

    上圖中的左邊是四方形圖塊的拼接,而右邊的則是菱形圖塊的拼接。四方形圖塊拼接方法時(shí):圖塊編號(hào)換算成行編號(hào)與列編號(hào)再換算成貼圖坐標(biāo)。對(duì)于斜角地圖拼接來(lái)說(shuō),這些步驟都是一樣的,但是在換算貼圖坐標(biāo)時(shí),由于只要顯示圖塊中的菱形部分,因此在貼圖排列的方式上會(huì)有不同,因而貼圖坐標(biāo)的計(jì)算公式也就不一樣了。
    此外,在合并兩個(gè)圖塊的菱形部分時(shí),還需要加上一步透明的步驟,不然若直接按照求得的貼圖坐標(biāo)來(lái)進(jìn)行貼圖,其效果就會(huì)如下圖所示:

    接下來(lái)看看斜角地圖拼接時(shí),各個(gè)圖塊編號(hào)與實(shí)際排列的情形,如下圖所示:

    上圖同樣是一張4×3個(gè)小圖塊所拼接而成的地圖,其中的數(shù)字式圖塊編號(hào)。對(duì)于每一圖塊首先必須算出它的行編號(hào)與列編號(hào),然后才能計(jì)算它實(shí)際的貼圖坐標(biāo),計(jì)算行列編號(hào)的方法與隨筆“游戲地圖制作——平面地圖貼圖”所使用的公式一樣,即:

列編號(hào) = 索引值 / 每一列的圖塊個(gè)數(shù)(行數(shù));
行編號(hào) = 索引值 % 每一列的圖塊個(gè)數(shù)(行數(shù));

    求出行編號(hào)與列編號(hào)后,就可以計(jì)算出圖塊貼圖時(shí)左上點(diǎn)的坐標(biāo),除此之外,還需要知道圖塊中菱形部分的長(zhǎng)度與高度,這里假設(shè)圖塊中菱形的寬與高分別是w和h,如下圖所示:

    那么圖塊左上點(diǎn)貼圖坐標(biāo)的計(jì)算公式如下:

左上點(diǎn)X坐標(biāo) = xstart + 行編號(hào) ×(w/2) - 列編號(hào)×(w/2);
左上點(diǎn)Y坐標(biāo) = ystart + 列編號(hào) ×(h/2 )- 行編號(hào)×(h/2);


    公式中的xstart與ystart是代表第一張圖塊左上角貼圖坐標(biāo)的位置,以下圖來(lái)說(shuō)明這個(gè)公式:

    圖中以紅線框來(lái)表示圖塊真正的矩形范圍,在進(jìn)行貼圖時(shí),首先要定義第1張圖塊的貼圖位置,其他圖塊的貼圖坐標(biāo)再由此圖塊向下延伸。現(xiàn)在假設(shè)給定圖塊0的貼圖坐標(biāo)是(xstart,ystart),那么接下來(lái)考慮圖塊1的矩形范圍,它左上角貼圖的坐標(biāo)則是(xstart+w/2,ystart+h/2),考慮圖塊2的矩形范圍,它左上角貼圖的坐標(biāo)又變成(xstart+w/2×2,ystart+h/2×2)。依次類(lèi)推,再加入行編號(hào)與列編號(hào),可以得到下面的這個(gè)求圖塊貼圖坐標(biāo)的公式:

左上點(diǎn)X坐標(biāo) = xstart + 行編號(hào) ×(w/2);
左上點(diǎn)Y坐標(biāo) = ystart + 列編號(hào) ×(h/2 );


    但是要注意一點(diǎn),這是當(dāng)圖塊都在屬于同一列的情況。考慮下一列的圖塊4,圖塊4的左上角貼圖坐標(biāo)是(xstart-w/2,ystart+h/2),而圖塊5的左上角貼圖坐標(biāo)是(xstart-w/2+w/2,ystart+h/2+h/2),圖塊6的左上角貼圖坐標(biāo)為(xstart-w/2+w/2×2,ystart+h/2+h/2×2),依次類(lèi)推,可看出同一列上坐標(biāo)變化規(guī)律都是一樣的,貼圖坐標(biāo)都是往右下方遞增半個(gè)圖塊的長(zhǎng)于高單位。
    如果是在同一行(圖塊0、4、8)上的坐標(biāo)變化則是往左下方遞減半個(gè)圖塊的長(zhǎng)(X軸方向)以及遞增半個(gè)圖塊的高(Y軸方向),因此利用圖塊的行編號(hào)與列編號(hào)便得出了前面的貼圖坐標(biāo)公式。
    計(jì)算出每個(gè)圖塊的坐標(biāo)并完成了斜角地圖的拼接后,此時(shí)要將整塊地圖貼到窗口中,還需要知道地圖的寬度與高度,計(jì)算的方法可以通過(guò)下圖進(jìn)行說(shuō)明:
   

    由上面可以很容易的推導(dǎo)出整張地圖的寬與高計(jì)算公式如下:

地圖寬 = (列數(shù)+行數(shù))×(w/2);
地圖高 = (列數(shù)+行數(shù))×(h/2 );


    在了解了關(guān)于斜角地圖拼接的方法之后,接下來(lái)的這個(gè)范例將上一小節(jié)里的平面拼接地圖轉(zhuǎn)換成以45度角俯視的斜角地圖。

范例ch2_10:從文件中加載位圖,并顯示在窗口上。
下載地址:ch2_10(上傳到windows live空間,可能需要MSN賬號(hào)登陸)
說(shuō)明:程序源代碼中有相關(guān)的注釋。
程序運(yùn)行結(jié)果如下圖:
 


PS:如想獲得更多關(guān)于Visual C++游戲開(kāi)發(fā)的內(nèi)容,可點(diǎn)擊隨筆:《Visual C++游戲編程基礎(chǔ)》學(xué)習(xí)筆記——索引隨筆
posted on 2010-04-09 12:02 煙皚 閱讀(4536) 評(píng)論(3)  編輯 收藏 引用 所屬分類(lèi): 《Visual C++游戲編程基礎(chǔ)》學(xué)習(xí)筆記

Feedback

# re: 游戲地圖制作——斜角地圖貼圖 2010-04-10 10:23 func
其實(shí)圖片沒(méi)必要用菱形拼接,矩形塊照樣能得到斜45度效果。
遮擋的時(shí)候,有些算法,邏輯上可能用用到菱形底座對(duì)比物體的前后。
遮擋算法的漏洞,可以用障礙避免。  回復(fù)  更多評(píng)論
  

# 斜角地圖貼圖 2011-05-05 19:23 3rf
1erqwefqwrf  回復(fù)  更多評(píng)論
  

# re: 游戲地圖制作——斜角地圖貼圖 2011-08-26 17:29 3lxl3
誤人子弟,趕集改過(guò)來(lái)。  回復(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| 午夜精品久久久久久久99水蜜桃| 欧美日韩国产成人高清视频| 99精品视频免费观看| 一区二区三区四区五区视频 | 欧美大色视频| 欧美精品久久99久久在免费线| 日韩视频在线观看免费| 一本色道久久加勒比精品 | 久久精品30| 亚洲精品日韩综合观看成人91| 91久久精品国产91久久| 国产精品毛片高清在线完整版| 久久久久久高潮国产精品视| 欧美肥婆bbw| 午夜欧美精品| 老司机成人在线视频| 亚洲午夜伦理| 久久精品中文字幕一区| 日韩视频欧美视频| 欧美亚洲网站| 一区二区三区欧美在线| 久久精品国产91精品亚洲| 亚洲精品免费观看| 欧美在线不卡| 亚洲在线观看| 欧美福利影院| 久久久久亚洲综合| 国产精品欧美激情| 亚洲国产精品久久人人爱蜜臀| 国产精品永久入口久久久| 亚洲国产日本| 影音先锋久久资源网| 中文有码久久| 亚洲乱码国产乱码精品精可以看| 欧美一区二区视频免费观看| 这里只有精品在线播放| 欧美国产日韩在线| 美女日韩欧美| 国产综合色精品一区二区三区 | 久久久久久久久久久久久9999| 国产精品黄视频| 亚洲欧洲在线看| 影音欧美亚洲| 欧美影院久久久| 亚洲在线视频观看| 欧美香蕉大胸在线视频观看| 亚洲第一在线视频| 亚洲国内自拍| 久久亚洲精品中文字幕冲田杏梨| 久久精品一区二区三区四区 | 欧美有码在线观看视频| 亚洲欧美bt| 国产精品伦理| 亚洲图片欧洲图片av| 中文久久精品| 欧美日韩国产精品专区| 亚洲人成网站色ww在线| 亚洲狼人精品一区二区三区| 美女被久久久| 亚洲国产日韩欧美在线99| 91久久精品国产91性色tv| 久久亚洲二区| 亚洲国产综合视频在线观看| 亚洲卡通欧美制服中文| 欧美二区在线播放| 日韩一级黄色片| 亚洲一二三四区| 国产精品夜夜夜| 午夜精品福利在线| 久久亚洲综合| 亚洲免费观看高清在线观看 | 欧美精品一区二区精品网| 亚洲激情av| 亚洲尤物视频网| 国产在线成人| 蜜臀a∨国产成人精品| 亚洲电影欧美电影有声小说| 一区二区三区高清视频在线观看| 欧美视频精品在线| 欧美一区二区三区喷汁尤物| 蜜臀av国产精品久久久久| 91久久精品国产91性色tv| 欧美日韩国产在线| 香蕉久久精品日日躁夜夜躁| 免费黄网站欧美| 日韩一级免费观看| 国产日本欧美一区二区三区| 久久久久www| 亚洲最新在线| 另类天堂视频在线观看| 99热免费精品在线观看| 国产午夜亚洲精品不卡| 欧美多人爱爱视频网站| 亚洲在线成人| 亚洲国产你懂的| 欧美在线观看网站| 亚洲精品视频在线看| 国产日本欧美视频| 欧美精品系列| 久久久久国产精品人| 99这里有精品| 欧美激情区在线播放| 欧美一区二区三区电影在线观看| 亚洲精华国产欧美| 国产亚洲午夜| 欧美视频一区在线| 久久午夜精品一区二区| 国产精品另类一区| 欧美福利专区| 久久国产精品久久w女人spa| 亚洲人成网站999久久久综合| 久久精品国产99国产精品澳门| 日韩网站在线观看| 极品少妇一区二区| 国产毛片一区二区| 欧美日韩一级视频| 欧美成人自拍视频| 久久亚洲一区二区| 欧美在线一二三区| 亚洲欧美日韩国产中文在线| 99精品热视频| 亚洲精品国产拍免费91在线| 欧美va天堂在线| 可以看av的网站久久看| 欧美伊人久久| 亚洲欧美精品在线观看| 一区二区三区国产盗摄| 亚洲乱码国产乱码精品精天堂| 尤物精品在线| 在线观看日韩欧美| 精品1区2区| 激情婷婷久久| 尤物精品在线| 亚洲欧洲精品一区| 亚洲经典自拍| 日韩午夜在线播放| 99一区二区| 一本色道久久综合一区| 99精品国产在热久久婷婷| 亚洲国产高清高潮精品美女| 影音先锋日韩有码| 91久久综合| av不卡在线观看| 在线亚洲欧美视频| 午夜精品一区二区在线观看| 性久久久久久久久久久久| 欧美一区二区视频网站| 久久久久久久999精品视频| 久久久久久久久久久久久女国产乱 | 欧美精品自拍偷拍动漫精品| 欧美日韩国产123| 国产精品久久久一区麻豆最新章节 | 国产乱码精品一区二区三区不卡| 国产精品国产a级| 国产日韩欧美自拍| 伊人久久婷婷色综合98网| 亚洲国产综合91精品麻豆| 99在线精品免费视频九九视| 宅男66日本亚洲欧美视频| 香蕉久久夜色精品| 久久久噜噜噜久久中文字幕色伊伊| 美女啪啪无遮挡免费久久网站| 亚洲二区视频在线| 亚洲视频观看| 久久久久久成人| 欧美日本久久| 国产日韩欧美一二三区| 在线观看国产欧美| 亚洲一区二区三区国产| 久久丁香综合五月国产三级网站| 久久久亚洲精品一区二区三区| 亚洲第一精品电影| 亚洲一区二区三区乱码aⅴ蜜桃女| 欧美一区二区三区四区高清| 欧美激情网友自拍| 国产一区二区三区久久久久久久久| 亚洲国产日韩欧美| 欧美一区二区三区男人的天堂 | 久久色中文字幕| 欧美精品少妇一区二区三区| 国产精品久久久久9999吃药| 在线看无码的免费网站| 亚洲综合国产| 亚洲成色www8888| 亚洲免费在线观看视频| 你懂的国产精品永久在线| 国产精品欧美精品| 亚洲日本成人女熟在线观看| 性久久久久久久| 日韩视频专区| 美女福利精品视频| 国产自产女人91一区在线观看| 99热在这里有精品免费| 美女主播精品视频一二三四| 亚洲一区二区免费| 欧美视频日韩视频| 日韩视频免费| 亚洲国产精品久久久|