arrays - 二维笛卡尔坐标网格和数组矩阵之间有什么关系?

标签 arrays matrix

我正在处理一个涉及数组矩阵的复杂问题。通常我认为矩阵具有行索引和列索引。

matrix[row][column]

但是对于这个特殊问题,我认为在笛卡尔坐标的背景下考虑它会更有用。但在执行此操作时,我注意到存在一些明显的问题,例如矩阵索引只能是正整数,而不是可以在任何方向上跨越的笛卡尔坐标。我还发现自己对 x 和 y 作为索引如何映射到作为索引的行和列有点困惑。

二维笛卡尔坐标网格和数组矩阵之间有什么关系?

最佳答案

看来您主要关心的是如何使用 Java 二维数组表示笛卡尔坐标系。其中令人困惑的部分是如何处理负坐标,因为 Java 数组只能通过正数进行索引。这是一个 CartesianGrid 类,其中包含一个二维整数数组。可以使用任意范围的笛卡尔坐标来初始化该数组。 getter 和 setter 偏移负坐标以映射到 Java 期望的数组范围。

public class CartesianArray {
    private int[][] grid;
    private int minX, minY;
    private int sizeX, sizeY;

    public CartesianArray(int minX, int minY, int maxX, int maxY) {
        this.minX = minX;
        this.minY = minY;
        sizeX = maxX - minX + 1;
        sizeY = maxY - minY + 1;
        grid = new int[sizeX][sizeY];
    }

    public void setPoint(int xCart, int yCart, int value) {
        int x = xCart - xMin; // offset negative x value
        int y = yCart - yMin; // offset negative y value

        // check for out of bounds coordinates
        if (x < 0 || x >= sizeX || y < 0 || y >= sizeY) {
            throw new Exception("Cannot set a point outside the grid.");
        } else {
            grid[x][y] = value;
        }
    }

    public int getPoint(int xCart, int yCart) {
        int x = xCart - xMin; // offset negative x value
        int y = yCart - yMin; // offset negative y value

        if (x < 0 || x >= sizeX || y < 0 || y >= sizeY) {
            throw new Exception("Cannot get a point outside the grid.");
        } else {
            return grid[x][y];
        }
    }
}

关于arrays - 二维笛卡尔坐标网格和数组矩阵之间有什么关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29396203/

相关文章:

java - 在Java中创建数字矩阵

r - 如何检查矩阵中的每个值是否在 R 中其他两个矩阵中的相应值之间?

java - 如何将选定的项目从一个数组复制到另一个数组?

基于java的算法来查找数组中是否有任何2个数字的总和等于x

php - 查找具有特定键名前缀的数组元素

c++ - 数组在返回时丢失值(库存/菜单程序)C++

java - 适用于 JOGL + 通用矩阵数学的快速 Java 矩阵库?

java - 使用 StringBuilder() 将数组解析为带标题的 CSV — 标题行问题

matlab - Matlab中获取度量矩阵的简单方法

c++ - 创建表示二维矩阵中所有可能路径的图形