我正在处理一个涉及数组矩阵的复杂问题。通常我认为矩阵具有行索引和列索引。
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/