Любитель создал часы для отслеживания сортировки мусора
Энтузиаст Джон Грэм-Камминг представил часы, которые помогают понять, когда и какие отходы нужно готовить к утилизации.
Автор разработки отмечает, что иногда сложно запомнить дни, когда нужно выбрасывать пластик, металл, бумагу и стекло. Ранее разработчики уже предлагали свои решения проблемы, как, например, это сделал Даррен Тарбард, выпустивший устройство «Bindicator». Оно показывает, какой мусор пора выносить, с помощью разных цветовых индикаторов.
Грэм-Камминг решил предложить свою разработку, но сделать её менее технологичной. Он разработал циферблат часов, используя дешёвые часовые механизмы. В нём есть стрелка, которая совершает оборот за семь дней.
Затем он написал код для создания SVG (а также PDF и PNG) для циферблата. Цвета и текст определяются переменными schd и bins. Код должен легко настраиваться, он поддерживает до двух разных типов мусорных баков в день.
Единственный интересный фрагмент кода — это генерация кривых для семи ежедневных сегментов. Для этого есть функция path:
Функция принимает два параметра: p — число от нуля до шести, представляющее семь дневных сегментов, необходимых на часах; r — радиус дуги. Функция использует getXY для поиска положения точки на дуге. Она делает это дважды, чтобы найти начальную и конечную точки.
Таким образом, path в конечном итоге возвращает что-то вроде M x0 y0 A r r 0 0 1 x1 y1, где x0, y0, x1, y1 — вычисленные конечные точки дуги, а r — радиус дуги. M x0 y0 означает «перейти к (x0, y0)». A r r 0 0 1 x1 y1 означает «нарисовать дугу радиусом r до точки (x1, y1)». 0 0 1 в середине соответствуют трём параметрам: вращение вокруг оси x, флаг большой дуги и флаг развёртки.
Последняя часть элемента SVG path, L 0 0, добавляется в другом месте кода. Она устанавливает центр дуги в
Читать на habr.com