Как стать автором
Обновить

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

Подпись подделал.
Завораживает.
Отлично сочетается с дабстепом. Например Xilent – Choose Me (Dubstep Mix). Всем отделом зависли минут на пять.
Выглядит совершенно фантастично. А есть ли у этой красоты хоть какое-нибудь практическое применение?
Думаю, если добавить устройство вывода и внести определенным образом описываемые погрешности в отображение подписи (к сожалению, я не эксперт, однако у экспертов, работающих в области сверки подписей, должны быть формализуемые и неформализуемые алгоритмы оценки принадлежности подписи), то устройство имеет более чем практическое применение, но, конечно, хотелось бы мнение автора
Я слышал ещё усилие нажатия на бумагу имеет значение. Неплохо бы и это предусмотреть.
Совершенно необязательно использовать шарнирный механизм для рисования кривой на бумаге: уверен, с этим отлично справится два электропривода, меняющие координаты (x,y). А электромагнит, к примеру, может менять давление пера. Современная механика и цифровое управление обеспечат отличную точность. Если же использоваться шарниры, то получится стим-панк техно-монстр для рисования одной кривой.
На мой взгляд это исключительно теоретическая, но очень красивая работа. Как большая часть всей современной математики :E
Именно так это и делалось, на отечественном трехперьевом графопостроителе АП (номер не помню)
Самое сложное было прикрепить шариковую ручку вместо родного чернильного пера.
Сканировалась подпись, обводилась в автокаде — так сказать векторизация.
Ну а дальше дело техники.
А русские пишут карандашом.
А некоторые подписи стеклофонят :)
ещё усилие нажатия на бумагу имеет значение

Совершенно верно. И еще множество признаков, по которым «компьютерную» подпись можно отличить от человеческой. Кстати, и полная идентичность двух подписей свидетельствует о том, что, по меньшей мере, одна из них поддельная.
Можно добавить погрешность… где то в узких местах
Конечно. С её помощью можно создать большую базу данных подписей реальных людей.
А есть ли у этой красоты хоть какое-нибудь практическое применение?


У этой штуки нет никакого практического применения. Оно ей совершенно не нужно. Это чистая, незамутнённая красота. Часто ли встречаете такие теоремы, схему конструтивного доказательства которых можно и хочется закодировать?

Кто говорил, что Хабр не тот? (Я говорил, что Хабр не тот.) Очень радуюсь, когда опровергают это утверждение.
торт
Автоперья: en.wikipedia.org/wiki/Autopen
1803 год. Подписание множества писем президентов, книг фанатам и другие интересные варианты.
Так что практические применения нашлись даже раньше описанных алгоритмов. :)
Даже лучше меня мою подпись рисует :)
Поддерживаю, подпись получилась более гладкой :) Завораживает…
НЛО прилетело и опубликовало эту надпись здесь
После таких комментариев вообще не грузится :)

А вообще выполнить такой шарнир натурно — вот и отличное подспорье кассирам и коммерческим директорам ;)
Круто! На очереди технология, которая из скана подписи делает при помощи 3D-принтера механизм для ее подделки :)
Круто! На очереди технология, которая из скана подписи делает при помощи 3D-принтера механизм для ее подделки :)

А лучше КЛОН подписанта :)
не, не надо клон. Нужна только его подпись.
Мне тут от одного не избавиться, а вы второго предлагаете. Кормить кто будет?
Фантастика.
Но даже для коротенькой прямой генерирует совершенно нереализуемые конструкции из сотен рычагов.
То самое хотел подметить
НЛО прилетело и опубликовало эту надпись здесь
Зато какая красивая конструкция для точки получается! Да и движения…
Может необходимо добавить некоторое сглаживание еще при вводе?

