Обновить

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

Ничего не понятно, но кажется вы изобрели клеточный автомат, типа Конвеевской жизни или более модерновой Lenia

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

Однородный фон и одно правило — как энергия перетекает между соседними точками.

Видимо, получился аналог клеточного автомата, только в классической версии (игра "жизнь" Конвея и её модификации) у каждой точки только два состояния, а тут вариант с множеством состояний.

Состояния выходят из формулы модели C=1/E поэтому они непрерывны, и немного отличаются от клеточного автомата, там живут волны и всё вместе с ними.

поэтому они непрерывны

Как вы этого добились в симуляции на дискретной цифровой машине?)

Конечно дискретность ни куда не делась, но у меня она как основа и масштаб (размер клетки и тик). И непрерывность я имел в виду значение энергии в точке - скаляр в момент времени в точке, сейчас использую float, сильно мало)).

Любопытно. А детали привести можете? Нелинейность есть?

Да, нелинейность есть, ку да же без неё, растеклось бы. Скаляр энергии E(x,t) на сетке - правило: энергия перетекает к соседям, но скорость перетока зависит от самого поля: c = 1/E (чем плотнее, тем медленнее) . Пробовал варианты с гидро и волной, самое интересное что результат почти тождественен.  гидро: давление P = −scale²/E сейчас scale держу =1(от масштаба, на уровне бризеров 1000);  волновая: ∂²ₜE = ∇·(c²∇E), c = 1/(1+E). пробовал и так c = 2/(1+e^E), но введение экспоненты меня смущает, хотя сверху (на высоких энергиях работает лучше) и для клампа - энергия масса отрабатывает, а снизу картина почти не меняется. Тут как раз ещё помогает дискретность клетки которая даёт минимальную длину волны и дисперсия работает не линейно.

Спасибо.

  1. А суммарная E (энергия или все таки скалярное поле) по сетке у вас сохраняется при эволюции?

  2. Есть ли граничные условия? Какие граничные условия используются - отражающие, поглощающие, периодические?

Да граничные условия есть, если вы о стенке. Оттока через внешние грани нет, но волны гасить приходится, иначе не получаются условия близкие а реальным. Без гашения волн - отражёнка, и прочее, не дают устаканится энергии. Делаю небольшой пограничный слой, с гашением. Дельта энергии из за губки есть, но она в приделах ~0.001%. Если говорить о перетоке между ячейками то там всё строго, сколько вылили столько влили.

На счёт энергии суммарной, хмм, у меня скалярная сумма и есть сумма энергии системы, энергии в 0 не бывает, формула не даёт и не логично это.

Напомнило smooth life, которые точно клеточные автоматы. 3D рендеры похожи на симуляции гравитационных волн при слиянии двух ЧМ. Отдельно можно посмотреть на фигуры Хладни, которые вероятно имеют схожую структуру с тем что получилось у вас.

SmoothLife симулирует жизнь: ~7 подобранных констант, нелокальность по диску (свёртка), сохранения нет, и по смыслу это про «жизнь/смерть» (хотя состояние непрерывное, как и у меня).

Моя поделка — классическая нелинейная теория поля, коих вагон , (без квантовых постулатов, стараюсь избавляться от любых сущностей, кроме энергии нет ничего), безразмерных подгоночных констант ноль (есть масштаб, но он = выбор единиц), строгая локальность (только соседи), и одно-единственное правило — скорость перетока c = 1/E. Смысл не «как поделиться или убить», а куда и с какой скоростью перетечёт энергия (она сохраняется, не создаётся). Схожесть картинки — возможно, да; механизм — как бы совсем не тот.

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

Публикации