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

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

Очень доступно было бы все это с возможностью покрутится в риалтайме.
Если знаешь, что поворачиваешь голову направо — меняется это и это, если крутишься по оси Х — другое.

Возможно, небольшое видео объяснило бы всё очень доступно.
В реалтайме — вряд ли, а ролик можно попробовать сделать. Задать движение камеры, и пусть программа штампует картинки. Правда, как их потом объединить в видео, я пока не знаю.
НЛО прилетело и опубликовало эту надпись здесь
Кстати, на чём рейтрейсер писали и как производительность?
Писал на C#, консольное приложение. Производительность зависит от числа объектов. Последняя сцена (52 объекта) — 7 секунд на растр 1000*1000. Та, где кубик на плоскости (124 объекта) — 14 секунд.
А сколько лучей на каждый пиксель стреляете?
Один луч — в точку, которую анализатор углов счел ближайшей. Дальше луч может отражаться. Сглаживания по нескольким лучам не делал.
«Четырехмерное пространство представить себе невозможно. Лично я с трудом представляю себе даже трехмерное пространство!» С.Хокинг
Я уверен, что Хокинг оперирует четырехмерным пространством не хуже, чем большинство людей — двумерным. На самом деле, представить и понять его не трудно, надо только забыть, что наш мир трехмерный :) И выработать правильную терминологию.
Спорный вопрос. Попробуйте представить обычную, квадратную коробку одновременно со всех сторон :) Да и что бы что-то представить надо это 1 раз увидеть.
представляя коробку с тех сторон, с которых её не никто не наблюдает можно достичь просветления
Представить коробку со всех сторон скучно, гораздо интереснее представить себе дом с окнами с каждой стороны, геранью, кошкой, зановесочками и прочими предметами и существами внутри и снаружи дома.

Также интересно представить себе дом в виде тессеракта (правда представить дом удается только в трехмерной проекции, но собственное передвижение по нему представить совсем не сложно. Но мозг отказывается понимать то, что находясь в любой из комнат такого дома, ты одновременно находишься вне него, и… не можешь покинуть его. К тому же любая из стен одновременно — пол и потолок. Зато компактность такого дома поражает — шесть комнат при площади и объеме занимаемого пространства в трехмерном пространстве в разы меньше.

Но признайтесь, было бы любопытно на закате дня выпить по бутылочке Klein’s Beer на крылечке такого дома. Не дом, а мечта Мориса Эшера :)

На каком-таком крылечке, если из дома выйти невозможно? :)
Комнат не 6, а 8. И будут проблемы с ориентацией — если мы не запретим часть проходов между комнатами. А так, нормальный дом. Еще Хайнлайн про такой писал…
А бутылочка Клейна стоит у меня перед монитором. Правда, в виде стеклянной самопересекающейся модели…
>Комнат не 6, а 8.

Да, спросонья ошибся, ригидность мышления: если куб, то шесть.

конечно же восемь.

>На каком-таком крылечке, если из дома выйти невозможно? :)

Это крылечко будет и снаружи и внутри дома :)

>А так, нормальный дом. Еще Хайнлайн про такой писал…

Дом, который построил Тил? Ага. Но у Хайнлайна там представляется, что только одна грань тессеракта прилегала к определенной точке пространства, как результат — дом выглядел как куб в каждой из таких точек. Но если бы тессеракт пересекался бы нашим пространством, то он совсем не обязательно он был бы кубом в нашем пространством. скорее всего проекция сечения была бы очень интересная, например такая как на последнем скрине в статье.
А лучше наоборот, 6 внешних кубиков растянуть (чтобы широкими концами смотрели наружу), потом склеить, а нижним (большим) кубиком закрыть крышку. «На себя» склеивать развертки удобнее, рабочая область оказывается на ближней стороне модели, а не на дальней :)
Понравился и ваш вариант, спасибо :) Кстати, если склеивать большой куб на себя, можно оказаться и внутри, вы поосторожнее там :)

Объясню свой: я представляю себя двумерным существом на плоскости. Поэтому кубические «грани», сворачиваясь с выходом из моей «плоскости» в более многомерное пространство, отдаляются от меня. И визуально уменьшаются в соответствии с законом перспективы. Ну и слово «сворачивать» у меня ассоциируется с уменьшением :)

