Какие методы используются для визуализации 4-мерного массива? - PullRequest
14 голосов
/ 14 мая 2010

Массив (ряд элементов):

[ ][ ][ ][ ][ ][ ]

2-D массив (таблица):

[ ][ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ][ ]

3D-массив:

//Imagine the above table as a cube ( a table with depth )

Как визуализировать 4-D массив?

Самое близкое, что я могу получить, это несколько кубов, поэтому для int[,,,] [5,10,2,7] будет куб 5, строка 10, столбец 2, слой (глубина) 7.

Я не уверен, что это лучший способ визуализации 4-D массива, хотя ... и я не уверен, что это лучший способ научить его ... однако он имеет преимущество в том, что расширяемый (строка кубов, таблица кубов, куб кубов (массив 6-й)

Кубики во времени - это еще один способ думать об этом.

Я на правильном пути?

Ответы [ 11 ]

13 голосов
/ 14 мая 2010

Если вы пытаетесь отобразить вывод программы для конечных пользователей, значит, вы на правильном пути.

Если вы пытаетесь научить этому, я бы кратко использовал этот метод, а затем углубился в объяснение того, как компьютер хранит их все в непрерывной памяти - http://www.plantation -productions.com /Webster/www.artofasm.com/Windows/HTML/Arraysa2.html. Я думаю, что это лучший способ понять это.


Исходная ссылка больше не работает, но я нашел ее в интернет-архиве здесь - http://web.archive.org/web/20120410120743/http://webster.cs.ucr.edu/AoA/Windows/HTML/Arraysa2.html


Обновлен первый абзац для отображения обновленной ссылки благодаря @ OskensoKashi.

11 голосов
/ 14 мая 2010

Вот как бы я научил этому: ряд кубиков. Позиция (или номер куба) в этой строке является 4-м измерением.

А если вам нужны 5 измерений, то теперь графические столбцы и строки - из кубов!

Для 6 измерений изобразите строки и столбцы кубов (как для 5 измерений), а теперь добавьте «слои» этих строк и столбцов.

... Для 7 измерений представьте все вышеперечисленное - заключенные в кубики в один ряд! ;)

Да, это кубики до самого конца.

4 голосов
/ 14 мая 2010

Визуализация в более чем трех измерениях не будет очень интуитивно понятной - как бы вы ни старались. Но вы на правильном пути - изменяющиеся во времени объекты являются распространенным методом визуализации данных более высокого размера.

Трехмерный объект может быть визуализирован с изменяющимся во времени пересечением объекта с плоскостью, в то время как объект движется через плоскость - например, сфера, проходящая через плоскость, отображается в виде круга, растущего из точки на диск с таким же радиус как сфера и снова сокращается до точки.

То же самое можно сделать с четырехмерными объектами. Они визуализируются как пересечение объекта с фиксированным трехмерным пространством, в то время как объект движется вдоль четвертого измерения.

4 голосов
/ 14 мая 2010

Я не могу нарисовать здесь , но визуализировать его как линию (или массив) кубов.

Другой способ - сначала взять представление куба для трехмерного массива. Теперь замените куб в своем уме деревянным блоком ребенка и выровняйте несколько блоков рядом друг с другом.

3 голосов
/ 20 мая 2010

Визуализация 3-х измерений в виде кубов и 4-х измерений в виде линии кубов имеет смысл, но, как вы можете видеть, это сложно расширить. Я обычно думаю об этом, чтобы заставить визуализацию в 2 измерения. Это, как правило, самый простой способ понять, например, как массивы хранятся в C. 2-мерный массив - это просто массив указателей на большее количество массивов или массив массивов. Думая об этом, этот способ также пригодится, если вы действительно хотите попробовать представить 3+-мерные данные в 2-мерном формате, например, в электронной таблице. Дополнительные измерения должны быть добавлены в виде столбцов в столбцах или строк в строках.

На самом деле, визуализация быстро повреждает глаза, но, по крайней мере, ее можно нарисовать на доске, и для добавления дополнительных измерений не требуется много воображения.

1-мерный (массив)

[] [] [] []

2-мерный (Массив массивов)

[ [] [] ]  [ [] [] ]  [ [] [] ]  [ [] [] ]

3-мерный (Массив Массивов)

[  [ [] [] ]  [ [] [] ]  ]   [  [ [] [] ]  [ [] [] ]  ]
2 голосов
/ 14 мая 2010

Это зависит от того, какие данные вы пытаетесь визуализировать. В некоторых ситуациях у меня было до того, как 2D / 3D изображение + цвет RGB работали нормально. 2D-изображение формирует два измерения, а красный, зеленый и синий цветовые каналы, используемые для рисования точки, добавляют еще 3 измерения.

Например, взгляните на карты нормалей , используемые при разработке игр. Он визуализирует поверхность (2D) с вектором нормали в каждой точке (3D). Векторы обозначены цветовыми компонентами x ~ red, y ~ green, z ~ blue, смещенными на 127, чтобы иметь возможность хранить отрицательные значения.

1 голос
/ 19 февраля 2013

Старая тема, но вот хорошая ссылка с хорошим примером и красивыми картинками. Может кому-нибудь пригодится!

http://sp -productions.zxq.net / C ++% 20tutorial2.html

1 голос
/ 14 мая 2010

Одной визуализацией будут карты с одной поверхности на другую поверхность. Представьте, что ваши руки зависают над разными точками на столе: каждый раз, когда вы двигаете руку или , вы получаете совершенно другое значение.

1 голос
/ 14 мая 2010

Hypercube! Но на самом деле, если вам нужна визуализация, предположите, что каждый блок, который вы создали из трехмерного массива, теперь имеет массив внутри.

1 голос
/ 14 мая 2010

Две красивые многомерные визуализации, не относящиеся только к четырем измерениям, представляют собой Параллельные координаты и Линза стола .

...