關(guān)于redblobgames的六邊形int坐標系
對于六邊形tile游戲,通常用另一種坐標系,方便表示和操作。
以前自己瞎設計了簡單坐標系,可以支持一些簡單功能,而且直觀:

不過麻煩的是跨軸的時候,需要判斷,就使得象限之外的軸始終為0。
最近希望遍歷一個六邊形周圍6個六邊形的中心點坐標,這樣搞會很麻煩。
(當然你可以使用極坐標旋轉(zhuǎn)去遍歷,但是這樣就不是int坐標系了,出現(xiàn)的float在判斷相等的時候會很麻煩)
于是看看townscaper作者推薦的博客。文中有一個坐標系,我簡稱srq系,有一些好處。先看圖:

相比我的坐標系,它有幾個好處:
第零。它是全局的坐標系,不用考慮跨象限srq坐標轉(zhuǎn)換問題。不過從cartesian轉(zhuǎn)換回srq還是要考慮象限的,也很麻煩。
第一。有正負軸。如果srq坐標乘以-1,則得到以原點對稱的位置。

第二。每個srq鄰居都是對2個軸的(1,-1),而且按照圖中的標記法,可以很方便看出移動所對應改變的2軸,是垂直于方向的兩個軸。并且是“左+右-”

總之,是方便代碼遍歷一個塊的周圍塊了。