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

Например, грани вот этого кубика шестимерны (показаны 7 граней и 5-мерные сечения еще шести):

Если концепцию четырёх- и более мерного пространства у меня ещё получается понять через аналогию 1D->2D->3D->4D, то с многомерным временем никак, потому что аналогий нет.
Чтобы представить многомерное время, не покидая пределов уютного 3D-мирка, представьте плоскость, каждой точке которой соответствует куб, трехмерный срез. Для простоты можно даже представить, что плоскость замощена этими кубами стык в стык — или что она гладкая, но для любой точки можно получить «всплывающую подсказку», которая «призумит» соответствующий куб. Время, когда оно линейное (в 3D+1T варианте), это просто линия, проведенная по этой плоскости. Чтобы представить не все состояния сразу, а увидеть изменения, то можно ввести некоторый «курсор» — точку на плоскости, имеющую уравнение движения. Точка движется вдоль заданной линии, таким образом, в кубе «всплывающей подсказки» идет время, происходят изменения.
В пятимерном же варианте с двухмерным временем (3D+2T) «курсор» может двигаться не только вдоль некоторой линии, а вообще куда угодно в пределах плоскости — в том числе выписывать круги, ромашки, периодически пересекать свою траекторию и т.д.
Для трехмерного времени и трехмерного пространства, аналогично, представляем трехмерное «временнОе» пространство, каждой точке которого соответствует трехмерный куб, и у курсора текущего времени теперь три степени свободы.
В пятимерном же варианте с двухмерным временем (3D+2T) «курсор» может двигаться не только вдоль некоторой линии, а вообще куда угодно в пределах плоскости — в том числе выписывать круги, ромашки, периодически пересекать свою траекторию и т.д.
Для трехмерного времени и трехмерного пространства, аналогично, представляем трехмерное «временнОе» пространство, каждой точке которого соответствует трехмерный куб, и у курсора текущего времени теперь три степени свободы.
Есть вот такое неплохое изображение с визуализацией. При некоторой фантазии можно заметить, что кубы взаимно перпендикулярны.
Скрытый текст

Кстати говоря, понимание 4 измерения как времени, в котором мы можем передвигаться, даёт вполне простое и интуитивное понимание 4-мерного пространства. Точнее, даже не времени, можно просто не пытаться проецировать четырёхмерное пространство на трёхмерное, которое проецируется на двухмерное, а рассматривать трёхмерные проекции четырёхмерного пространства: так вполне можно понять даже какой-нибудь сложный четырёхмерный объект и выше (да хоть двенадцати, если в уме уместить все проекции получится)…
В данном случае у нас кубик Рубика, меняя одну проекцию которого, мы меняем и остальные. Правда, представить алгоритм сборки такого человеку, не знакомому с алгоритмом сборки трёхмерного — очень страшно.
В данном случае у нас кубик Рубика, меняя одну проекцию которого, мы меняем и остальные. Правда, представить алгоритм сборки такого человеку, не знакомому с алгоритмом сборки трёхмерного — очень страшно.
Мне стало любопытно. Добавил опрос.
Вероятно, все-таки речь идёт о представлении двухмерной проекции этих многомерных примитивов. Потому-что сами примитивы можно выразить в виде формулы при любом количестве пространственных измерений, не особо задумываясь о форме.
Это вопрос тренировки. Если некоторое время (несколько месяцев) активно решать задачи, связанные с 4D, то большую часть описанного делать можно. Хотя «не особо задумываясь» они это будут делать только в уже освоенной области, появление любого нового концепта требует дополнительных усилий по погружению.
Но стоит отвлечься на те же несколько месяцев — и эффект пропадает. И приходится начинать всё с начала.
Кстати, вот отличная игрушка, позволяющая освоить 4D «как оно есть»: www.urticator.net/blocks
Но стоит отвлечься на те же несколько месяцев — и эффект пропадает. И приходится начинать всё с начала.
Кстати, вот отличная игрушка, позволяющая освоить 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 кубиков — один или два ряда.
Визуализация полностью двумерная (исходно разрабатывалась ещё для 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-мерным кубиком, то мне без визуализации было туго и первым шагом к разработке алгоритма стало «вообразить и изобразить чтобы можно было вообразить», такая вот рекурсия. Кстати, анимация тессеракта из википедии стала фундаментом для воображения движения моего гиперкуба.
С визуализацией были явные проблемы в моей прежней работе, когда я делал алгоритм сборки трёхмерного куба. В итоге консольный интерфейс в стиле олимпиады по информатике «на входе дана последовательность ходов перемешивающих куб, на выходе последовательность собирающих ходов» никто не оценил. Я же считал визуализацию трёхмерного куба излишней надстройкой и фокусировал всё внимание на разработке алгоритма. А вот когда я перешёл к работе с 4-мерным кубиком, то мне без визуализации было туго и первым шагом к разработке алгоритма стало «вообразить и изобразить чтобы можно было вообразить», такая вот рекурсия. Кстати, анимация тессеракта из википедии стала фундаментом для воображения движения моего гиперкуба.
а как по мне, так визуализация шикарна :) хоть стало понятно, как оно работает. Я бы поиграл в такую головоломку.
Спасибо. Насчёт поиграть, будет сложновато такой собирать.
Первый вариант — придётся пользоваться моими таблицами ориентирования серого и пурпурного цветов (которые описывают 256 и 65536 комбинаций).
Второй вариант — разработать свою методику сборки этой системы.
Самый ужас состоит в том, что вместо милых взору FRUR'U'F' придётся различать 192 поворота на каждый ход.
Если без алгоритма сборки, то в принципе не мудрено сделать приложение под андроид с визуализацией описанной концепции.
Первый вариант — придётся пользоваться моими таблицами ориентирования серого и пурпурного цветов (которые описывают 256 и 65536 комбинаций).
Второй вариант — разработать свою методику сборки этой системы.
Самый ужас состоит в том, что вместо милых взору FRUR'U'F' придётся различать 192 поворота на каждый ход.
Если без алгоритма сборки, то в принципе не мудрено сделать приложение под андроид с визуализацией описанной концепции.
Такая возможность есть=)
play.google.com/store/apps/details?id=com.superliminal.magiccube4d
play.google.com/store/apps/details?id=com.superliminal.magiccube4d
Пожелание скорее в плане эстетики, не более того, ваша статья очень хорошая=) Например, оттенки цветов я бы лично просто взял отсюда: flatuicolors.com Это красивее смотрится.
Ваша ссылка не открылась. Эстетичность нашёл тут flatuicolors.co
Сейчас поготовлю на ютуб 1080p видео. А там уже любой fair use на любой вкус.
А если вы имели ввиду программный скринсейвер постоянно генерирующий новые решения, то такой будет слишком ресурсоёмким. К тому же программа не до конца отлажена и порой банально вываливается с ошибкой.
Я попробую написать скринсейвер как-нибудь на выходных
Но генерировать в скринсейвере было бы круто.
Я попробую написать скринсейвер как-нибудь на выходныхПодумал я над таким предложением и придумал «разумный подход».
Распишу для начала исходные данные:
Входные файлы с таблицами весят «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. Я буду восхищён, если вы реализуете «скринсейвер как-нибудь на выходных».
программа не до конца отлажена и порой банально вываливается с ошибкой
То есть даже реализовав meet in the middle придётся ещё изрядно поработать над кодом, чтобы банально не ловить crash. Я буду восхищён, если вы реализуете «скринсейвер как-нибудь на выходных».
Вы недооцениваете мою мощь (с)
Хотя, на самом деле не обещаю, что управлюсь за одни выходные, может быть понадобится чуть больше времени. Просто после прочтения статьи захотелось что-нибудь программно повращать, давно я таким не занимался (тем более в 4х-мерном пространстве). Поразвлекаюсь, в общем. Ну и посмотрим что из этого выйдет.
Хотя, на самом деле не обещаю, что управлюсь за одни выходные, может быть понадобится чуть больше времени. Просто после прочтения статьи захотелось что-нибудь программно повращать, давно я таким не занимался (тем более в 4х-мерном пространстве). Поразвлекаюсь, в общем. Ну и посмотрим что из этого выйдет.
Мне кажется, чтобы понять 4х мерное в контексте 3х-мерного — надо найти принцип, как «понимать» 3х мерное из 2х мерного (при условии, что мы-то знаем как выглядит 3х мерное:)
То, что вы сделали, очень круто и красиво. И в плане визуализации, и в плане алгоритма.
Захотелось стать паранидом, чтобы понять священную n-мерность.
Возможно это видео вас утешит=)
Напоминло рассказ «Феномен Архимеда» читать
Хороший вариант. Недостаток по сравнению с версией ( superliminal.com/cube/cube.htm ) — что там мы видим (при маленьком размере стикеров) грани гиперкуба во всём объёме, а у вас есть такая неприятность, как невидимые грани тетраэдров. При сборке будет труднее ориентироваться. Ну, и интересно, как вы обобщите это представление на N^4 и на другие многогранники.
Впрочем, если добавить призмы и «монетки» (для трёхцветных и двухцветных кубиков), то куб N^4 показать будет можно. Надо будет только придумать, как лучше всего задавать повороты граней для команд пользователей.
Для некоторых головоломок такой режим (слипшиеся грани, маленькие кубики) может быть даже удобнее, чем маленькие грани, плавающие в пустоте. Например, одну из своих головоломок мне удобнее было собирать в таком режиме:

(у тетраэдров здесь окрашены вершины, а не грани).
Что отвечать на опрос, не знаю. Понятно не стало, потому что было понятно изначально :)
Впрочем, если добавить призмы и «монетки» (для трёхцветных и двухцветных кубиков), то куб N^4 показать будет можно. Надо будет только придумать, как лучше всего задавать повороты граней для команд пользователей.
Для некоторых головоломок такой режим (слипшиеся грани, маленькие кубики) может быть даже удобнее, чем маленькие грани, плавающие в пустоте. Например, одну из своих головоломок мне удобнее было собирать в таком режиме:

(у тетраэдров здесь окрашены вершины, а не грани).
Что отвечать на опрос, не знаю. Понятно не стало, потому что было понятно изначально :)
а у вас есть такая неприятность, как невидимые грани тетраэдров
Это примерно как невидимая задняя и нижняя грани обычного кубика. Боюсь, видеть все грани одновременно избыточно (кстати, ваша картинка прекрастно иллюстрирует избыточность), мозг хорошо кеширует неободимую информацию и для лучшего восприятия совершенно естественно прятать лишнее.
Кстати, кубик 3*3*3*3 собрали уже 214 человек.
Попробовал собрать кубик 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 объекты и их комбинации, часть — показывает поезд, который ездит по разным вариантам железной дороги, а часть — головоломки, где можно двигать блоки для достижения какого-то результата (который не проверяется). Может быть, есть что-нибудь ещё — я с игрой разобрался не до конца.
Собранный кубик:

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

Sign up to leave a comment.
Сборка 4-мерного кубика Рубика