👁 Глаз следящий

Глаз, который следит на мышью (18.81КиБ)
Глаз, следящий за мышью в консоли

Обновилась до версии 2.9 моя любимая программа-терминал iTerm2. Изучая новые возможности, обнаружил нечто неожиданное — теперь в консоль можно выводить обычные графические изображения.

Протокол довольно простой:
ESC ] 1337 ; File = [необязательные параметры] : изображение в формате base64 ^G
Решил немного с ним побаловаться, результат на скриншоте — небольшая программа на «баше» — глаз, который следит за указателем мыши.

Пришлось разобраться с тем как вообще получают координаты мыши в консоли, плюс вспомнить школьную геометрию. Синусы, косинусы, вот это всё, неявно вычисляются через awk и используются для определения где нужно рисовать зрачок.

Чем дальше курсор находится от глаза, тем больше событий мыши получает консоль во время перемещений по окружности вокруг него. Из-за этого образуется некая инерционность слежения, которую я стал было корректировать, но потом убрал этот код — инерция придаёт какое-то интересное подобие жизни.

Для запуска требуется iTerm2 2.9 и выше и Imagemagick.
5 марта 2016 20:13

spiridonov@gmail.com (инкогнито)
5 марта 2016, 20:34

Он таки следящий, не? :-)

bolknote.ru (bolknote.ru)
5 марта 2016, 20:38, ответ предназначен spiridonov@gmail.com

Да, конечно :) Опечатался.

greys (gleb.reys.net)
7 марта 2016, 22:21

Шикарно!

Очень занятно, чем-то мне напомнило мои первые эксперименты с превдографикой ещё во времена MS-DOS :)
Нужно будет освежить познания ESC-последовательностей, про работу с мышью я ничего не знал.

Спасиб!

bolknote.ru (bolknote.ru)
7 марта 2016, 23:06, ответ предназначен greys (gleb.reys.net):

Больше всего я экспериментировал в «Арканоиде» всё же: http://bolknote.ru/2011/09/18/~3410

Ваше имя или адрес блога (можно OpenID):

Текст вашего комментария, не HTML:

Кому бы вы хотели ответить (или кликните на его аватару)