的横截面假设你有在C#如何获得3维数组c#
int space[width, height, depth];
3维数组,你想实现的方法
public int[,] GetCrossSection(int position, int dimension)
在哪里“位置”是指定您想要提取切片的“维度”点。 而不是使用我们只处理3维的事实很重要,在下面的示例中,您可以通过添加if语句来修复它们,并假定矩阵不会超出3维。
我第一次尝试(评论问题区域):
public int[,] GetCrossSection(int position, int dimension)
{
int[] dimensionIterationInterval = new int[] { width, height, depth };
var dims = new List<int>(dimensionIterationInterval);
dims.RemoveAt(dimension);
dimensionIterationInterval = dims.ToArray();
int[,] crossSection = new int[dimensionIterationInterval[0], dimensionIterationInterval[1]];
int[] itr = new int[2];
for (itr[0] = 0; itr[0] < dimensionIterationInterval[0]; itr[0]++)
{
for (itr[1] = 0; itr[1] < dimensionIterationInterval[1]; itr[1]++)
{
crossSection[itr[0], itr[1]] = space[?,?,?]; //Problem
}
}
}
我的第二次尝试,同样是无用的:
public int[,] GetCrossSection(int position, int dimension)
{
int[,] dimensionIterationInterval = new int[,] { { 0, width }, { 0, height }, { 0, depth } };
dimensionIterationInterval[dimension, 0] = position;
dimensionIterationInterval[dimension, 1] = position + 1;
int[,] crossSection = new int[?,?]; //Problem
for (int x = dimensionIterationInterval[0, 0]; x < dimensionIterationInterval[0, 1]; x++)
{
for (int y = dimensionIterationInterval[1, 0]; y< dimensionIterationInterval[1, 1]; y++)
{
for (int z = dimensionIterationInterval[2, 0]; z < dimensionIterationInterval[2, 1]; z++)
{
crossSection[?, ?] = space[x, y, z]; // Problem
}
}
}
}
这两项attemps碰上死角。你会如何解决它?没有固定迭代循环的空间维数[,,]。如果维度的数量增加,这是有点可管理的。聪明/有限,如果陈述可以工作,但不是每个维度过多ifs。
巧语具体的东西赞赏,但我也是一个“伪的codeY感兴趣的问题如果有一些结构可以用来解决我在两次尝试中遇到的问题, – Adam