Как стать автором
Обновить

Комментарии 66

интересно много ли людей способны представить 4-х мерное пространство и воспринимать его так же как 3-х мерное. Не особо задумываясь представлять 4-х мерные фигуры, вращать их, строить сечения, собирать из примитивов более сложные и т.д… все то что могут делать в голове люди с развитым 3д пространственным воображением… есть ли они вообще?
Мозг человека эволюционно заточен под восприятие стереоизображения, составленного из 2-х плоских. Трехмерное и то получается посредством представления проекций этих двух плоскостей и разнообразных операций над ними (с привлечением предыдущего опыта). Ни о каком полноценном восприятии/представлении даже трехмерной сцены речи нет вообще.
Ну почему же два, светотени вполне себе позволяют нам воспринимать объем и хоть картинка и является плоской но тем не менее яркость например на черно-белой картинке вполне можно принять за третье измерение аналогично тому как это реализовано, например, в Z-буфере в компьютерной графике.
Ну это не полноценное трехмерное восприятие, скорее плоская картинка + карта глубины + личный опыт о форме/свойствах предметов.
Там есть видео ниже, там все достаточно прилично показано.
Полноценное — это, в двух словах, когда мы одним взглядом видим сразу все точки объекта.
Так мы и видим, личный опыт о форме/свойствах предметов не при чем ведь не обязательно третье измерение (цвет) будет обозначать глубину как в графике, оно может показывать например температуру, силу ветра, давление и т. д., карта может быть не черно белой а изменяться от одного цвета к другому и т. д.
Не, я больше про свойства перспективы, определение дальности и т.п., на основании чего строится модель сцены. Мозг ничего не знает о том, что может быть, и берет более часто используемую ассоциацию из своих закромов, и она, скорее всего, будет относиться именно к пространственной «навигации».
Ну да, особенно учесть, что это 4-ех мерное пространство является проекцией на трехмерное, а оно в свою очередь проецируется на двухмерную плоскость монитора.
Как говорилось в старом анекдоте, всё просто: представьте n-мерное пространство и положите n равным 4.
С этим были проблемы. В частности, когда я защищал эту дипломную, то я 30 минут объяснял почтенной комиссии почему это является 4-мерным объектом и как я его представляю в программе. Многие также думали, что я заблуждаюсь или обманываю. У некоторых 4 измерение автоматически ассоциируется со временем. А эту работу от начала до конца понял только я и мой научный руководитель, который мне также помогал разрабатывать алгоритм сборки.
Когда-то давно написал 4-мерного пакмана. Игровое пространство представляло из себя несколько 3-мерных лабиринтов, которые существовали как бы в параллельных измерениях. Между такими лабиринтами существовали «коридоры». На самом деле пространство было абсолютно изотропным и не было никаких выделенных направлений, но объяснить людям, что это и есть 4-мерное пространство было очень сложно. Самой частой фразой, которую я слышал, было «4-ое измерение — это же время!?»
Ну мне помогает представить 4D объект протяженный во времени. Каждый 3D срез по четвертому измерению — это 3D объект в определенный момент времени.
Хм, теперь осталось лишь представить вектор перпендикулярный вектору времени и мы получаем пятое измерение. Что если время это комплексное число, а мы замечаем лишь действительную составляющую?
Если взять трёхмерную решётку трёхмерных сечений объекта, то легко работать и с шестимерным пространством.
Например, грани вот этого кубика шестимерны (показаны 7 граней и 5-мерные сечения еще шести):
image
Если концепцию четырёх- и более мерного пространства у меня ещё получается понять через аналогию 1D->2D->3D->4D, то с многомерным временем никак, потому что аналогий нет.
Чтобы представить многомерное время, не покидая пределов уютного 3D-мирка, представьте плоскость, каждой точке которой соответствует куб, трехмерный срез. Для простоты можно даже представить, что плоскость замощена этими кубами стык в стык — или что она гладкая, но для любой точки можно получить «всплывающую подсказку», которая «призумит» соответствующий куб. Время, когда оно линейное (в 3D+1T варианте), это просто линия, проведенная по этой плоскости. Чтобы представить не все состояния сразу, а увидеть изменения, то можно ввести некоторый «курсор» — точку на плоскости, имеющую уравнение движения. Точка движется вдоль заданной линии, таким образом, в кубе «всплывающей подсказки» идет время, происходят изменения.

