Я ищу реализацию трехмерного кругового буфера в C# .NET, который позволяет мне извлекать фрагменты буфера.Трехмерный круговой буфер
Я пробовал многомерный массив, но он не позволяет мне получить определенный кусок буфера.
Я также попытался реализовать версию с использованием jagged массива, но у меня есть некоторые проблемы в понимании того, как инициализировать матрицу, а также в извлечении срезов.
Спасибо за помощь.
[РЕДАКТИРОВАТЬ 1] Буфер будет использоваться для хранения данных от датчиков reltime, он будет фиксирован по ширине, а глубина (время, которое является круговой частью) будет определяться пользователем.
Ломтики, которые мне нужны, будут матрицей фиксированного размера (ширина и высота с данными заданного времени).
[EDIT 2] Единственная реализация, которую я мог бы реализовать, работает. С неровными массива я все еще застряли в декларации (я нахожу это хаотическое)
public class CircularBufferMatrix<T>
{
private readonly T[,,] _buffer;
public CircularBufferMatrix(int width, int height, int depth)
{
Width = width;
Height = height;
Depth = depth;
_buffer = new T[width, height, depth];
}
public T this[int x, int y, int z]
{
set { _buffer[x, y, z%Depth] = value; }
get { return _buffer[x, y, z%Depth]; }
}
#region Getters
public int Width { get; }
public int Height { get; }
public int Depth { get; }
#endregion
}
Хммм, я думаю, вам нужно быть более точным в ваших требованиях! Являются ли срезы, которые вы хотите извлечь, всегда одного размера и содержат одни и те же данные? – Skizz
@Skizz Привет, я обновил вопрос, спасибо за помощь –
Добро пожаловать в SO. Любой код для показа? – MickyD