Идея и реализация — просто супер!
Лучшая статья за последнее время!
Этот получаемый шарнирный механизм максимально простой или возможна оптимизация для уменьшения количества составляющих?
НЛО прилетело и опубликовало эту надпись здесь
Хех… Зато какое поле для генетических алгоритмов :)))
НЛО прилетело и опубликовало эту надпись здесь
Можно ведь просто отключать подачу чернил для имитации отрыва пера от бумаги.
НЛО прилетело и опубликовало эту надпись здесь
Попробуйте увеличить степень аппроксимации — результат будет больше соответствовать Вашему рисунку.
При дефолтной «approximation: 20» из моей подписи (так же срезая углы и завитушки) получилось примерно то, что выходит у меня, когда расписываюсь небрежно. Реалистично :)
:-D А на моей подписи получился бред, три буквы превратились в волну… Надо было идти учиться на врача…
Видимо, я один такой, кто не понял, как заюзать эту штуку, а не просто смотреть на крутящиеся многогранники…
upd: ну да, надо же было прочитать, что написано в круге…
Подпись Магомета не подделывается
думаю, автор имел в виду байку, по которой магомет расписывался крестиком
Впечатляюще!
У вас подходящая аватара.
Я даже сперва подумал, что то не аватар, а вы картинку вставили, чтобы выразить эмоции рисовальщика (или свои).
НЛО прилетело и опубликовало эту надпись здесь
ага, и ник тоже по случаю подправил
почерком вы очень смахиваете на тестировщика ПО
Я дизайнер:)
А теперь нужно все это распечатать на 3D принтере и собрать вживую!
невозможно такой механизм построить
Теперь нужно добавить кнопочку «создать задание для 3D-принтера», чтобы экспортнуть в печать получившееся устройство из шарниров.
Обновлять комментарии… Обновлять комментарии… Обновлять комментарии… Обновлять комментарии…
Пробовал нарисовать прямую… мышкой,,, под линейку, чтобы увидеть гениальный механизм Липкина-Посселье, который рисует точную прямую в простейшем виде. I failed.
аппроксимация одним членом дает, в принципе, что-то похожее, только наворотов побольше
Можно просто аппроксимацию выставить в 1 :-)
А где можно будет скачать базу данных собранных подписей? :)
«Чтобы скачать что-нибудь ненужное базу данных, надо сначала создать базу данных, а у нас логинов нет...» (с) Шарик
s/Шарик/Дядя Фёдор/
Кстати, чтобы нарисовать идеальную прямую в винде, достаточно нажать Alt+Shift+Num Lock и включится управление указателем мыши с клавиатуры. Стрелочки это направления движения мышки, клавиша Insert(0) зажать клавишу мыши, del(.) отжать клавишу мыши.
Спасибо, раньше и не знал, что такое существует.
Эти ваши шарнирные конструкции выглядят так, что я сегодня всю ночь буду мучаться кошмарами :-(
Зрелище завораживает =) Прекрасная статья, которых давно не было на хабре. Единственное, даже при простых линиях механизм слишком сложен. Интересно, как это можно оптимизировать
Поясните, пожалуйста, что делается в этом фрагменте кода:

this.O=[(this.Q[0]+this.R[0])/2,(this.Q[1]+this.R[1])/2];
var PO=Math.sqrt(Math.pow(this.O[0]-this.P[0],2)+Math.pow(this.O[1]-this.P[1],2));
var rb=0.6*a;
var OT=Math.sqrt(rb*rb-PO*PO);
var vertical=[this.S[1]-this.P[1],-this.S[0]+this.P[0]]
var verticalLength=Math.sqrt(vertical[0]*vertical[0]+vertical[1]*vertical[1]);
var eVertical=[vertical[0]/verticalLength,vertical[1]/verticalLength];
this.T=[this.O[0]+eVertical[0]*OT,this.O[1]+eVertical[1]*OT];


