的橫截面假設你有在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