java - 有人可以帮我将二维 map 转换为等轴测图吗?

标签 java arrays 2d isometric

我想寻求一些帮助,将从文本文件导入的二维 map 转换为等距 map 格式。我已经浏览了相当多的内容,对 java 仍然有点陌生,我更多的是“查看示例代码”而不是自己编写。此时任何事情都会有所帮助。我也看过这里>> How can i convert x-y position to tile x-y for isometric tile? <<这里>> Drawing Isometric game worlds <<我感觉我已经快到了,但我只是明白了。谢谢。

for(int row = rowOffset; row < rowOffset + numRowsToDraw; row++) {

        if(row >= numRows) break;

        for(int col = colOffset; col < colOffset + numColsToDraw; col++) {

            if(col >= numCols) break;
            if(map[row][col] == 0) continue;

            int rc = map[row][col];
            int r = rc / numTilesAcross;
            int c = rc % numTilesAcross;

            x = (col / Tile_H) + (row / Tile_W);
            y = (row / Tile_W) - (col / Tile_H);

            g.drawImage(
                tiles[r][c].getImage(),

                //(((y / Tile_HH) - (x / Tile_HW)) / 2) + col * tileSize,
                //(((y / Tile_HH) + (x / Tile_HW)) / 2) + row * tileSize,

                //x,

                //y,


                x + col * tileSize,
                y + row * tileSize,
                null
            );

        }

    }

最佳答案

以下是将 2D 坐标转换为 iso 坐标的公式:

对于 [I,J] 坐标 -> (小心,I-J 是这样的:0, 1 而不是原始坐标(我的意思是像素)。

I = (y - x) * (tileWidth / 2)
J = (x + y) * (tileHeight / 2)

然后添加 2 个偏移量(顶部和左侧以在屏幕中央显示 map )

但是我不确定您的问题是否是公式,因为我不使用 java 编写代码。

关于java - 有人可以帮我将二维 map 转换为等轴测图吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31635322/

相关文章:

Java Joda-Time DateTime 如何从儒略日期创建日期

java - Spring Boot 项目中的 SonarQube "Close this ConfigurableApplicationContext"

python - 提高循环 numpy 数组的速度

javascript - 构建 HTML 选择字段并使用 JavaScript 数组选择选项

c++ - 为什么基于 Dear ImGui 的渲染器这么慢?

java - Arraylist 到 2D 数组,然后到 JTable

java - 如何解决这个僵局呢?

c++ - 动态分配数组的构造函数

c++ - 二维 map 查看器未处理的异常

c - 使用 OpenGL 缩放和翻译 2D 文本