首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >屏幕到交错等距网格算法

屏幕到交错等距网格算法
EN

Stack Overflow用户
提问于 2020-09-28 03:25:11
回答 1查看 131关注 0票数 1

我正在与Kivy和Pytmx合作,我需要从地图坐标中获得交错地图的网格瓦片。

mymap

我的磁贴大小是:

代码语言:javascript
复制
TILE_WIDTH = 256
TILE_HEIGHT = 149

当我使用等距菱形网格时,我是这样计算的:

代码语言:javascript
复制
def screen_to_isometric_grid(cartX, cartY):
    screenx = mh - cartY / (TILE_HEIGHT * SPRITE_SCALING) + cartX / (TILE_WIDTH * SPRITE_SCALING) - mw / 2 - 1 / 2
    screeny = mh - cartY / (TILE_HEIGHT * SPRITE_SCALING) - cartX / (TILE_WIDTH * SPRITE_SCALING) + mw / 2 - 1 / 2
    screenx2 = round(screenx)
    screeny2 = round(screeny)
    return screenx2, screeny2

现在我正在使用交错的地图,我不知道如何获得瓦片坐标。

我在enter link description here这里找到了C++中的算法

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-02 03:42:22

代码语言:javascript
复制
def subregion(px, py, r_x, r_y):
rx = int(r_x)
ry = int(r_y)
foo = px - py
bar = px + py
if foo < 0 and bar > 1:  # Top
    return [rx, ry]
elif foo < 0 and bar < 1:  # Left
    if r_y > 0:
        if py > 0.5:
            return [rx - 1, ry + 1]
        return [rx - 1, ry]
    else:
        return None
elif foo > 0 and bar > 1:  # Right
    if r_y > 0:
        if py > 0.5:
            return [rx, ry + 1]
        return [rx, ry]
    else:
        return None
elif foo > 0 and bar < 1:  # Bottom
    if r_y < 0:
        return [rx, ry]
    return [rx, ry + 1]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64092456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档