3D 배열의 단면을 만드는 방법이 있습니까?3D 배열의 단면
의미 : X 축과 Y 축의 2D 평면을 얻을 수 있도록 Z 축을 따라 배열을 자릅니다.
ArrayList
또는 심지어 List
에 개별 섹션으로 저장할 수 있도록이 작업을 수행해야합니다.
감사합니다. 그것은 축이 당신의 Z 무엇인지에 따라 달라집니다
3D 배열의 단면을 만드는 방법이 있습니까?3D 배열의 단면
의미 : X 축과 Y 축의 2D 평면을 얻을 수 있도록 Z 축을 따라 배열을 자릅니다.
ArrayList
또는 심지어 List
에 개별 섹션으로 저장할 수 있도록이 작업을 수행해야합니다.
감사합니다. 그것은 축이 당신의 Z 무엇인지에 따라 달라집니다
내가, C#을이 일을하는 아웃 - 오브 - 박스 방법이 없습니다 확신 : 오히려 복사본을 만드는 것보다, 또는
T[,] SliceThroughZ<T>(T[,,] threeDee, int zIndex)
{
var xLength = threeDee.GetLength(0);
var yLength = threeDee.GetLength(1);
var twoDee = new T[xLength, yLength];
for (int i = 0; i < xLength; i++)
for (int j = 0; j < yLength; j++)
twoDee[i, j] = threeDee[i, j, zIndex];
return twoDee;
}
을, 당신 원래 배열을 쿼리하는 2 차원 인덱서를 사용하여 래퍼 클래스를 구현할 수 있습니다. 배열 특정 메서드를 잃을 수도 있습니다.
class ZSliceWrapper<T>
{
public T[, ,] Source { get; set; }
public int ZIndex { get; set; }
public T this[int xIndex, int yIndex]
{
get // you could even implement a set.
{
return Source[xIndex, yIndex, ZIndex];
}
}
}
좋아, 그게 바로 내 머리에 터진 정확히 어떻게 내가 이것을 게시 ... 바보 같은 두뇌, * 공황, 공황 * 게시물 질문 * * 브레인은 대답을 찾는다 * –
하하, 나는 우리 모두가 생각했습니다. 거기 :) – Rawling
:
당신은
var array = new int[]{xAxiss1, yAxiss1, zAxiss1, xAxiss2, yAxiss2, zAxiss2...}
가 있다고 가정합니다.
슬라이스 XY dimmension에서이 배열을 원한다면 첫 번째와 두 번째 요소를 선택하십시오.
희망이 도움이됩니다. 당신이 뭔가 자신 구현해야 할 것이다, 그래서
감사합니다. 직접 해결했습니다. : D –
는 랭크 세 배열 SomeType[,,]
경우에 Z 축 (즉 XY 평면 토륨에 평행) 한 z
(이하 "높이"원하는 고정함으로써 용이하게되어 수직 한 다음 잘라 이 있으면 자르며) x
및 y
이 범위를 통과하게합니다. 예를
static IEnumerable<SomeType> CutInXYDrection(SomeType[,,] threeDimArr, int zValue)
{
for (int x = 0; x < threeDimArr.GetLength(0); ++x)
{
for (int y = 0; y < threeDimArr.GetLength(1); ++y)
{
yield return threeDimArr[x, y, zValue];
}
}
}
ADDITION : 대신 YZ 방향으로 절단한다면, 당신은 foreach는 다차원 배열 (§8.8의 끝을 통과하는 순서를 활용할 수 있습니다. C# 언어 사양 버전 4.0의 4) :
static IEnumerable<SomeType> CutInYZDrection(SomeType[,,] threeDimArr, int xValue)
{
int oneLayer = threeDimArr.GetLength(1) * threeDimArr.GetLength(2);
return threeDimArr.Skip(xValue * oneLayer).Take(oneLayer);
}
답장을 보내 주셔서 감사합니다 이것은 다른 사람들을 돕기를 바랍니다. 왜냐하면 제 두뇌가 지체되어서 내가 그것을 게시 한 것처럼 해결할 수 있기 때문입니다! –
@Jeppe 이렇게하면 조각을 단일 차원으로 병합합니다. – Rawling
@ Rawling 네, 원래 포스터는 그가 "목록"(1 차원으로 보간)에 관해 이야기했기 때문에 원했을 것이라고 생각했습니다. –
3d 배열을 정의하는 데 사용중인 데이터 구조를 표시하십시오. – logicnp
옵션 인 경우 지그재그 형 배열을 대신 사용할 수 있습니다 (예 :'int [] [,]'). – phg