Поскольку из теории видно, что O — за пределами антипараллелограмма, а тут — будто она посередине между R и Q
Какой вы внимательный читатель)
Просто в проге заместо точки 0 выступает точка Т:
this.T=[this.O[0]+eVertical[0]*OT,this.O[1]+eVertical[1]*O;
Я так и попытался себе это представить :) но не могли бы вы еще технически пояснить, что есть 0,6 * а что такое vertical и eVertical (угловой коэффициент?)
Я знаю, что у программистов это плохой тон писать числа в теле программы) Но я не удержался)
Если мне не изменяет память, 0.6 — это параметр надстройки на антипараллелограмм. Его в разумных пределах можно изменять.
Надстройки? Вероятно, следует прочесть какой-то из научных материалов, ссылки на которые вы давали?
К своему стыду, ни в обеих пдфках (дипломной работе и основном доказательстве), ни на странице не нашел упоминаний о «параметре надстройки» (о самой надстройке — нашел). Можете показать, что именно я упускаю?
Если Вы в моем доказательстве посмотрите на правую часть этой картинки:
image
То увидите антипараллелограмм с красненькой «надстройкой», которая выполняет одну единственную функцию — не дасть антипараллелограмму вывернуться в параллелограмм. Дело в том, что точку О на рисунке можно выбрать в любом месте на серединном перпендикуляре к отрезку QR (или PS). И эта произвольность выбора точки О как-раз и контролируется коэффициентом в программе, который взял за 0.6.
Можно было его взять любым (в разумных пределах)
Это просто кто-то ручку расписывал. А настоящая подпись правее :)
Сделайте закрепленные шарниры визуально отличимыми от незакрепленных, пожалуйста.
Круто! Теперь я понял, что моя подпись имеет более высокую степень защиты, я один раз отрываю ручку от бумаги) Хотя с такими идеями скоро нужно будет вводить правила и уровни безопасности личной подписи. Вот так вот в недалёком будущем расписался на электронном бланке паспорта при получении онного, а тут из динамика: «Блюм, ваша подпись ненадёжна»)
Подпись определяет вас не столько по своей форме, сколько по манере её писать.
Осталось прикрутить 2 сервопривода и ручку))
Если кому хочется посмотреть на всякие клевые вещи, которые можно сделать с помощью шарнирных механизмов, то можно заглянуть сюда: www.etudes.ru/ru/
НЛО прилетело и опубликовало эту надпись здесь
есть еще хороший сайт tcheb.ru
Ага. Приятно, что знаете! Одна хорошая команда все это хозяйство делает.
Как я понял, вы — часть этой команды? Спасибо вам за работу.
Очень сильно. Но тачскрин подпись программа не ест. А ведь пальцем на экране расписываться так естественно.
супер
Плюсую за интересную работу.
Мою подпись подделать не смог :)
Сделал несколько попыток, разного размера. Не может.
Вероятно просто не хватает аппроксимации в 99, если, конечно, вы её не забыли выставить в 99
забыл :) ближе к 80 уже похоже
Выглядит жутко. Но впечатляет. Я бы добавил какое-нибудь сглаживание, чтобы простые фигуры рисовать с помощью более простых конструкций. Хотя не знаю, насколько это реализуемо.
НЛО прилетело и опубликовало эту надпись здесь
Интересно, почему даже для простой прямой линии (даже для точки) генерируется сложная система шарниров, хотя должна быть такая, как на 4-м рисунке в статье.
К сожалению, универсальный алгоритм устроен так. Конечно, можно было бы отдельно для прямой просто построить шарнир Липкина-Посселье, но я решил так не делать.
Хабра-эффекта на вашем сайте не боитесь?
уже испытал) Пришлось срочно делать зеркало на университетском сервере.
Круто! А сможет ваша программа нарисовать логотип Хабра? Там внутри будет мешанина из накладывающихся линий, до какого-то предела я думаю сможет, а потом будет каша из сплошного цвета.
В демо линии механизма накладываются друг на друга, а если в реальности создавать механизм, как реализовать, чтобы физические сочленения шарниров не встречались друг с другом, может «многоэтажность» надо делать?
Ага. Многоэтажность — отличное решение.
Это охренеть как круто!
хочу такую штуку живьем увидеть.
Нужно еще сделать, чтобы в 3d ее можно было смотреть, с разных ракурсов.
Всегда мучался вопросом глядя на различные механизмы и траектории движения деталей: Решение было заранее просчитано или это плод проб и ошибок?
Получил ответ. СПАСИБО!
Чувак, я смотрю через две недели наступит четырехлетняя годовщина дня, когда ты чихнул.
Готовишься к празднованию? Это же будет как раз накануне конца света!
Судя по тому, что при «аппроксимации = 1», устройство явно сложнее того, что на гифке в посте, получаемые механизмы можно еще на порядки упрощать
Для прямой — согласен. Но для аппроксимации выше чем 1, не уверен.
НЛО прилетело и опубликовало эту надпись здесь
Нашел баг-не-баг. Недостаток алгоритма наверное. Если написать Hello вытягивая буквы (по оси x) и делать узкие петельки у «l», то рисуется совсем не то изображение.
Тяните аппроксимацию вправо.
Спасибо.
Спасибо за великолепно написанную статью!
Несмотря на формулы и математические выдержки, читается на одном дыхании! В отличие от материалов по ссылкам :)

Кинематика вообще в большинстве своем завораживает. Будь то паровозный привод или шагающий механизм. Да даже съемки работающей подвески автомобиля.

И вопрос напоследок: а как добиться минимального количества звеньев? Даже прямая дается большим количеством при аппроксимировании 1.
Спасибо большое. Там слева есть ползунок «approximation». Надо его подвигать.
Извините. Сначала не понял вопроса. Дело в том, что общий алгоритм для степени аппроксимации n=1 не дает
шарнир липкина-посселье. Я решил, что честнее будет оставить то, что дает общий алгоритм. Тем более, для случаев n>1
я не вижу никакого обозримого способа упростить шарниры.
Не я все понимаю, но почему бы не оптимизировать алгоритм?
image
Порезать на куски и апроксимировать не?
Аппроксимация на максимуме
на изображении 3! (sic) прямые нарисованные нампадом
Если порезать на куски то хватит тупых сплайнов или кривых безье.
А подобрать конфигурацию отрезков можно с помощью ГА,
Тогда смысл аппроксимации в данном примере?
just4fun видимо.
Но для реального решения можно сделать и проще и эффективнее.
Два пива этому девелоперу!
линию можно порезать на куски. А вот создать один общий шарнир для всех кусков — непонятно как.
Ух, спасибо. Всегда хотел знать как высчитывается хитрая траектория рычажных механизмов. (Например того адского механизма который ОДНИМ моторчиком в видаке Электроника ВМЦ8220 делает почти все. От заправки ленты в разные позиции, до выброса и загрузки кассеты).
Класс! Реализация выше всех похвал!
Даа… простейший механизм XY, типа плоттера не так впечатляет… однако делает то же самое ;-)

Заменить 'рваные моменты' на идеальное вращение ценой тысяч рачагов??.. практического смысла в этом конечно — никакого, кроме доказательсятва — возможности.
Шарнирный механизм рисует мою подпись красивее, чем я.
Удивительной красоты пост, математик во мне ликует!
Хочется придти домой и перечитать, разобравшись со всеми доказательствами и нюансами.
Автор, спасибо за доставленное эстетическое удовольствие!
Спасибо, мне очень приятно)
Признаться, я потратил много сил на оптимизацию, чтобы ничего не тормозило на слабых компах, но, скажу честно, особых успехов не достиг.


Спасибо, вы постарались на славу. На моем стареньком ноуте (Pentium-M 740, 512Mb, Firefox 17) рисует исключительно плавно, в отличие от многих других вебприложений.
Судорожно рисует логотип Хабрахабр ))

Слабые стороны данной реализации:
* не справляется с острыми углами, аппроксимируя их в гладкие петли.
* может развернуть петлю в противоположную сторону, что совсем не то, чего хотелось бы.
* простым «прямым» (гладким) участкам уделяется много внимания, получается очень детализированный механизм для простого, который в итоге строит не сглаженный длинный штрих, а очень ломанный (здесь уже выше приводили примеры), в то время как сложные участки с завитками — слишком обделены вниманием.

Но вообще, отличная вещь как старт для разработок, за что отдельное спасибо.
Единственное, не нашёл ни одного упоминания слова «лицензия».
Про лицензию: официально разрешаю всем делать все что угодно с моим кодом, хоть на стенку туалета вешайте.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории