Ternimal — имитация формы жизни в терминале

Компьютерное

Любой линуксоид довольно часто открывает терминал.  У некоторых он даже открыт постоянно. Не потому что там какие-то проблемы нужно постоянно решать. Просто терминал удобен. Как бы дико это не звучало, но когда к нему привыкнешь, запомнишь сочетания клавиш, научишься паре команд, узнаешь что можно настроить историю ввода команд и задать свои алиасы, то терминал становится продолжением рабочего стола, а иногда и фактической его заменой. Поэтому не стоит удивляться тому, что для командной оболочки появляются вещи из разряда забав — just for fun. Одна из таких вещей Ternimal — симулятор формы жизни.

Ternimal (обратите внимание на орфографию) — это программа, которая рисует анимированную форму жизни в терминале с использованием блоков символов Unicode. Он работает в большинстве терминальных эмуляторов и с большинством моноширинных шрифтов.Иллюстрация 1С практической точки зрения, программа не очень полезна. Однако она содержит довольно много классных технологий и математики:

  • Рендер «Glow», способный работать с 1000 кадрами в секунду (если терминал может справиться с этим)
  • Динамическая генерация дифференцируемого на всём протяжении пути движения, состоящего из круговых дуг
  • Скелетная деформация вдоль пути
  • Описание формы на основе Фурье, позволяющее реализовать различные формы тела и анимировать их

Ternimal также является примером минимализма и сдержанности. Написанный всего в 1000 строк на Rust, он не имеет зависимостей и потребляет очень мало ресурсов: 400 кБ на диске, 3 МБ ОЗУ и 4% одного ядра процессора с параметрами по умолчанию. Он реализует свои собственные операции линейной алгебры с нуля, а также анализ основных команд и простой генератор случайных чисел.

Сборка

Ternimal не имеет зависимостей, кроме стандартной библиотеки Rust, и не требует Cargo для сборки. Нужен только установленный rustc (>= 1.20), так что Ternimal может быть собран так:

git clone https://github.com/p-e-w/ternimal.git
cd ternimal
rustc -O ternimal.rs

Использование

По сути, Ternimal не делает ничего кроме окраски блоков вокруг движущегося по извилистому пути позвоночника. Есть много параметров управляющих этим процессом, однако почти все их можно изменять из командной строки.

Это делает систему очень гибкой. Далее — несколько примеров как это делать:

«Анаконда»

./ternimal length=100 segments=50 thickness=1,4,1,0 radius=6,12 gradient=0:#666600,0.5:#00ff00,1:#003300

Иллюстрация 2

«Рой»

./ternimal length=200 segments=50 thickness=0,4,19,0

Картинка 3

«Радуга»

./ternimal length=20 thickness=70,15,0,5 padding=10 radius=5 gradient=0.03:#ffff00,0.15:#0000ff,0.3:#ff0000,0.5:#00ff00

Картинка 4

«Черная дыра»

./ternimal speed=10 length=100 segments=5 thickness=13 gradient=0.5:#000000,0.8:#ffffff,1:#000000

Изображение 5

В итоге: Ternimal — интересная и простая программа показывающая возможности языка Rust и командной строки.

Оцените статью
( Пока оценок нет )
Блог админа