Когда я это уже закончил рисовать (набросал за полторы минуты авторучкой и отсканировал через фотошоп), то пришло в голову, что едва «грани» выйдут за «плоскость» моего зрения, я их скорее всего просто потеряю из виду. Может быть увижу лишь их отражения и тени на центральном кубе, но и то вряд ли. Просто в руках четырёхмерного существа эти 8 кубиков со звуками «чпок-чпок» для меня станут сначала двумя, а потом одним :)

Возможны и промежуточные стадии (7, 6...), но я попытался ещё представить 4-мерную руку с противостоящими большими пальцами в 2 ряда. С такой лапищей лично я бы шиканул и свернул в 2 приёма :)
В ближайших планах у меня нарисовать 4D-человечка (из шариков и палочек) — как он стоит, сидит, идет, обнимается… У них получается по 3 руки, ноги и глаза. Руку представить не пробовал. Там пальцы можно ставить даже не в 2 ряда, а расположить ежом по полусфере. Штук 10-12 разместить легко.
Щаз кто-нибудь скажет про «это»… Назовём уж словом «любовь» :) С различными спекуляциями на тему гуперорешков. Хотя беременность будет пожалуй поинтереснее… с точки зрения чистой топологии :)
*гипер
Гиперкамасутра…

В топологии беременности не вижу ничего особо интересного, там все то же самое. Может быть, как-то повлияет то, что в 4D нет узлов и две трубки не могут зацепиться друг за друга.
Блин… А пупок?
И что, что пупок? Сферическая дырка. Из которой идет трубка со сферическим же сечением (вроде тех, из которых построен каркас гиперкуба). Внутри ее трубки поменьше (в сечении — маленькие сферы внутри большой), которые, к счастью для плода, не могут перекрутиться.
Со стороны плаценты — то же самое.
Да не, меня насторожило «что в 4D нет узлов». Я не акушер, конечно, но всегда думал, что для того чтобы получился пупок, пуповину надо завязать узлом :)
Три недели назад пришлось принимать роды у собаки. Пуповина сама сжималась, даже перевязывать не пришлось. Но чем ее можно пережать при необходимости, надо подумать. А узлом не завяжешь, это точно.
В детстве была кошка… тоже не припомню, чтобы она что-то завязывала котятам. Ок, убедили, что мы не общаемся с четырёхмерными существами не по той причине, что они вымерли, не научившись завязывать детишкам пупки :)

Однако на модели можно отразить факт невозможности завязывания узла. Можно сворачивать края трубки, пока увеличивающийся в диаметре бублик не зажмёт отверстие. Пупок в виде бублика на модели будет выглядеть интригующе :)
Самое интересное в этом «бублике» — что в качестве оси у него не окружность, а сфера :)
Ну да, гипертор же…

Можно ещё попробовать делать модели полупрозрачными. Эта «плёнка» поможет представить, что некие поверхности находятся снаружи, даже если они со «всех» 3D-сторон закрыты. Фигуры-утопленники будут видны получше.

И не исключено, что помогут проекции на перпендикулярные плоскости, как в черчении, только их будет на одну больше. Для «естественности» их можно делать в виде теней от нескольких разноцветных источников света, с параллельными лучами под 90 градусов друг к другу.

Гляньте тут, кстати, что можно сотворить: http://en.wikipedia.org/wiki/Tesseract. Про видео вам уже подбросили идею, а с полупрозрачностью и разноцветным светом вообще будет роскошно смотреться.

Сглаживания можно добиться малой кровью, если рендерить большие картинки, а потом сжимать. Перед сжатием можно добавить фильтр «размытие». В инете куча советов как это можно сделать скриптами фотошопа или ImageMagick.

Ролик «4D-tango» (втроём может быть, раз уж трёхрукие? :) ), даже без учёта физики гравитации, в невесомости, было бы интересно глянуть. С гравитацией же, для упрощения, можно использовать «лёд», т.е. забить на правдоподобное трение. Вращение в прыжке (4D-двойной-тулуп) с выворачиванием наизнанку и взаимопроникновением нескольких тел (с точки зрения 3D наблюдателя) взорвёт 3D мозг :)

Если когда-нибудь начнёте такой проект, могу помочь с дизайном — я немного рисую, да и с 3D баловался. Думаю, композитора здесь тоже можно найти. Новый хит написать вряд ли получится, но обработку нескольких классических тем можно создать для музыкального сопровождения. Старое танго на электрогитаре — и Сантана отдыхает :)
Гиперторов есть два — в одном окружность намотана на сферу (сферический бублик), в другом — наоборот (сферическая трубка, замкнутая в окружность). А еще есть такой замечательный объект, как плоский тор — произведение двух биперпендикулярных окружностей (а произведние двух кругов — бицилиндр — это что-то вообще непередаваемое).

Пленки хороши для однородно раскрашенных матовых объектов. В сущности, они передают все те же силуэты, что и в идее двойной проекции — только в пикселе смешиваются самые левые точки всех попавших в него объектов. Проблему с тенями/отражениями это не решит.

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

Для трехруких существ подошел бы танец вчетвером — они могут встать в вершинах тетраэдра, попарно взявшись за руки. А может, и нет — тогда бы люди танцевали втроем… Заставить 4D-человека ходить — уже было бы интересно. Или сидеть, сплетя ноги в косичку…
Я поначалу представил себе, конечно, простую замкнутую сферотрубочку. Сферический бублик воспринял с трудом, но получилось. А потом фантазия пошла дальше — я замкнул трубу из 3D-тора в сечении :)

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

Тени от разных источников — это именно тени. Только не одна тень, а несколько, от каждого источника своя. При наложении получаются иногда интересные эффекты типа муара. Можно легко увидеть на улице, если встать между двух фонарей, или дома, включив две лампы в разных углах. «Игры теней» — сам по себе интересный сюжет :)

Вообще-то да, простым умножением увлекаться не стоит. Например, в нашем 2D зрении третий глаз тоже не помешал бы. Из-за его отсутствия мы испытываем трудности в определении расстояния до параллельных линии глаз проводов (у меня такие прям перед окном натянуты). Надо наклонять голову. Природа тут пошла по пути разумного минимума. Так что не удивлюсь, если у 4D человека всего два глаза, просто он башкой чаще крутит в нескольких плоскостях, или покачивает глазами на рожках :)
Да, верно. Есть третий тип тора — множество точек, лежащих на расстоянии r от тора из 3D. Или можно рассмотреть множество точек на расстоянии r от плоского тора. Это будут немного разные (хотя и похожие) фигуры. Если кто-то сможет объяснить, чем они различаются — значит, он в самом деле представляет себе четырехмерное пространство :)
Это невозможно «увидеть», наш мир — трёхмерный.
Ой ли :). То что наше сознание ощущает только 3 измерения, совсем не говорит о том, что колово измерений=3.

К.О. напоминает хотя бы о времени.
Ээээм… в шесть-двадцать три я имел ввиду, что мы зажаты рамками трёхмерного быта. То есть не имеет возможности нигде пронаблюдать чётырёхмерный объект не в виде трехмерных проекций.
а как же остальные 8?
А они маленькие и замкнутые, их не видно. Но компьютеру это все равно, ему реальный мир не нужен. Он сам себе Вселенная :)
Мы представляем себе очень много вещей и понятий, которых никогда не видели. И четырехмерное пространство в этом смысле не сложнее группы вращений SO3, генома животных или пантеона древнегреческих богов со всеми их аттрибутами и взаимоотношениями.
Коробку представить несложно. Когда мы разрабатываем алгоритмы для кубика Рубика, мы его представляем одновременно со всех сторон, не так ли?
Про квантовую механику говорят: «Ее сначала не понимали, а потом привыкли».
Чтобы использовать некий инструмент, его необязательно прочувствовать всеми фибрами своего тела.
По большому счету, комплексные числа тоже не понимают. Свойства их хорошо известны, математик оперирует комплексными числами и функциями, не задумываясь. Но почему они вдруг оказались таким замечательным инстументом, почему их уножение коммутативно, а конформные отображения так разнообразны — вопрос. И почему ими так удобно описывать волновые процессы? Инструмент отличный, полностью понятные и работает.
То же и с квантовой механикой. Понять-то ее можно, во всем многообразии. Непонятным остается, почему она вдруг оказалась таким подходящим инструментом для описания материального мира (в своих масштабах). Но если от реальности отвечься, и сказать, что КМ описывает некий идеальный мир, то представить его вполне реально. В том числе, реализуемый на КМ мультиверс с возможным слиянием Вселенных :)
Если уж говорить о комплексных числах, то в контексте данного топика трудно не упомянуть гиперкомплексные — кватернионы:
Таблица кватернионов отражает замкнутость «силовых линий» собственных пространств («Последняя замыкается на Первую»). Из рисунка видно, что объединение двух триангуляров порождает звездный тетраэдр (или куб). А это и есть корпускуляр. Из этого рисунка видно, что два триангуляра образуют звездный тетраэдр. А если в этой фигуре соединить вершины, то мы получим куб (с другой последовательностью обхода вершин). Таким образом, из вышеизложенного возникает внутреннее убеждение в том, что собственные пространства и их формы (триангуляры и корпускуляры) составляют фундамент мироздания, а кватернионы отражают элементы природной матемтатики.

Не знаю, как насчёт мироздания, а в 3D графике кватернионы вовсю используются.

Да, в 3D им хорошо — группа единичных кватернионов по умножению соответствует поворотам пространства. Но потом все равно получается, что ортогональные матрицы 3х3 удобнее. А вот в 4D кватернионы не помогут. И преобразование трехмерного пространства Лобачевского через комплексные функции легко не выражается (хотя группы у них изоморфны). Так что в малых размерностях эти инструменты удобны, а в больших приходится сдаваться на милость матричной алгебры.
Хорошо, хоть скалярное произведение там работает — а то был бы вообще кошмар.
Одно дело оперировать математическими выражениями n-мерных пространств, другое — представить себе как это выглядит. Это ооооочень разные вещи!
Согласен. Но «выражения» и свойства становятся для мозга устойчивыми объектами, и он получает способность более или менее свободно ими оперировать.
Вероятно, все дело в термине «выглядит». Он ассоциируется с двумерным зрением, а это далеко не единственный способ представить себе объект или сцену. Мозг — достаточно мощная и гибкая штука, чтобы не опираться на подсказки от «органов чувств».
В каком виде программист представляет себе большую программу, особенно в процессе ее выполнения? ;D
В виде многорукого слепого бога Шивы, скользящего руками-регистрами по табличкам из сырой глины. Его острые когти оставляют следы единицы, а мягкие подушечки — нули. Едва касаясь, проводит Шива многопалой рукой по таблице, считывает ямки, втягивая и выпуская когти. Потом сводит руки вместе, и напевая мантру, начинает считать, плетя пальцами сложные узоры и пощёлкивая костяшками…

Одной рукой он придерживает вертикальную стопку малюсеньких табличек — стек. Некоторые пачки таблиц кладутся поближе, до них можно дотянуться не вставая — кеш. За другими приходится тянуться, а то и побегать. Иногда приходится просто сидеть и ждать, пока подвезут на тележке. Впрочем, в современных процах боги играют командой, жонглируя таблицами в куче… И каждый наш миг для них вечность.

Это на самом низком уровне. А так предпочитаю UML диаграммы классов, состояний, последовательностей и т.п. :)
а зачем? Проблема представления в том, что, почему-то, по-умолчанию считается, что измерения равнозначны. А вы представьте себе, что реальный мир состоит из 3-х более-менее равнозначных измерений и еще 8-ми с размерами порядка планковской длины. Т.е. они есть, но мы их просто не ощущаем, так как их наличие не оказывает на наше существование никаких заметных действий…
Так в пространстве, которое я пытаюсь рисовать, есть как раз 4 равнозначных пространственных измерения. В реальный мир они, конечно, не вкладываются, но в компьютер или мозг — запросто, лишь бы памяти хватило.
Вот до чего дожили, наблюдаем двумерные скрины трехмерных проекций четырехмерных объектов…
И описываем это одномерной строкой из слов.
За что вы так с моим мозгом? :(
А у меня вот мысли нехорошие бродят, на тему создания четырехмерной стрелялки (:
А вообще забавно, неправильно угол выбрал и застрелился со спины %)
Со спины вряд ли. Если только стрелялка не на сфере. Но посмотрим. Пока я думаю всего лишь о лабиринте — который будет показываться в трехмерных сечениях. Это не считая кубикрубиков, которых энтузиасты написали уже немало.
НЛО прилетело и опубликовало эту надпись здесь
Так этим занимаются многие, и гораздо более профессионально.
Вот отличный сайт, посвященный четырехмерному пространству, где доступно объясняется, почему объекты в нём так странно изменяются (на английском):
eusebeia.dyndns.org/4d/vis/vis.html

И так как наш мозг спокойно дорисовывает трехмерную картинку из двухмерной проекции, то хорошая возможность дорисовать четырехмерную картинку из трехмерной проекции предоставится с изобретением голографических дисплеев.
Интересный сайт, спасибо. Про «курносый 24-гранник» я раньше не слышал. Может быть, найдется что-нибудь еще интересное.
Трехмерную картинку мозг достраивает, опираясь на привычные образы. Точно так же, если ему предложить привычное 2D-изображение 4D-объекта, он его узнает и увидит.
Чтобы привыкнуть к незнакомому 4D-объекту, нужна всего лишь возможность его покрутить в разных направлениях. То, что точка на экране находится одновременно на двух разных «расстояниях» (при вращении x-z и x-w) поначалу смущает, но потом начинаешь принимать это, как должное. Правда, добиться предсказуемого поведения развертки 5d-симплекса мне пока не удалось, но я не очень-то и старался :) — еще успею.
Спасибо за ссылку. Зачитался/загляделся/задумался )
Есть другая идея 4D: одну из осей спроецировать на «время». То есть будет меняющаяся 3D сцена. Для возможности полного просмотра, камера должна перемещается внутри текущего 3D-среза сцены, плюс дополнительный контрол, который перемещает «время» вперед-назад (напрмер колесо мыши). Всегда интересовал вопрос: если долго «бегать» по такой сцене, возникнет ли когда-нибудь полное 4D-восприятие?
Возникнет. Только надо не просто «бегать», а решать различные задачи, по возможности, не очень тривиальные. Кубик Рубика здесь — первый шаг. Когда к нему привыкнешь, поймешь, что на самом деле это трехмерная головоломка, но в процессе придется разобраться с его «истинным» 4D поведением.
Вот оно что, зато теперь понятно почему вампиры не отражаются в зеркале и исчезают корабли в бермудском треугольнике…
Отлично! Не заметил такого… Мы видим ближайшую к реальности точку. Поэтому вампир виден (ближе ничего нет — только воздух), а его отражение — нет (мы видим зеркало, а оно с реальностью пересекается, а в точке пересечения вампира нет). И тени они не отбрасывают по той же причине.
Вот только дотронуться до такого вампира нельзя, он в параллельном мире. Хотя если силы взаимодействия достаточно мощные, а расстояние мало… Может все сложиться :)
Немножко повернули на 90 градусов и сфера превратилась в сферического коня ))

Думаю видео всех описанных перемещений по сцене, у зрителей бы вызвало или заворот мозга или тошноту в лучшем случае.
Надо будет проверить )))
Идея с ближайшей точкой к камере интересная. А вот это «Такую ближайшую точку (когда границы угла вычислены) можно быстро найти для любого базового объекта, после чего трассировку можно выполнять только для нее — получается одна трассировка на пиксель» я не понял.
Идея в том, что для пикселя (точки, а не квадратика) я вычисляю область его обзора — это 2D-угол (два вектора и вершина). Передаю его объекту (гиперсфере, боксу, трубке). Он ищет линию пересечения себя с плоскостью, находит ближайшую к камере точку, и отдает ее (и расстояние до нее) внешней программе. Никакие другие точки этого объекта на содержимое пикселя уже не влияют (отражения не рассматриваем), и трассировку луча надо проводить только в сторону этой ближайшей точки.
Теперь понятно. Хорошая идея.
У меня на 2-м курсе была идея сделать игру с полётом космического корабля в 4D, для перемещения в 4-м измерении должны использоваться дополнительные клавиши "+" (вверх?) и "-" (вниз?), при этом 3D изображение на экране будет меняться. Для начала хотя бы простой вариант с делать типа «коридор с препятствиями», то есть пустой 4D цилиндр, в котором надо пролететь из точки A в точку B, а по пространству цилиндра раскиданы 4D-сферы и 4D-кубики.
Такая мысль тоже была. 4- или 5- мерные гонки (без врагов, на время). Есть тоннель (может поворачивать в 8 сторон), белым цветом показывается трехмерное сечение (сужающаяся трубка), цветным — основной туннель (цвет указывает, куда повернули). Можно добавить препятствия, можно не добавлять. С препятствием будут сложности: если про туннель надо понять, с какой стороны он есть (и куда сворачивать), а про препятствие — с какой стороны его нет (и где облетать). А это цветом не отобразишь.
Дополнительные повороты — правой кнопкой мышки.
Я скажу просто спосибо. Продолжай. Думаю многие с интересом будут ждать и наблюдать и… Может стоит сделать блог по 4d?
По 4d — вряд ли. Но продолжать, наверное, лучше в «Анимации и 3D-графике». Или, все-таки, здесь? Что более правильно?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации