Клеточные автоматы. Игра «Жизнь». Часть 1 / Хабр
0. Как я познакомился с клеточными автоматами
В начале 2022 года я, обычный студент 4 курса с направления «Радиофизика», вместо того, чтобы постигать труды по ТОЭ и радиоэлектронике, смотрел YouTube в поисках интересного контента. Меня очень увлекала занимательная математика и головоломки, поэтому я был подписан на множество каналов про околонаучные темы, в том числе по программированию. Мне в ленте попалось потрясающее видео с канала «Onigiri», я всем советую ознакомится с ним, чтобы лучше погрузиться в контекст. Оно сделано очень качественно и очаровывает своим простым повествованием, при этом то, что происходит на экране очень увлекает!
Посмотрите на досуге, а пока, чтобы не отвлекаться, я вам кратко опишу о чем же рассказывают в этом видео.
1. Автоматы которые не стреляют
Представьте перед собой тетрадный лист в клетку. И для начала возьмем простой карандаш и закрасим несколько десятков клеток на этом листе. Дальше немного поиграем, правила очень просты:
Закрашенная клетка и ее 8 соседей.
Если клетка закрашена, то мы ее оставим закрашенной только если у нее 2 или 3 закрашенных соседа. В остальных случаях, к примеру, как на рисунке, клетку нужно стереть.
Если клетка не закрашена, то мы ее закрасим только если рядом у нее 3 закрашенных соседа.
Повторим для каждой клетки (лучше брать небольшой листочек, а то можно быстро устать) и увидим, что наш рисунок уже отличается от начального.
Таких проходов можно сделать сколько угодно и каждый раз наш рисунок на листке будет меняться, то есть наша картинка эволюционирует по обозначенным нами правилам.
Можно сказать, что клетка «рождается», когда соседа 3, «выживает», когда соседей 2 или 3, а в остальных случаях либо «умирает», либо вообще «не рождается». Поэтому такие правила для игры назвали B3/S23, B – Born в переводе с английского «рождение», а S – Survival, что значит «выживание».
В такую игру можно надолго залипнуть на листочке, но спустя время появляется желание побаловаться с этим на компьютере, так как уж больно долго делать все это от руки, поэтому надо автоматизировать!
2. Простенький код с пояснениями
Если вы никогда не программировали, то это отличный повод начать, хоть для совсем начинающих это будет сложно, но я все равно постараюсь написать подробно про каждую строку кода, благо их надо совсем чуть-чуть. Я буду использовать язык Python просто потому, что умею писать только на нем! 🙂
Итак, нам понадобиться сделать анимацию нашего тетрадного листа, будто компьютер быстро закрашивает и стирает клетки по нужным правилам. Для такой анимации я буду использовать библиотеку matplotlib. Библиотека matplotlib это просто код, который написали другие добрые и умные люди, он содержит функции, которые помогают строить различные графики, в том числе и анимировать их. Также, я хочу в начале случайно закрасить какие-то клетки, значит мне нужна функция для генерации случайных значений.
Подключаем наши библиотеки:
import numpy as np import matplotlib.pyplot as plt import matplotlib.animation as animation
Заметьте, что я импортирую два модуля из библиотеки matplotlib это pyplot, который и будет строить график, а также animation, который будет его анимировать. Вы спросите, откуда я знаю, что мне нужны такие модули. Все модули и их функции описаны в документации к библиотеке:
https://matplotlib.org/stable/users/index.html
Дальше я введу переменные для нашей программы:
N = 50 ON = 255 OFF = 0 vals = [ON, OFF]
N = 50: Это размерность игровой сетки (нашего листка в клетку). Я для простоты сделаю квадратный листок N*N, то есть у нас будет 50 клеток в длину и 50 в ширину.
ON = 255, OFF = 0: Эти две строки определяют состояния клеток. «Живая» клетка, она же ON, будет иметь значение 255, а «мертвая», она же OFF, будет иметь значение 0. Вы спросите, что за странные значения, ведь было бы логичнее выбрать 1 и 0.
vals = [ON, OFF]: Это просто список, содержащий два возможных состояния клетки — ON и OFF. Этот список используется при инициализации игровой сетки случайными значениями. То есть мы просто возьмем функцию для случайных значений и попросим разбросать случайным образом значения из этого списка по полю N*N.
Сделать это проще, чем кажется. Введем переменную grid, что значит «сетка» с английского. В нее мы положим результат выполнения той самой функции, которая будет случайным образом выбирать значения из списка vals для заполнения нашего поля N*N: np.random.choice:
grid = np.random.choice(vals, N*N, p=[0.2, 0.8])
Но вы видите, что я добавил ещё p=[0.2, 0.8]. Параметр p=[0.2, 0.8] задаёт вероятности выбора соответствующих состояний. То есть, есть 20% вероятности, что клетка будет в состоянии ON (живая), и 80% вероятности, что клетка будет в состоянии OFF (мертвая).
Друзья, также есть ещё один интересный момент. Функция np.random.choice вернет нам одномерный массив длиной N*N, а мы то помним, что нам нужен двумерный клеточный листок, значит надо превратить этот одномерный массив в двумерный массив (то есть в сетку, листок). Для этого просто допишем к нашей строке ещё одну функцию: reshape(N, N):
grid = np.random.choice(vals, N*N, p=[0.2, 0.8]).reshape(N, N)
Теперь у нас есть клеточный листок с изначальными закрашенными («живыми») и не закрашенными («мертвыми») клетками. Настал самый интересный момент, как заставить их эволюционировать по нашим правилам? Давайте для этого напишем собственную функцию, хотя я уверен, что есть библиотеки, в которых это уже реализовано, но также совсем неинтересно, верно? 🙂
Мы сделаем такую функцию, которую будем вызывать каждый раз, когда нужно изменить состояние наших клеток на листке. То есть мы вызываем функцию, она обновляет сетку по вышеописанным правилам, а затем выводит на экран. И так мы делаем как бы «мультик» кадр за кадром выводя новое состояние сетки.
Определим нашу функцию:
def update(data):
Дальше скажем интерпретатору, что хотим использовать уже имеющуюся у нас сетку, а она у нас лежит в глобальной переменной grid (то есть вне какой-либо функции):
global grid
Создаем копию текущего состояния сетки. Мы будем изменять newGrid, а не исходную сетку grid, чтобы не влиять на наши расчеты в процессе обновления:
newGrid = grid.copy()
Дальше нам нужно пройтись по каждой клетке в каждой строке нашей сетки, для этого будем использовать простейший двойной цикл, где i номер строки из N, а j номер клетки из N:
for i in range(N): for j in range(N):
Для каждой клетки мы должны знать кол-во живых соседей вокруг нее, для этого введем переменную total, которая и будет отражать это число:
total = (grid[i, (j-1)%N] + grid[i, (j+1)%N] + grid[(i-1)%N, j] + grid[(i+1)%N, j] + grid[(i-1)%N, (j-1)%N] + grid[(i-1)%N, (j+1)%N] + grid[(i+1)%N, (j-1)%N] + grid[(i+1)%N, (j+1)%N])/255
Не смотрите на кажущуюся сложность этого выражения, на самом деле все очень просто:
Первое, что мы учли в этом выражении – листок прямоугольный, а значит краевые клетки не всегда имеют 8 соседних, как мы договаривались.
И чтобы исправить это мы свернем наш листок так, чтобы у краевых клеток всегда были соседи. Поверхность, где края нашей сетки будут соединяться с противоположными, создавая бесшовное пространство без границ – тор. Мы можем свернуть наш прямоугольник в тор!
Сначала прямоугольник может свернуться в цилиндр (две параллельные стороны прямоугольника смыкаются). Затем цилиндр может свернуться в тор (оставшиеся стороны цилиндра смыкаются).
Геометрическое представление образования тора из прямоугольника.
Это геометрическое превращение мы проделываем с помощью всего одной операции – %N. Оператор % в Python — это оператор модуля, который возвращает остаток от деления. Оператор %N возвращает остаток от деления на N, где N — размер сетки. Но как это работает?
Давайте разберем это на конкретном примере. Предположим, что у нас есть сетка размером 5×5 (N = 5). Если мы взглянем на клетку с индексом (0,0) (верхний левый угол), то у нас есть соседи вверху и слева.
Но, так как это край сетки, кажется, что соседей нет:
Пример поиска соседей для клетки с индексом (0, 0)
Мы хотим обратиться к ее соседу слева, чтобы проверить «мертв» он или «жив», индекс этого соседа будет (0, -1). Однако в Python отрицательные индексы интерпретируются как обращение к элементам с конца массива, поэтому (0, -1) будет ссылаться на последний элемент в нулевой строке, что является желаемым поведением в этом случае. Но что будет в таком случае?
Пример поиска соседей для клетки с индексом (0,4)
Мы хотим обратиться к соседу справа, чтобы также его проверить, но он уже будет иметь индекс (0, 5) (так как grid[i, (j+1)]), что говорит о том, что мы вышли за пределы цикла, потому что для сетки размером N цикл будет проходить значения от 0 до N-1. Вспомним:
for i in range(N): for j in range(N):
И что делать? Python даст ошибку IndexError, а проверить соседей справа как-то надо. Тут и приходит на помощь %N:
Мы делим наш j-ый индекс на N = 5 и смотрим на остаток от деления (grid[i, (j+1)%N), в этом случае он ноль – 5/5 = 1, остаток = 0.
И получаем индекс (0,0), именно тот, который нам нужен!
То есть при обращении к соседям справа или внизу от клетки на правом или нижнем краю сетки, мы получим индексы, превышающие размер сетки. В этих случаях, (i+1)%N или (j+1)%N вернут нам индекс 0, что также является желаемым поведением. Это наконец-то делает индексацию «циклической», или «тороидальной», как мы обсуждали ранее.
Второе, что мы учли, что все «живые» клетки обозначаются значением 255, поэтому чтобы получить число «живых» клеток в переменной total нужно будет поделить полученную сумму на 255.
После того, как мы посчитали всех «живых» соседей нашей клетки, напишем простое логическое выражение, которое вводило бы наши правила игры в программу:
if grid[i, j] == ON: if (total < 2) or (total > 3): newGrid[i, j] = OFF else: if total == 3: newGrid[i, j] = ON
Разберем построчно:
if grid[i, j] == ON
1) Если клетка жива
if (total < 2) or (total > 3)
2) И если у нее меньше 2 или больше 3 «живых» соседей
newGrid[i, j] = OFF
3) То в новом «кадре» нашей анимации мы ее «убьем»
else:
4) Иначе, если клетка «мертва»
if total == 3
5) И если у нее ровно 3 «живых» соседа
newGrid[i, j] = ON
6) То в новом «кадре» нашей анимации мы ее «возрадим».
Вот и готова наша игра! Теперь за пределами цикла, после того как мы обработали все клетки, мы заменяем старую сетку новой:
grid = newGrid
И последняя волшебная команда:
mat.set_data(grid)
Эта операция обновляет данные в объекте mat, который используется для визуализации сетки на графике. Это обновление заставит matplotlib отобразить новое состояние сетки при следующем кадре анимации.
А теперь сделаем так, чтобы наша функция вернула этот объект:
return [mat]
Эта строка возвращает список из одного элемента — объекта mat, который был обновлен на предыдущей строке. Это нужно для функции
Именно из-за FuncAnimation мы определили функцию в начале с входной переменной data. Коротко говоря, data включается в определение функции update для совместимости с FuncAnimation, даже если оно не используется.
Функция для эволюции наших клеток на листочке готова, переходим к созданию анимации!
fig, ax = plt.subplots()
Эта строка создает новый график, используя функцию subplots из matplotlib.pyplot. Эта функция возвращает два объекта: Figure (здесь сохраняется как fig) и Axes (здесь сохраняется как ax). Figure — это весь график, а Axes — это область графика, где данные отображаются.
Как вы понимаете, теперь надо передать в Axes наши данные после обновления сетки – grid:
mat = ax.matshow(grid)
Мы применяем к Axes функцию matshow() и в нее передаем нашу новую сетку grid, тем самым говорим, чтобы функция matshow() преобразовала наш массив так, чтобы он превратился в объект AxesImage, который можно отобразить уже в Axes. И мы уже готовый объект для отображения устанавливаем в переменную mat.
График готов, кадр анимации тоже, теперь просто поместим все это в одну функцию:
ani = animation.FuncAnimation(fig, update, interval=50, save_count=50)
Как мы уже указывали это функция FuncAnimation из модуля animation. Туда мы передаем наш график fig, функцию для обновления анимации update и два параметра:
Параметр interval=50 указывает, что между кадрами анимации должен быть интервал в 50 миллисекунд, а save_count=50 указывает, что должно быть сохранено 50 кадров анимации. Увеличение interval замедлит вашу анимацию, так как будет больше времени между кадрами, в то время как уменьшение interval ускорит вашу анимацию.
Увеличение save_count может привести к большему использованию памяти, но позволит сохранить больше кадров, если вы решите сохранить анимацию в файл.
И последняя главная команда, чтобы посмотреть результат наших стараний на экране компьютера:
plt.show()
Результат нашей кропотливой работы!
Gif-ку сделал вот так:
ani = animation.FuncAnimation(fig, update, interval=40, save_count=1000) ani.save('game_of_life.gif', writer='pillow', fps=25)
Только учтите важный момент — для создания GIF вам также потребуется установить ImageMagick или Pillow. Я использую Pillow, так как его легко установить через командную строку Python:
pip install pillow
3. Игра «Жизнь».
Приглядитесь внимательнее, мы с вами с нуля сделали целую симуляцию! 30 строк кода, а на экране возникает целая жизнь! Наша игра на листке бумаги переросла в колонии клеток, которые размножаются, перемещаются, убивают друг друга. Здесь много интересных структур, которые возникают в процесс эволюции нашей «популяции» клеток, включая некоторые, которые могут двигаться по сетке («космические корабли») и другие, которые генерируют новые клетки в регулярных интервалах («генераторы»). Если вам интересно, то я обязательно расскажу о них максимально подробно в следующих статьях.
То, что мы с вами получили называется клеточный автомат! В общем случае клеточный автомат – дискретная динамическая математическая модель, состоящая из регулярной решетки, но размерность решетки, форма, правила эволюции, соседи, все это многообразие параметров не установлено заранее. И вы даже не представляете, что в себе несет такая простая математическая модель.
Мы запрограммировали всего один достаточно простой частный случай клеточного автомата, который называется «Игра «Жизнь». Эту игру придумал английский математик Джон Конвей в 1970 году, он с детства вдохновлялся трудами Джона Фон Неймана, который придумал концепт клеточного автомата. И хоть гений Фон Неймана дал жизнь клеточным автоматам, его правила были достаточны сложны для обывателей, а вот Конвей изначально ставил себе цель сделать максимально простой по правилам клеточный автомат, но при этом с нетривиальным поведением, также он хотел добиться полноты по Тьюрингу. Простыми словами это значит, что на таком клеточном автомате можно реализовать любую функцию, даже сам клеточный автомат (да, игра в жизнь внутри игры в жизнь). Кстати, такие умельцы нашлись:
Полнота по Тьюрингу дает возможность воссоздать даже маленький компьютер:
Весь секрет заключается в том, чтобы найти нужную начальную конфигурацию клеточного автомата (а мы начальную конфигурацию делали случайным образом). Надо ли говорить, что это очень сложная задача!
«Жизнь» оказалась удачным выбором и быстро стала популярной из-за своей простоты и интересных визуальных эффектов.
4. Продолжение следует…
Друзья, я большой фанат клеточных автоматов и если вам понравилась моя статья про игру «Жизнь», то напишите об этом, и я обязательно расскажу ещё много интересного про эти удивительные математические структуры.
Полный код клеточного автомата вы сможете найти на GitHub
Спасибо за ваше внимание! До новых встреч!
Александр Глебов
Метро Москвы: карта, история, глубина, фото
Первый проект по строительству Московского метрополитена был предложен в 1875 году, но в силу разных обстоятельств и споров его реализация была отложена. В 1935-м была открыта первая линия — Сокольническая. Сейчас метро Москвы состоит из четырнадцати линий. Во время рытья тоннелей строителям попадались удивительные, а подчас и жуткие находки.
Пропавшие в степях: Почему Золотая Орда исчезла, не оставив ни следа
«Проклятый старый дом» на «Боровицкой»
В 1985 году на месте перехода со станции «Боровицкая» к станции «Библиотека им. Ленина» на глубине шести метров был обнаружен дом из красного кирпича, предположительно, середины XVI века. Возможно, он был частью Опричного двора Ивана Грозного.
Дерево народов СССР на станции метро «Боровицкая». Фото © Wikipedia
Время его пощадило, и даже внутреннее убранство сохранилось в первозданности, позволив историкам реконструировать быт хозяев дома. По данным краеведов, раньше он располагался на территории Старого Ваганькова, которое вскоре влилось в состав Москвы. На вопрос, почему дом ушёл под землю, так и не нашлось ответа, ведь никаких особых катаклизмов в XVIII веке (тогда, по данным исследований, он и ушёл под землю) в той местности не зафиксировано. Сначала дом выполнял функцию музея, но после ряда паранормальных эпизодов, которые вызывали у работников метро панические атаки, дом решено было снести и поднять его обломки на поверхность. После этого «чудеса» прекратились. Скептики называют это совпадением, суеверные же с опаской ёжатся при упоминании о доме.
Схема метро Москвы
За всю историю Москвы официально было зафиксировано более 100 кладов, найденных в исторических пределах города. И ещё около двухсот — в Подмосковье. Число тайников, которые так и не удалось откопать, исчисляется тысячами. Столичные диггеры отмечают, что практически на всех крупных станциях московского метро остались такие тайники, однако входы к ним либо залиты бетоном, либо завалены землёй и заварены металлом.
Найденные в центре Москвы монеты XIX–XX веков. Фото © Агентство городских новостей «Москва» / Сергей Ведяшкин
Один из кладов был обнаружен в районе Климентовского переулка в 1970 году. Как это было? При строительстве станции метро «Новокузнецкая» рабочие нашли большой мешок с почти 20 тысячами серебряных монет, датируемых не позднее 1696 года (эпоха царя Михаила Фёдоровича и Петра I). На что советское правительство истратило такое богатство, неизвестно, можно лишь предполагать, что средства пошли на государственные нужды. С 90-х годов сохранилась легенда, что «закладки» остались на каждой из станций Кольцевой линии и практически на всех конечных: как на юге, так и на востоке и севере, куда расширялась линия метро.
Как сквозь землю: Почему 4 славянских государства исчезли, не оставив ни следа
Золото царской России
Ещё один клад попался строителям в 2014 году при строительстве станции «Румянцево» Сокольнической линии. Находка представляла собой три медных сосуда, набитых монетами из золота и серебра, ожерельями, произведениями московских и европейских ювелиров. Историки установили, что клад датируется XVI–XVII веками. Сейчас он находится под охраной государства.
Сколько снарядов нашли при строительстве метро
Количество снарядов времён ВОВ, обнаруженных в Москве, давно перевалило за тысячу (в 2010-м было зафиксировано 916). И такие находки, если внимательно посмотреть местные новости, продолжают попадаться при строительстве тех или иных объектов.
В августе 2016 года при строительстве Солнцевской линии метро (а точнее — станции «Раменки») в районе Мичуринского проспекта рабочие нашли 122-миллиметровый снаряд. Работы на время приостановили, эвакуировав строителей. Снаряд изъяли сапёры, обезвредили его на полигоне. В феврале 2023-го при строительстве станции метро «ЗИЛ» Троицкой линии также обнаружили снаряд времён Великой Отечественной войны. Его также обезвредили.
Подземные сооружения Москвы
Не только кладами и снарядами славится московская подземка, но и глубокими катакомбами, о которых сложены тысячи легенд. Подземные катакомбы города начали строить чуть ли не с момента его основания. Некоторое время такие подземки соединяли между собой удельные княжества. Некоторая часть лабиринтов и тоннелей возведена при Иване Грозном.
Обнаруженная тайная комната у основания Китайгородской стены. Фото © Агентство городских новостей «Москва» / Андрей Любимов
Много разговоров о «станциях-призраках». К примеру, своды метрополитена таят под собой как минимум четыре закрытые станции: «Советскую» на Замоскворецкой линии, «Первомайскую» на Арбатско-Покровской, «Калужскую» в здании депо на Калужско-Рижской и «Волоколамскую» на Таганско-Краснопресненской ветке. Некоторые дотошные исследователи, по слухам, натыкались на гигантских крыс, кости и даже на призраков. Впрочем, тут единого мнения нет — обусловлено ли это мистической аурой подземки, либо это обыкновенные галлюцинации.
Известно также, что в советские времена помимо известных веток и станций существовали секретные, многие из которых сейчас запечатаны. По слухам, диггерам удалось обнаружить линию метро от нового здания Министерства обороны РФ на Знаменке до «Лаборатории измерений и испытаний Метрополитена» в Тропарёве-Никулине.
Что-то подсказывает, что 90% своих тайн московское метро упорно скрывает. Да и не каждый отважится «копнуть поглубже», особенно учитывая, что метро — это всё-таки не музей старины и не «комната страха», а стратегический объект.
Миллиарды растворились: 7 сокровищ России, которые исчезли, не оставив ни следа
Евгений Жуков
- Статьи
- Археология
- Наука и Технологии
Комментариев: 0
Для комментирования авторизуйтесь!
рисунок блокнота в сетке|TikTok Поиск
TikTok
Загрузитьканцелярский
канцелярский
Что вы будете рисовать на решетчатой бумаге?
🔎Сетка Тетрадь #канцелярские товары #fyp #бумага #советы #учеба #minecraft #алмазная кирка 90 004 #stationerypal #viral
696 лайков, TikTok видео от stationerypal ( @stationerypal): «Что вы будете рисовать на бумаге с сеткой? Что вы будете рисовать на сетке? | Взгляните на мою алмазную кирку! Что вы будете рисовать на бумаге с сеткой? Средство — Шак Райес.
15,2 тыс. просмотров|
Remedy — Shaq Rayes
игрушки
игрушки
🐾✨ Откройте для себя радость рисования кавайных котят в нашем блокноте с точечной сеткой! 📓🎨 Присоединяйтесь ко мне, и я проведу вас через веселую ежедневную практику, чтобы развить свои навыки.😻 Отлично подходит для художников всех уровней! 🌟 Берите блокнот и давайте рисовать! ✍️🐱 #KawaiiKitties #DotGridNotebook #drawingpractice
61 лайк, видео TikTok от joiethings (@joiethings): «🐾✨ Откройте для себя радость рисования кавайных котят в нашей работе блокнот t grid! 📓🎨 Присоединяйтесь ко мне, как я пройду через веселую ежедневную практику, чтобы развить свои навыки.😻 Отлично подходит для художников всех уровней! 🌟 Берите свой блокнот и давайте рисовать! ✍️🐱 #KawaiiKitties #DotGridNotebook #drawingpractice». Моя легкая каваи-практика Shakira: Bzrp Music Sessions, Vol. 53 — Бизаррап и Шакира.
324 просмотра|
Шакира: Bzrp Music Sessions, Vol. 53 — Bizarrap & Shakira
jiminnwrld7
jm🌙
Любовные рисунки в блокноте с сеткой 🐳
(набросок из Pinterest!) #bts #btsarmy 900 03 #микрокосмос #эскиз #рисунок # doodle #tiktokshop #foryou #fyp
2K лайков, видео TikTok от jm🌙 (@jiminnwrld7): «Люблю рисовать на сетке блокнота 🐳 (набросок на основе Pinterest!) #bts #бцармия #микрокосмос # скетч #рисунок #doodle #tiktokshop #foryou #fyp». Еще раз — Amsyarleee.
9452 просмотра|
Once Again — Amsyarleee
klyhde071140
kLyHdE071140
я рисую майнкрафт на своем блокноте сетки 😀😀😀
TikTok видео от kLyHd E071140 (@klyhde071140): «Я рисую майнкрафт в своем блокноте с сеткой 😀😀😀». Майнкрафт — Рексди 0141💯☑️.
1571 просмотров|
Minecraft — Rexdee 0141💯☑️
flori55a
🌸💖🏁
День 1 🍓заполнения этого блокнота рисунками сетки Каваи 💗🌸🌺💓
53 лайка, видео в TikTok от 🌸💖🏁 (@flori55a): » День 1 🍓 заполнения этого блокнота рисунками сетки Каваи 💗🌸🌺💓». оригинальный звук
853 просмотра| #doodle 04 #интерпретация #искусство #субъективное #реальность #fyp #artist #drawing #sketch #notebook #gridpaper #fun
56 лайков, TikTok видео от IncredibleFlyin crediblefly): «#doodle #doodle #draw #clouds #interpret # искусство #субъективное #реальность #fyp #художник #рисунок #эскиз #блокнот #gridpaper #весело». Шаг первый: дудл
| Шаг второй:
Решите, что такое каракули
(Интерпретировать облака)
| Шаг третий:
Заполните блоки, чтобы построить фигуры
| . .. с понедельника по понедельник — саба.
3352 просмотра|
С понедельника по понедельник — Саба
lizmmmosley
Liz Mosley
Иногда нужно просто сделать что-то, не связанное с работой, чтобы получить творческое настроение! В этих буквах нет ничего интересного, но мне нравится пробовать этот блокнот с сеткой букв от Dot grid — в сотрудничестве с @Ian Barnard #drawingletters #letteringideas #letteringvideos
228 лайков, видео TikTok от Лиз Мосли (@lizmmmosley): «Иногда вам просто нужно сделать что-то, не связанное с работой, чтобы войти в творческое настроение! В этих письмах нет ничего захватывающего, но вам нравится пробовать этот блокнот с сеткой букв от сетки Dot — в сотрудничестве с @Ian Barnard #drawingletters #letringideas #lettingvideos». Играем с рисованием букв, чтобы дать волю творчеству перед началом работы. Добрый день — Nappy Roots.
3347 просмотров|
Good Day — Nappy Roots
Nursartist.rn
QueenMgSo4
Обзор блокнота Grid #fyp #drawinghands #shoppehaul 9000 4 #tiktokmademebuyit #artmaterialscheck
Видео TikTok от QueenMgSo4 (@nurseartist. rn): «Обзор блокнота Grid #fyp #drawinghands #shoppehaul #tiktokmademebuyit #artmaterialscheck». Рейтинг сетки ноутбука | Я пытаюсь практиковать свои рисунки руками и пальцами, потому что я отстой! | 1. Такой маленький, я не ожидал, что он будет таким маленьким 2. Удобный, как размер моей руки 3. Гладкий и подходит для рисования, практики, но не для информативных журналов. 4. Действительно помогает новичкам вроде меня, у которых есть проблемы с длиной и шириной | … Классическая музыка — Классическая музыка.
286 просмотров|
Classical Music — Classical Music
artistchristie
Christie
Ответить на @camthecreation Я еще нарисовала, но лень рисовать скучные сетки каждый рисунок😅 #fyp #Learntodraw #artistsoftiktok #gridmethod #art
379 лайков, видео в TikTok от Christie (@artistchristie): «Ответ @camthecreation Я все-таки нарисовала, но лень рисовать скучные сетки каждый рисунок😅 #fyp #Learntodraw #artistsoftiktok #gridmethod #art». Я использую блокнот с сетчатой бумагой | Графитовая копировальная бумага ручной работы | Перенести линии на окончательный документ | … Вы правы — Doja Cat и The Weeknd.
7910 просмотров|
You Right — Doja Cat & The Weeknd
Точечная сетка против обычной — Creoly
Все мы слышали об обычных страницах, страницах с сеткой или в линейку в блокноте. Линии, которые направляют ваше письмо, рисование и наброски, но что такого особенного в блокнотах с точечной сеткой?
Этот геометрический узор, разработанный в качестве альтернативы страницам с жесткими линиями и традиционным коробкам, обеспечивает свободу и творческий подход при использовании вашего блокнота.
Блокнот с точечной сеткой будет иметь очень светлые точечные отметки на странице в виде слабых рядов, которые образуют узор в виде сетки. Эти светлые точки служат очень тонким ориентиром для вашей работы, не нарушая вашей страсти и чутья.
Мы разработали несколько разных стилей блокнотов и журналов с точечной сеткой, которые вам обязательно стоит попробовать.
Точечная сетка позволяет вам получить свой пирог и съесть его, говоря метафорически, поскольку это все 3 (линейка, сетка и обычная) в одном!
Точечная сетка — относительно новый стиль страницы. Благодаря такому явлению, как Bullet Journaling, все больше и больше людей искали блокнот, который был бы гибким и местом, где они могли бы свободно делать заметки, составлять списки и делать наброски.
Точечная сетка дает писателям ощущение структуры, но только если они в этом нуждаются. Это ненавязчивое отношение понравилось творческим журналистам, которые хотели, чтобы стиль бумаги соответствовал их новому стилю дневника.
Казалось бы, как писатель, вы должны использовать разлинованную бумагу, чтобы направлять свои слова и равномерно распределять интервалы между предложениями, тогда как если вы более художник, вы должны отказаться от узорчатой бумаги и просто использовать обычную, верно?
Иногда это не всегда так.
![](/800/600/https/i.pinimg.com/originals/5d/91/10/5d9110f4931495152faae17c00dc913c.jpg)
Для ведущих заметок…
Горизонтальные линии, хотя и полезны для длинных абзацев и регулярного, повторяющегося письма, не совсем идеальны для творческого мышления и ведения заметок. У вас когда-нибудь было слишком много идей в голове, и вам нужно было изложить их на бумаге? И когда вы записываете их на разлинованной бумаге, ваш законченный текст выглядит грязным, неорганизованным, и вы теряете строки, потому что хотели расставить свои заметки?
Мы очень любим точечную сетку для создания заметок по всем вышеперечисленным причинам. Точки позволяют вам не чувствовать себя ограниченными линиями. Вы можете связывать идеи, создавать ментальные карты и по-прежнему сохранять аккуратность и организованность своего письма, следуя воображаемым линиям, если хотите.
Для художников…
Хотя обычная тетрадная бумага дает вам свободу использовать всю страницу при создании набросков, тетради с точечной сеткой также могут быть невероятно полезными. Точечная сетка позволяет художникам и дизайнерам добавлять перспективу к своим эскизам. Мы разработали наши блокноты Th[ink] с точечной сеткой с учетом потребностей дизайнеров, поскольку бледные точки обеспечивают точность, если это необходимо, но они также настолько легкие, что при необходимости их можно полностью игнорировать.
Мы пока не отказываемся от традиционных типов бумаги, поскольку обычная бумага всегда будет полезна для набросков, а линии всегда будут использоваться при написании рассказов, но мы очень любим давать эту новый бумажный стиль вперед!
Точечная сетка не бросается в глаза, она светлая и неяркая, что позволяет вам иметь структуру, когда она вам нужна, и полную пустую страницу, когда она вам не нужна. Мы разработали ряд журналов и блокнотов Th[ink], в которых используется точечная сетка вместо обычной, линейчатой или даже сетчатой бумаги, поскольку нам нужны блокноты, которые может использовать каждый и которые соответствуют потребностям писателя.