Comments 64
Я обычно не жалуюсь на отсутствие кармы, но в такие моменты мне действительно жаль, что её не хватает, чтобы поставить «плюс». (и нет, я её не выпрашиваю, как ты подумал, %username%)
Поделился. Я добрый :)
Ого, как-то неожиданно накинули столько кармы! Спасибо! :)
Эх, восстановить бы видео из статьи…
К сожалению, автора больше нет в живых, а на его youtube-канале походу этих видео тоже нет. Только про игру жизнь в 3D: https://www.youtube.com/user/astr0073/videos
какие жуткие необычные структуры!!! =)
Теперь наступила очередь Minecraft.
Чуть раньше Каркассон заказывали. А для Minecraft понадобится трёхмерное пространство Лобачевского, с решеткой {4,5,3} (в каждой вершине сходится 20 кубиков). Честно говоря, страшная штука.
У меня была фантазия о майнкрафте на торе или на бутылке клейна — уйти в одну сторону и прийти с противоположной стороны, в случае бутылки — отзеркаленным. Еще можно замкнуть верх и низ. Или, опять же, замкнуть со сменой ориентации, тогда совсем весело станет.
Или еще поиграть с нехаусдорфовостью. Дверь в чистом поле, заходишь — оказываешься в другом месте. Или обходить дерево и каждый раз видеть разный ландшафт.
Я как раз в затяжном процессе создания подобного клона на D. Из функций — пользовательские внутриигровые прозрачные безрамочные порталы произвольной формы, управляемые левитирующие замки/корабли/произвольные области пространства, честное освещение очень сильно оптимизированным path tracing, HDR, процедурные текстуры неограниченного разрешения, призмы, линзы и зеркала произвольных форм, радиусов и степеней кривизны, антисвет и октарин, и миры с альтернативными метриками.
В частности, например, мир на внутренней поверхности цилиндра сродни «Раме» из романа Кларка, с солнцами в виде очень ярких блоков, находящихся на поверхности «земли». К сожалению, в уходу сохранению кубической сетки, пришлось сделать так, что цилиндр на самом деле формируется из свенутого пласта «плоского» пространства, таким образом, что на каждом уровне высоты количество блоков, требуемое для того, чтобы выложить «кольцо вокруг мира», одинаковое. Т.е. плотность блоков не меняется с высотой, искажается лишь их форма.
В частности, например, мир на внутренней поверхности цилиндра сродни «Раме» из романа Кларка, с солнцами в виде очень ярких блоков, находящихся на поверхности «земли». К сожалению, в уходу сохранению кубической сетки, пришлось сделать так, что цилиндр на самом деле формируется из свенутого пласта «плоского» пространства, таким образом, что на каждом уровне высоты количество блоков, требуемое для того, чтобы выложить «кольцо вокруг мира», одинаковое. Т.е. плотность блоков не меняется с высотой, искажается лишь их форма.
Не совсем это, я имел ввиду, чтобы в каждом месте мой тор был плоским. Я хочу просто взять квадрат блоков 100х100 чанков и ассоциировать противоположные стороны — «склеить» одну к другой. Игрок продолжает жить в плоском мире, но когда он уходит в одну сторону, он возвращается откуда-нибудь с другой стороны. В случае с тором — с противоположной. В случае бутылки клейна он возвращается с противоположной стороны, отраженный зеркально (с его точки зрения, он вернется в зеркально отраженный мир). Интересно само изменение метрики — оно повлияет на игровой процесс, а в случае каких-то агрессивных мультиплеерных забав добавляет тактических возможностей и уловок. Если похожим образом ассоциировать («склеить») верхнюю и нижнюю границу мира, то геймплей может поменяться гораздо сильнее.
На самом деле, кроме плюшек к геймплею, интересно само ощущение нахождения в таком мире. Утратится ли ощущение свободы? Как изменится пространственное мышление? Что еще будет чувствовать человек в таком мире?
На самом деле, кроме плюшек к геймплею, интересно само ощущение нахождения в таком мире. Утратится ли ощущение свободы? Как изменится пространственное мышление? Что еще будет чувствовать человек в таком мире?
Да, и помимо этого появляется интерейснейшая задача создания генератора ландшафта на такой зацикленной области.
Можно попробовать, если я все правильно понимаю, то описанная Вами идея реализуется при помощи одних только Огромных Порталов От Земли До Неба (tm). С генерацией карты пока что беда.
А где можно последить за разработкой? Или даже потестировать? :)
Еще нигде, но я планирую статью на хабр с описанием, как я до такой жизни докатился, в скором времени — когда возьму отпуск на работе. Сейчас, к сожалению, разработку получается вести по несколько часов через день уже ночью, а это не способствует быстрому продвижению, к тому же помимо непосредственно игры, из-за выбора языка и особенностей архитектуры есть множество побочных задач, которые оттягивают силы от непосредственной реализации.
Тут вопрос — остаётся ли локальная геометрия евклидовой. Чтобы не слишком пугать пользователей, то лучше оставить, и тогда возникнет выбор: либо не вводить особых точек, и тогда выбор поля — либо тор, либо бутылка Клейна. Склеить плоскость, чтобы перепутались x и y, не получится, хотя повернуть плоскость при склейке по вертикали возможно. Жалко, что не получится склеить со сменой масштаба :(
А если разрешить особые точки (непробиваемые колонны до неба, обход вокруг которых замыкается не за 360 гр, а когда угодно, то получаете полную свободу. Проще всего сделать многолистный мир: при обходе колонны по часовой стрелке переходите на уровень выше, а против часовой — на уровень ниже (уровни, естественно, зациклены — ведь, как известно, мы все живём на седьмом уровне сумрака :) ). Другой вариант — любой горизонтальный отрезок между колоннами является порталом в совсем другую клетку того же уровня. Например, мир состоит из 997 больших клеток, при проходе на восток или запад попадаете в клетку n+1 или n-1 соответственно, при проходе на север — в клетку 2*n, а при проходе на юг — в n/2. Это не очень хороший вариант (клетки не эквивалентны), но это первое, что пришло в голову.
А если разрешить особые точки (непробиваемые колонны до неба, обход вокруг которых замыкается не за 360 гр, а когда угодно, то получаете полную свободу. Проще всего сделать многолистный мир: при обходе колонны по часовой стрелке переходите на уровень выше, а против часовой — на уровень ниже (уровни, естественно, зациклены — ведь, как известно, мы все живём на седьмом уровне сумрака :) ). Другой вариант — любой горизонтальный отрезок между колоннами является порталом в совсем другую клетку того же уровня. Например, мир состоит из 997 больших клеток, при проходе на восток или запад попадаете в клетку n+1 или n-1 соответственно, при проходе на север — в клетку 2*n, а при проходе на юг — в n/2. Это не очень хороший вариант (клетки не эквивалентны), но это первое, что пришло в голову.
Я сначала подумал о том, чтобы реализовать классическую «Жизнь» на редстоуне в майнкрафте. Идея то классная!
Интересно. А что насчет муравья Лэнгтона на такой плоскости?
Попробую. Придётся учитывать ориентацию при переходе… противно, но полезно.
Прогулка муравья. Записано 1200 шагов, после чего я долго пытался понять, чего же он наследил. Понять не удалось.
При записи «прогулки» муравей всегда в центре картинки, но двигаться может в любую сторону — ориентацию всего поля я стараюсь не менять, ха-ха…
При записи «прогулки» муравей всегда в центре картинки, но двигаться может в любую сторону — ориентацию всего поля я стараюсь не менять, ха-ха…
Здорово :)
Хорошая, годная статья. Расширяет сознание. В избранное.
Даешь больше годных математических статей!
Спасибо! Встречаясь впервые с геометрией Лобачевского, кажется, что это штука слишком абстрактна и далека от жизни. Потом оказывается, что она находит применение и в физике, и в астрономии, органично вписываясь в модели и уравнения. Далее выясняется, что ее удобно применять для создания карты интернета. И вот, уже, с помощью геометрии Лобачевского реализуется сама Жизнь. Потрясающе!
Если мне память не изменяет, из неевклидовых геометрий ту же геометрию Римана используют в космонавтике и навигации. Хотя, на первый взгляд, тоже весьма абстрактная штука.
Замечательно. Еще пока учился, не всегда понимал, зачем нам вдалбливают всё вот это.
Теперь хотя бы применение в игре. Ну, и то, что теперь это не придётся сдавать из-под палки тоже играет свою роль :)
А откуда взялась идея? Я сомневаюсь, что человек может просто сидеть-сидеть, а потом вдруг внезапно сесть и начать писать геометрическую игру в неевклидовом пространстве…
Теперь хотя бы применение в игре. Ну, и то, что теперь это не придётся сдавать из-под палки тоже играет свою роль :)
А откуда взялась идея? Я сомневаюсь, что человек может просто сидеть-сидеть, а потом вдруг внезапно сесть и начать писать геометрическую игру в неевклидовом пространстве…
Настоящая игра (головоломка) в неевклидовом 3D пространстве у меня была ещё несколько лет назад: astr73.narod.ru/M3dHT633/M3dHT633.html. А откуда взялась идея… уже не помню. Но когда мы впервые увидели лабиринтообразные игры на Ямахе (особенно Black Onyx — там был 8-этажный лабиринт с этажами в виде тора 16*16), то возник вопрос — а если вместо квадратной решётки взять что-то другое? Но в дело так и не пошло, не удалось придумать сценарий.
С головоломками стало несколько легче, там всё понятно — как делать и к чему идти. Кстати, есть целый большой проект головоломок на неевклидовой плоскости: www.gravitation3d.com/magictile/. Там уже более 600 вариантов «кубика рубика», и какой-то энтузиаст из Германии решил больше трети из них
С головоломками стало несколько легче, там всё понятно — как делать и к чему идти. Кстати, есть целый большой проект головоломок на неевклидовой плоскости: www.gravitation3d.com/magictile/. Там уже более 600 вариантов «кубика рубика», и какой-то энтузиаст из Германии решил больше трети из них
А нельзя ли не менять положение камеры, а просто увеличивать разрешение и вырезать интересующую область на краю? То есть зафиксировать положение центральной клетки, а для того, чтобы рассмотреть, что там происходит на горизонте, просто увеличивать интересующее место.
Мне кажется, что так было бы проще наблюдать за поведением колоний.
Мне кажется, что так было бы проще наблюдать за поведением колоний.
Будет только хуже. Изображение решетки на диске Пуанкаре полностью фрактально — любой фрагмент у края диска, под каким увеличением его не рассматривай, будет выглядеть, как кусочек модели верхней полуплоскости. Число различимых клеток не будет зависеть от величины зума, а большая часть полезной площади будет съедена большими клетками вдали от края. Так что выигрыша по сравнению со сдвигом камеры в сторону края диска мы не получим. Разве что можно будет использовать вытянутое по горизонтали окно… Тогда уж лучше сразу работать в модели верхней полуплоскости.
Чтобы увидеть больше клеток, я слегка сжульничал — сжал центр диска и растянул его у краёв по формуле r1=1-(1-r)^(2/3) (r — расстояние до центра). В итоге четырёхугольники у края превратились в черточки и их хотя бы стало видно. Без этого растяжения они были бы точками.
Чтобы увидеть больше клеток, я слегка сжульничал — сжал центр диска и растянул его у краёв по формуле r1=1-(1-r)^(2/3) (r — расстояние до центра). В итоге четырёхугольники у края превратились в черточки и их хотя бы стало видно. Без этого растяжения они были бы точками.
Зато в таком случае можно вообще забыть про неевклидову геометрию и всю ту математику, о которой статья. Мы просто рассматриваем некоторую (статичную) нарисованную на плоскости сетку. Эта сетка состоит из разных по размеру и форме четырёхугольных ячеек, и её происхождение не имеет никакого значения для реализации игры. Точно также можно рассматривать совершенно любые другие паутины на плоскости, ведь так?
Проблема в навигации. Сконструировать сетку для визуализации и поле, разные места которого можно рассматривать через эту сетку (причём, корректно и без противоречий) не просто. Кроме того, может возникнуть желание, чтобы поле было однородно (в любой вершине сходится именно 5 четырёхугольников, а не 4 и не 6) — и без математики такую сетку уже не построить. А замкнуть её в поверхность без края и без особых точек ещё сложнее.
Если вам не нужна такая однородность, то можете взять любую паутину. Там потребуется математика плоских графов, чтобы выделить на этой сетке вершины и области, и опять же, не было противоречий. В конечном итоге, всё пишется «на коленке», и если повезёт, то оно будет самосогласовано. Но это будет означать только, что часть нужной математики вы придумали заново, именно для конкретной задачи. Я сам часто так делаю.
Кстати, неограниченного увеличения без математической модели вы не получите. А с ограниченным быстро уткнётесь в край.
Если вам не нужна такая однородность, то можете взять любую паутину. Там потребуется математика плоских графов, чтобы выделить на этой сетке вершины и области, и опять же, не было противоречий. В конечном итоге, всё пишется «на коленке», и если повезёт, то оно будет самосогласовано. Но это будет означать только, что часть нужной математики вы придумали заново, именно для конкретной задачи. Я сам часто так делаю.
Кстати, неограниченного увеличения без математической модели вы не получите. А с ограниченным быстро уткнётесь в край.
UFO just landed and posted this here
Отличная статья. Спасибо! Хочу больше статей на математическую тему. Кстати, никто не подскажет, может существует какой-то ресурс, где собраны подобные статьи? Эдакий хабр с математическим уклоном. Все сайты, которые я до этого видел, либо похожи на сборник олимпиадных задач, либо ответы на ЕГЭ.
Насчёт статей не знаю, но есть какой-то форум dxdy.ru — может быть, на нём найдётся достаточно информации?
Ну вот опять что-то не то. Ресурс, наверно, полезный, но опять все по принципу «вопрос-ответ». Школьнику задали задачку в школе, он пришел на форум, спросил — получил ответ. А хочется, чтобы человек написал статью про какой-нибудь раздел математики да еще понятным языком. А ты прочитал, и сразу захотелось все изучить. Не хватает духа хабра :).
И еще, раз уж пошел такой разговор, у меня есть желание написать парочку статей на математическую тему, но у меня есть сомнения следующего рода:
— являются ли такие статьи уместны на хабре (особенно, если это чистая математика, без какого-то практического применения)
— востребованы ли они читателями хабра.
— являются ли такие статьи уместны на хабре (особенно, если это чистая математика, без какого-то практического применения)
— востребованы ли они читателями хабра.
ru.wikipedia.org/wiki/%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%9C%D0%B0%D1%82%D0%B5%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0 — читать не перечитать. Там наверно статей 500 как минимум)
UFO just landed and posted this here
Она измеряется в абсолютных единицах. Как и длина. Кстати, для треугольника на сфере верна аналогичная формула: S=A+B+C-pi, площадь измеряется в стерадианах (и равна площади треугольника на единичной сфере). Конечно, по-хорошему, для сферы надо писать S=R^2*(A+B+C-pi), а для плоскости Лобачевского — S=(pi-A-B-C)/(-K), где K — кривизна поверхности, но проще принять абсолютнуб величину равной 1 и не вспоминать о ней, пока жизнь не заставит.
UFO just landed and posted this here
Она будет в квадратных, но не метрах. А величинах, равных 1/sqrt(-K), где K — гауссова кривизна плоскости.
Наглядно эту величину можно представить так. Возьмём прямую и точку поблизости от неё. Через эту точку можно провести бесконечно много прямых, не пересекающих нашу, но две из них будут ограничивать этот набор — они на бесконечности будут «сходиться» с нашей прямой (одна с одной стороны, другая с другой) — они так и называются «сходящимися». На картинке их видно: они образуют стороны белого треугольника в центре.
Так вот, оказывается, что сходящиеся прямые сходятся с экспоненциальной скоростью. И величина, на которую надо сдвинуться, чтобы расстояние уменьшилось в «е» раз, и будет абсолютной единицей расстояния в данном экземпляре плоскости. Абсолютная единица площади — квадрат абсолютной единицы длины.
В сферической геометрии роль абсолютной единицы играет радиус сферы: если выражать расстояния через него, то формулы получаются гораздо красивее.
Наглядно эту величину можно представить так. Возьмём прямую и точку поблизости от неё. Через эту точку можно провести бесконечно много прямых, не пересекающих нашу, но две из них будут ограничивать этот набор — они на бесконечности будут «сходиться» с нашей прямой (одна с одной стороны, другая с другой) — они так и называются «сходящимися». На картинке их видно: они образуют стороны белого треугольника в центре.
Так вот, оказывается, что сходящиеся прямые сходятся с экспоненциальной скоростью. И величина, на которую надо сдвинуться, чтобы расстояние уменьшилось в «е» раз, и будет абсолютной единицей расстояния в данном экземпляре плоскости. Абсолютная единица площади — квадрат абсолютной единицы длины.
В сферической геометрии роль абсолютной единицы играет радиус сферы: если выражать расстояния через него, то формулы получаются гораздо красивее.
Предлагаю на каждом шаге «жизни» смещать камеру в сторону максимальной концентрации живых клеток. В этом случае они будут в фокусе или где-то рядом, и будет довольно динамично.
Здорово, что такие статьи есть. Спасибо автору. Но подача хромает, на вики куда понятнее. И эти англоязычные ссылки, зачем?
Почему в видео границы четырехугольников рисуются прямыми? Если это геодезические, в проекции на круг они должны быть дугами. С математикой-то все ясно, а вот когда вы пишете, что ничего интересного не осталось, как раз непонятно. Что такое планер? И зачем было выходить за евклидову геометрию, если остались те же четырехугольные клеточки. В чем разница, кроме того, что в углу встречаются не 4 а 5 клеточек?
Границы рисуются прямыми просто чтобы быстрее было их считать. Меня больше интересовало не идеальное воспроизведение, а комбинаторика. Можно было, конечно, нарисовать ломаную из 32 сегментов — никто бы не заметил разницы…
Планер (он же глайдер) — объект из игры «жизнь» — конфигурация, которая через несколько поколений воспроизводится, но оказывается в другом месте (и в результате движется по полю, пока во что-нибудь не врежется). То, что клеточек встречается не 4, а 5, даёт другую комбинаторную конфигурацию (одно только отсутствие параллельного переноса чего стоит!), и было интересно, к чему это приведёт. Пока разобрался не до конца, объект ещё надо исследовать.
Планер (он же глайдер) — объект из игры «жизнь» — конфигурация, которая через несколько поколений воспроизводится, но оказывается в другом месте (и в результате движется по полю, пока во что-нибудь не врежется). То, что клеточек встречается не 4, а 5, даёт другую комбинаторную конфигурацию (одно только отсутствие параллельного переноса чего стоит!), и было интересно, к чему это приведёт. Пока разобрался не до конца, объект ещё надо исследовать.
UFO just landed and posted this here
А это нормально писать sinh как sh и cosh как ch?
В русских материалах, судя по википедии, да.
Но в международных документах все-таки принято sinh, cosh (а также tan вместо tg и другие).
Но в международных документах все-таки принято sinh, cosh (а также tan вместо tg и другие).
Sign up to leave a comment.
Жизнь на плоскости Лобачевского