游戲六邊形地圖方案及推論

以下方案基于將三維立方體堆疊數(shù)據(jù)轉(zhuǎn)換為二維平面數(shù)據(jù)些侍,最終構(gòu)成的是尖朝上六邊形地圖。邊朝上六邊形地圖也可得出相似的推論政模。

一切的想法源自一張立體圖:

引發(fā)對(duì)六邊形地圖方案思考的一堆方塊

上圖中岗宣,每個(gè)正方體在屏幕上的投影,都是一個(gè)正六邊形览徒。所以逆向思考,可以認(rèn)為六邊形地圖中的每個(gè)六邊形颂龙,都是一個(gè)立方體习蓬。 基于此纽什,我們便可以開始進(jìn)行六邊形地圖方案的設(shè)計(jì)與推演。 設(shè)計(jì)與推演的目的躲叼,是能夠找到巨象數(shù)據(jù)與抽象理論之間的關(guān)系芦缰,以協(xié)助我們通過計(jì)算機(jī)的形式去進(jìn)行計(jì)算。

坐標(biāo)系的建立

坐標(biāo)系的引入思路

既然我們已經(jīng)將每一個(gè)六邊形地圖巨象成為了一個(gè)立方體枫慷,那么我們就令這些立方體是邊長為1的立方體让蕾。基于此或听,我們便可以給每個(gè)立方體定義坐標(biāo)探孝,并建立坐標(biāo)系

三維坐標(biāo)系與方塊

如上圖誉裆,建立三維坐標(biāo)系顿颅,其中我們定義藍(lán)色為X軸,綠色為Y軸足丢,紅色為Z軸粱腻。

基于三維坐標(biāo)系,我們便可以求出每個(gè)方塊的坐標(biāo)斩跌。比如在上圖中绍些,左下方塊即可定位為(5,0,0),則右側(cè)方塊坐標(biāo)依次為(4,0,1)耀鸦、(3,0,2)柬批、(2,0,3)(1,0,4)揭糕、(0,0,5)萝快。

坐標(biāo)系的確立

那么,讓我們將焦點(diǎn)聚焦到最基本的六邊形地圖轉(zhuǎn)換的立體圖上著角。

基礎(chǔ)6*6的六邊形地圖轉(zhuǎn)換成的三維格子圖

如上圖揪漩,我們可以理解為這是一張二維平面圖,每個(gè)六邊形格子可以用(x,y)的形式去表述吏口;同時(shí)也可以理解它是一個(gè)三維世界的二維投影奄容,每個(gè)立方體都可以用(x,y,z)的形式去表述。

那么产徊,針對(duì)上圖中所選立方體昂勒,我們將其坐標(biāo)設(shè)為(0,0,0),而其代表的六邊形格子的坐標(biāo)則設(shè)定為(0,0)舟铜。直觀地戈盈,該點(diǎn)右側(cè)的六邊形二維坐標(biāo)為(0,1),該立方體右側(cè)立方體的坐標(biāo)為(1,0,-1)

基于此塘娶,應(yīng)用于生產(chǎn)環(huán)境的坐標(biāo)系得以確立归斤,下一步,就是推導(dǎo)該坐標(biāo)系下的數(shù)學(xué)規(guī)律刁岸。

坐標(biāo)系下的運(yùn)算法則

設(shè)某立方體坐標(biāo)為(0,0,0)脏里,那么根據(jù)圖例,我們可以推導(dǎo)出它周邊六個(gè)立方體的坐標(biāo)虹曙。

以點(diǎn) (0,0,0) 為基礎(chǔ)迫横,
左上角點(diǎn)坐標(biāo)為   (-1,1,0),
右上角點(diǎn)坐標(biāo)為   (0,1,-1)酝碳,
右點(diǎn)坐標(biāo)為      (1,0,-1)矾踱,
右下角點(diǎn)坐標(biāo)為   (1,-1,0),
左下角點(diǎn)坐標(biāo)為   (0,-1,1)击敌,
左點(diǎn)坐標(biāo)為      (-1,0,1)

    (-1,1,0) (0,1,-1)
(-1,0,1) (0,0,0) (1,0,-1)
    (0,-1,1) (1,-1,0)

當(dāng)我們推算出三維坐標(biāo)系下介返,原點(diǎn)周圍六個(gè)點(diǎn)的坐標(biāo)之后,便可以將這六個(gè)點(diǎn)的坐標(biāo)轉(zhuǎn)換為六個(gè)向量沃斤,分別表示指定的某個(gè)方塊周圍六個(gè)點(diǎn)的偏移向量圣蝎。


基于我們是由原點(diǎn)開始構(gòu)建坐標(biāo)系,且已獲取到六個(gè)方向的偏移向量衡瓶,可以得出以下結(jié)論:

結(jié)論1: 坐標(biāo)系中所有點(diǎn)的坐標(biāo)的x徘公、yz三值之和為0哮针。

結(jié)論1推導(dǎo):因坐標(biāo)系以(0,0,0)點(diǎn)開始关面,且各偏移向量xy十厢、z值之和為0等太,所以可推導(dǎo)出坐標(biāo)系中所有點(diǎn)的坐標(biāo)的xy蛮放、z三值之和為0缩抡。


結(jié)論2: 設(shè)坐標(biāo)系中任意兩點(diǎn)的坐標(biāo)差為(x,y,z),則x+y+z=0成立包颁。

結(jié)論2推導(dǎo):兩坐標(biāo)點(diǎn)的坐標(biāo)差可以理解為由A點(diǎn)到B點(diǎn)所經(jīng)過的變換瞻想。因該變換由六個(gè)方向的偏移向量組成,且六個(gè)偏移向量滿足x+y+z=0,所以該結(jié)論成立。


根據(jù)數(shù)學(xué)歸納法楔壤,我們可以依據(jù)所有點(diǎn)(二維坐標(biāo)下的六邊形,三維坐標(biāo)下的方塊)的二維與三維坐標(biāo)格遭,求出他們相互之間的轉(zhuǎn)化關(guān)系:

結(jié)論3: 設(shè)某點(diǎn)二維坐標(biāo)為(a,b),三維坐標(biāo)為(x,y,z)椭盏,則對(duì)任意一點(diǎn)蚌斩,

存在三維轉(zhuǎn)二維運(yùn)算:a=x+(y>>1), b=y呵俏;

存在二維轉(zhuǎn)三維運(yùn)算:x=a-(b>>1), y=b, z=-x-y拴驮。


地圖常用的功能之一便是求取每個(gè)點(diǎn)之間的距離。因?yàn)槎S坐標(biāo)不便于我們求取距離柴信,所以我們優(yōu)先推算每個(gè)點(diǎn)在三維坐標(biāo)下距離的求取方式,之后再利用二維坐標(biāo)與三維坐標(biāo)之間的轉(zhuǎn)換關(guān)系宽气,即可完成二維左標(biāo)下求取兩點(diǎn)距離的計(jì)算流程随常。

我們先拋出結(jié)論:

結(jié)論4: 設(shè)A點(diǎn)與B點(diǎn)三維坐標(biāo)差為(x,y,z),則該坐標(biāo)差的本質(zhì)為6個(gè)偏移向量中的1-2個(gè)各放大不同倍數(shù)后疊加而成萄涯。

結(jié)論5: 設(shè)A點(diǎn)與B點(diǎn)三維坐標(biāo)差為(x,y,z)绪氛,則A點(diǎn)與B點(diǎn)的距離xy涝影、z絕對(duì)值的最大值枣察。


選擇起始點(diǎn)

我們先選擇一個(gè)點(diǎn)作為起始點(diǎn)。

選擇目標(biāo)點(diǎn)

之后我們?cè)龠x擇一個(gè)點(diǎn)作為目標(biāo)點(diǎn)燃逻。

從起始點(diǎn)到目標(biāo)點(diǎn)序目,可以有兩種路徑方案,如下圖實(shí)例:

路徑方案1
路徑方案2

兩種方案雖然行走路徑不同伯襟,但是距離相同猿涨。其本質(zhì)就是n個(gè)偏移向量的疊加。而由于六邊形地圖自身的性質(zhì)姆怪,構(gòu)成兩點(diǎn)之間路徑的偏移向量叛赚,只可能是單獨(dú)1個(gè)向量或相鄰的2個(gè)向量組合而成。

目光回到偏移向量稽揭,我們可以發(fā)現(xiàn)任意相鄰的2個(gè)向量存在一個(gè)坐標(biāo)具有相同的值俺附,所以結(jié)合兩點(diǎn)之間路徑的偏移向量的本質(zhì),就可以得出結(jié)論5溪掀。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末事镣,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子膨桥,更是在濱河造成了極大的恐慌蛮浑,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,888評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件只嚣,死亡現(xiàn)場(chǎng)離奇詭異沮稚,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)册舞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門蕴掏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事盛杰⊥斓矗” “怎么了?”我有些...
    開封第一講書人閱讀 168,386評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵即供,是天一觀的道長定拟。 經(jīng)常有香客問我,道長逗嫡,這世上最難降的妖魔是什么青自? 我笑而不...
    開封第一講書人閱讀 59,726評(píng)論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮驱证,結(jié)果婚禮上延窜,老公的妹妹穿的比我還像新娘。我一直安慰自己抹锄,他們只是感情好逆瑞,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,729評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著伙单,像睡著了一般获高。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上吻育,一...
    開封第一講書人閱讀 52,337評(píng)論 1 310
  • 那天谋减,我揣著相機(jī)與錄音,去河邊找鬼扫沼。 笑死出爹,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的缎除。 我是一名探鬼主播严就,決...
    沈念sama閱讀 40,902評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼器罐!你這毒婦竟也來了梢为?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,807評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤轰坊,失蹤者是張志新(化名)和其女友劉穎铸董,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體肴沫,經(jīng)...
    沈念sama閱讀 46,349評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡粟害,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,439評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了颤芬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片悲幅。...
    茶點(diǎn)故事閱讀 40,567評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡套鹅,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出汰具,到底是詐尸還是另有隱情卓鹿,我是刑警寧澤,帶...
    沈念sama閱讀 36,242評(píng)論 5 350
  • 正文 年R本政府宣布留荔,位于F島的核電站吟孙,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏聚蝶。R本人自食惡果不足惜拔疚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,933評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望既荚。 院中可真熱鬧,春花似錦栋艳、人聲如沸恰聘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽晴叨。三九已至,卻和暖如春矾屯,著一層夾襖步出監(jiān)牢的瞬間兼蕊,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評(píng)論 1 272
  • 我被黑心中介騙來泰國打工件蚕, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留孙技,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,995評(píng)論 3 377
  • 正文 我出身青樓排作,卻偏偏與公主長得像牵啦,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子妄痪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,585評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容