В пятимерном же варианте с двухмерным временем (3D+2T) «курсор» может двигаться не только вдоль некоторой линии, а вообще куда угодно в пределах плоскости — в том числе выписывать круги, ромашки, периодически пересекать свою траекторию и т.д.

Для трехмерного времени и трехмерного пространства, аналогично, представляем трехмерное «временнОе» пространство, каждой точке которого соответствует трехмерный куб, и у курсора текущего времени теперь три степени свободы.
Только это получается не время, а пространство вариантов. Похожее на то, что описывалось в последних книгах «Hitchhiker's Guide».
Но в чем тогда принципиальная разница между временем и пространством?
Исключительно в свойствах человеческой памяти. Мы «видим» только ту линию, по которой прошли, до точки, которая нам кажется «текущим моментом».
Тогда разницы между 3D+2T и 4D+1T никакой и смысла предпочитать первое нет
Верно, если вы можете свободно представить изменяющийся 4D объект.
Есть вот такое неплохое изображение с визуализацией. При некоторой фантазии можно заметить, что кубы взаимно перпендикулярны.
Скрытый текст

Кстати говоря, понимание 4 измерения как времени, в котором мы можем передвигаться, даёт вполне простое и интуитивное понимание 4-мерного пространства. Точнее, даже не времени, можно просто не пытаться проецировать четырёхмерное пространство на трёхмерное, которое проецируется на двухмерное, а рассматривать трёхмерные проекции четырёхмерного пространства: так вполне можно понять даже какой-нибудь сложный четырёхмерный объект и выше (да хоть двенадцати, если в уме уместить все проекции получится)…
В данном случае у нас кубик Рубика, меняя одну проекцию которого, мы меняем и остальные. Правда, представить алгоритм сборки такого человеку, не знакомому с алгоритмом сборки трёхмерного — очень страшно.
НЛО прилетело и опубликовало эту надпись здесь
Потому что теория относительности.
По времени тоже можно ходить туда-сюда: в любом видеоплеере есть кнопочка «обратная перемотка». А то, что ваше сознание дрейфует в будущее с постоянной скоростью, да ещё и в памяти откладывается только прошлое — так это вопросы к сознанию.
Мне стало любопытно. Добавил опрос.
Вероятно, все-таки речь идёт о представлении двухмерной проекции этих многомерных примитивов. Потому-что сами примитивы можно выразить в виде формулы при любом количестве пространственных измерений, не особо задумываясь о форме.
Это вопрос тренировки. Если некоторое время (несколько месяцев) активно решать задачи, связанные с 4D, то большую часть описанного делать можно. Хотя «не особо задумываясь» они это будут делать только в уже освоенной области, появление любого нового концепта требует дополнительных усилий по погружению.
Но стоит отвлечься на те же несколько месяцев — и эффект пропадает. И приходится начинать всё с начала.
Кстати, вот отличная игрушка, позволяющая освоить 4D «как оно есть»: www.urticator.net/blocks
Обычный тетрис есть, трёхмерный тоже. Возможен-ли четырёхмерный тетрис?
Вот моя неуклюжая поделка 10-летней давности: www.dropbox.com/s/m2bm2agfavochxc/t4.zip?dl=0
Визуализация полностью двумерная (исходно разрабатывалась ещё для MSX), показано дно стакана, вид сверху, в виде цветов клеточек. Сбоку видно, на каком уровне находится фигура. Фигуры сами не падают. Поддерживаются поля 3*3*3*16, 3*3*4*16, 3*4*4*16, 4*4*4*16, и наборы до 7 кубиков.
Игра довольно скучная, в варианте 3^3*16, 5 кубиков мне когда-то хватило терпения снять 7 рядов, в 4^3*16, 7 кубиков — один или два ряда.
Над эстетикой и визуализацией явно надо будет поработать, но в остальном просто замечательно, спасибо!
Ну, сударь, нет предела совершенству.
С визуализацией были явные проблемы в моей прежней работе, когда я делал алгоритм сборки трёхмерного куба. В итоге консольный интерфейс в стиле олимпиады по информатике «на входе дана последовательность ходов перемешивающих куб, на выходе последовательность собирающих ходов» никто не оценил. Я же считал визуализацию трёхмерного куба излишней надстройкой и фокусировал всё внимание на разработке алгоритма. А вот когда я перешёл к работе с 4-мерным кубиком, то мне без визуализации было туго и первым шагом к разработке алгоритма стало «вообразить и изобразить чтобы можно было вообразить», такая вот рекурсия. Кстати, анимация тессеракта из википедии стала фундаментом для воображения движения моего гиперкуба.
а как по мне, так визуализация шикарна :) хоть стало понятно, как оно работает. Я бы поиграл в такую головоломку.
Спасибо. Насчёт поиграть, будет сложновато такой собирать.
Первый вариант — придётся пользоваться моими таблицами ориентирования серого и пурпурного цветов (которые описывают 256 и 65536 комбинаций).
Второй вариант — разработать свою методику сборки этой системы.
Самый ужас состоит в том, что вместо милых взору FRUR'U'F' придётся различать 192 поворота на каждый ход.
Если без алгоритма сборки, то в принципе не мудрено сделать приложение под андроид с визуализацией описанной концепции.
Что-то у них не отображена восьмая гипергрань Kata.
Но такая визуализация имеет преимущество перед моей в том, что они могут отображать 3х3х3х3 головоломку.
Пожелание скорее в плане эстетики, не более того, ваша статья очень хорошая=) Например, оттенки цветов я бы лично просто взял отсюда: flatuicolors.com Это красивее смотрится.
Ваша ссылка не открылась. Эстетичность нашёл тут flatuicolors.co
НЛО прилетело и опубликовало эту надпись здесь
Сейчас поготовлю на ютуб 1080p видео. А там уже любой fair use на любой вкус.
Добавил видео в конце статьи (ютуб сжал в 720p). Если будут проблемы с просмотром, сообщайте в личку. У меня, например, firefox сегодня не отображает ютуб, в хроме и старой опере всё нормально.
А если вы имели ввиду программный скринсейвер постоянно генерирующий новые решения, то такой будет слишком ресурсоёмким. К тому же программа не до конца отлажена и порой банально вываливается с ошибкой.
Я попробую написать скринсейвер как-нибудь на выходных
Но генерировать в скринсейвере было бы круто.
Я попробую написать скринсейвер как-нибудь на выходных
Подумал я над таким предложением и придумал «разумный подход».
Распишу для начала исходные данные:
Входные файлы с таблицами весят «61,485,632 bytes in 3 files», инициализация таблиц для быстрого поиска решений при запуске программы занимает не менее трёх минут на моей машине. Для скринсейвера эти варианты не подходят.
Зато подходит такое решение, я могу запустить программу и нагенерировать несколько десятков, а может и пару сотен scramble-solve комбинаций. Ходы сохраняются в текстовике. Используя заранее расчитанные комбинации можно крутить скринсейверы.
Я так понял, что бОльшую часть занимает таблица для сборки 2х2х2. Так вот, кубик рубика 2х2х2 решается без всяких таблиц при помощи идеи meet in the middle за 0.2 секунды (эту задачу я решал тут acm.mipt.ru/judge/problems.pl?problem=041).

А с остальным вроде же проблем нет? Или я что-то пропустил?
Да, верно, мои дополнительные таблицы занимают всего-то 5%. Ваша идея значительно ускорит инициализацию. Но самый решающий фактор это
программа не до конца отлажена и порой банально вываливается с ошибкой

То есть даже реализовав meet in the middle придётся ещё изрядно поработать над кодом, чтобы банально не ловить crash. Я буду восхищён, если вы реализуете «скринсейвер как-нибудь на выходных».
Вы недооцениваете мою мощь (с)

Хотя, на самом деле не обещаю, что управлюсь за одни выходные, может быть понадобится чуть больше времени. Просто после прочтения статьи захотелось что-нибудь программно повращать, давно я таким не занимался (тем более в 4х-мерном пространстве). Поразвлекаюсь, в общем. Ну и посмотрим что из этого выйдет.
А сможете статью про это написать? Было бы очень интересно почитать.
Если что путное выйдет и получится достаточно материала, не повторяющего данную статью — напишу.
Мне кажется, чтобы понять 4х мерное в контексте 3х-мерного — надо найти принцип, как «понимать» 3х мерное из 2х мерного (при условии, что мы-то знаем как выглядит 3х мерное:)
принцип простой — вы легко попадаете в 2-х мерный круг пальцем в 3-х мерном пространстве.
Точно также можно попасть в 3-х мерный сейф из 4-х мерного
То, что вы сделали, очень круто и красиво. И в плане визуализации, и в плане алгоритма.
Захотелось стать паранидом, чтобы понять священную n-мерность.
Возможно это видео вас утешит=)

Напоминло рассказ «Феномен Архимеда» читать
Была анимешная игрушка с близкими объяснениями) ever17 :)
Хороший вариант. Недостаток по сравнению с версией ( superliminal.com/cube/cube.htm ) — что там мы видим (при маленьком размере стикеров) грани гиперкуба во всём объёме, а у вас есть такая неприятность, как невидимые грани тетраэдров. При сборке будет труднее ориентироваться. Ну, и интересно, как вы обобщите это представление на N^4 и на другие многогранники.
Впрочем, если добавить призмы и «монетки» (для трёхцветных и двухцветных кубиков), то куб N^4 показать будет можно. Надо будет только придумать, как лучше всего задавать повороты граней для команд пользователей.
Для некоторых головоломок такой режим (слипшиеся грани, маленькие кубики) может быть даже удобнее, чем маленькие грани, плавающие в пустоте. Например, одну из своих головоломок мне удобнее было собирать в таком режиме:

(у тетраэдров здесь окрашены вершины, а не грани).
Что отвечать на опрос, не знаю. Понятно не стало, потому что было понятно изначально :)
а у вас есть такая неприятность, как невидимые грани тетраэдров

Это примерно как невидимая задняя и нижняя грани обычного кубика. Боюсь, видеть все грани одновременно избыточно (кстати, ваша картинка прекрастно иллюстрирует избыточность), мозг хорошо кеширует неободимую информацию и для лучшего восприятия совершенно естественно прятать лишнее.
Попробовал собрать кубик 2^4. Получилось довольно медленно — 21 минута. Основной проблемой оказалось то, что у граней нет центров — а я забыл записать, какие грани изначально были противоположными. Поэтому когда понадобилось указать место, куда ставить очередной кубик, принадлежащий почти несобранной грани, мозг озадачился — зацепиться было не за что. В этом смысле кубик даже сложнее, чем 3^4.
Блин, вот я даже зная алгоритм сборки трехмерного куба и предсьавляя четырёхмерное пространство не смогу представить, как перенести алгоритм туда, А тем более спроецировать процесс сборки на плоскость. Никак не могу уложить вголове принцип по которому вращаются грани кубика в четырёхмерно пространстве. Ну точное предствить то могу, не пойму как это отразить на плоскости.
Алгоритм сборки трёхмерного применяется только с момента, когда ориентированы гиперграни Ana-Kata (purple-gray), после чего остаётся только применить сборку 2х2х2 не смешивая внутренней и внешней граней, а вращая только правую/левую, верхнюю/нижнюю, переднюю/заднюю. Как только мы сориентировали gray-purple, задача сведена к трёхмерной.
Взрыв мозга.
Вот тоже сборка куба 2x2x2x2. Правда, это не кубик Рубика, а обычные детские цветные кубики.

Слева — частично собранный куб, справа на столе валяются кубики, которым пока не нашлось места.
Для первого раза задачка даже сложнее, чем кубик Рубика.
А можно подробнее? Очень интересно.
Ссылку на игрушку я уже приводил: www.urticator.net/blocks
Игра типа «песочница». Дело происходит в 4D, от первого лица, сцена изображается способом «трёхмерная сетчатка»: сначала у объектов сцены вычисляются невидимые грани и перекрытия, а потом то, что осталось, выводится в виде рёберной модели. Есть обычный и стерео вывод.
Сначала игроку предлагают пройти лабиринт, прорезанный в кубике 5х5х5х5. Это полезно, чтобы освоиться с управлением и получить представление о способе визуализации. Впрочем, можно этого и не делать.
Автором заготовлено большое количество сцен. Часть из них демонстрирует интересные 4D объекты и их комбинации, часть — показывает поезд, который ездит по разным вариантам железной дороги, а часть — головоломки, где можно двигать блоки для достижения какого-то результата (который не проверяется). Может быть, есть что-нибудь ещё — я с игрой разобрался не до конца.

Собранный кубик:
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории