Комментарии 125
Подпись подделал.
Завораживает.
Завораживает.
Выглядит совершенно фантастично. А есть ли у этой красоты хоть какое-нибудь практическое применение?
Думаю, если добавить устройство вывода и внести определенным образом описываемые погрешности в отображение подписи (к сожалению, я не эксперт, однако у экспертов, работающих в области сверки подписей, должны быть формализуемые и неформализуемые алгоритмы оценки принадлежности подписи), то устройство имеет более чем практическое применение, но, конечно, хотелось бы мнение автора
Я слышал ещё усилие нажатия на бумагу имеет значение. Неплохо бы и это предусмотреть.
Совершенно необязательно использовать шарнирный механизм для рисования кривой на бумаге: уверен, с этим отлично справится два электропривода, меняющие координаты (x,y). А электромагнит, к примеру, может менять давление пера. Современная механика и цифровое управление обеспечат отличную точность. Если же использоваться шарниры, то получится стим-панк техно-монстр для рисования одной кривой.
На мой взгляд это исключительно теоретическая, но очень красивая работа. Как большая часть всей современной математики :E
На мой взгляд это исключительно теоретическая, но очень красивая работа. Как большая часть всей современной математики :E
Именно так это и делалось, на отечественном трехперьевом графопостроителе АП (номер не помню)
Самое сложное было прикрепить шариковую ручку вместо родного чернильного пера.
Сканировалась подпись, обводилась в автокаде — так сказать векторизация.
Ну а дальше дело техники.
Самое сложное было прикрепить шариковую ручку вместо родного чернильного пера.
Сканировалась подпись, обводилась в автокаде — так сказать векторизация.
Ну а дальше дело техники.
ещё усилие нажатия на бумагу имеет значение
Совершенно верно. И еще множество признаков, по которым «компьютерную» подпись можно отличить от человеческой. Кстати, и полная идентичность двух подписей свидетельствует о том, что, по меньшей мере, одна из них поддельная.
Конечно. С её помощью можно создать большую базу данных подписей реальных людей.
А есть ли у этой красоты хоть какое-нибудь практическое применение?
У этой штуки нет никакого практического применения. Оно ей совершенно не нужно. Это чистая, незамутнённая красота. Часто ли встречаете такие теоремы, схему конструтивного доказательства которых можно и хочется закодировать?
Кто говорил, что Хабр не тот? (Я говорил, что Хабр не тот.) Очень радуюсь, когда опровергают это утверждение.
Автоперья: en.wikipedia.org/wiki/Autopen
1803 год. Подписание множества писем президентов, книг фанатам и другие интересные варианты.
Так что практические применения нашлись даже раньше описанных алгоритмов. :)
1803 год. Подписание множества писем президентов, книг фанатам и другие интересные варианты.
Так что практические применения нашлись даже раньше описанных алгоритмов. :)
Даже лучше меня мою подпись рисует :)
Круто! На очереди технология, которая из скана подписи делает при помощи 3D-принтера механизм для ее подделки :)
Фантастика.
Но даже для коротенькой прямой генерирует совершенно нереализуемые конструкции из сотен рычагов.
Но даже для коротенькой прямой генерирует совершенно нереализуемые конструкции из сотен рычагов.
Этот получаемый шарнирный механизм максимально простой или возможна оптимизация для уменьшения количества составляющих?
:-D А на моей подписи получился бред, три буквы превратились в волну… Надо было идти учиться на врача…
А я не смог мышкой свою подпись нарисовать.
Видимо, я один такой, кто не понял, как заюзать эту штуку, а не просто смотреть на крутящиеся многогранники…
upd: ну да, надо же было прочитать, что написано в круге…
upd: ну да, надо же было прочитать, что написано в круге…
Подпись Магомета не подделывается
Впечатляюще!
А теперь нужно все это распечатать на 3D принтере и собрать вживую!
Теперь нужно добавить кнопочку «создать задание для 3D-принтера», чтобы экспортнуть в печать получившееся устройство из шарниров.
Пробовал нарисовать прямую… мышкой,,, под линейку, чтобы увидеть гениальный механизм Липкина-Посселье, который рисует точную прямую в простейшем виде. I failed.
А где можно будет скачать базу данных собранных подписей? :)
Кстати, чтобы нарисовать идеальную прямую в винде, достаточно нажать Alt+Shift+Num Lock и включится управление указателем мыши с клавиатуры. Стрелочки это направления движения мышки, клавиша Insert(0) зажать клавишу мыши, del(.) отжать клавишу мыши.
Эти ваши шарнирные конструкции выглядят так, что я сегодня всю ночь буду мучаться кошмарами :-(
Зрелище завораживает =) Прекрасная статья, которых давно не было на хабре. Единственное, даже при простых линиях механизм слишком сложен. Интересно, как это можно оптимизировать
Поясните, пожалуйста, что делается в этом фрагменте кода:
Поскольку из теории видно, что O — за пределами антипараллелограмма, а тут — будто она посередине между R и Q
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 выступает точка Т:
Просто в проге заместо точки 0 выступает точка Т:
this.T=[this.O[0]+eVertical[0]*OT,this.O[1]+eVertical[1]*O;
Я так и попытался себе это представить :) но не могли бы вы еще технически пояснить, что есть 0,6 * а что такое vertical и eVertical (угловой коэффициент?)
Я знаю, что у программистов это плохой тон писать числа в теле программы) Но я не удержался)
Если мне не изменяет память, 0.6 — это параметр надстройки на антипараллелограмм. Его в разумных пределах можно изменять.
Если мне не изменяет память, 0.6 — это параметр надстройки на антипараллелограмм. Его в разумных пределах можно изменять.
Надстройки? Вероятно, следует прочесть какой-то из научных материалов, ссылки на которые вы давали?
Да. Надо прочесть доказательство)
К своему стыду, ни в обеих пдфках (дипломной работе и основном доказательстве), ни на странице не нашел упоминаний о «параметре надстройки» (о самой надстройке — нашел). Можете показать, что именно я упускаю?
Если Вы в моем доказательстве посмотрите на правую часть этой картинки:

То увидите антипараллелограмм с красненькой «надстройкой», которая выполняет одну единственную функцию — не дасть антипараллелограмму вывернуться в параллелограмм. Дело в том, что точку О на рисунке можно выбрать в любом месте на серединном перпендикуляре к отрезку QR (или PS). И эта произвольность выбора точки О как-раз и контролируется коэффициентом в программе, который взял за 0.6.
Можно было его взять любым (в разумных пределах)

То увидите антипараллелограмм с красненькой «надстройкой», которая выполняет одну единственную функцию — не дасть антипараллелограмму вывернуться в параллелограмм. Дело в том, что точку О на рисунке можно выбрать в любом месте на серединном перпендикуляре к отрезку QR (или PS). И эта произвольность выбора точки О как-раз и контролируется коэффициентом в программе, который взял за 0.6.
Можно было его взять любым (в разумных пределах)
вот эту не подделает 229955.livejournal.com/pics/catalog/457/284
Сделайте закрепленные шарниры визуально отличимыми от незакрепленных, пожалуйста.
Круто! Теперь я понял, что моя подпись имеет более высокую степень защиты, я один раз отрываю ручку от бумаги) Хотя с такими идеями скоро нужно будет вводить правила и уровни безопасности личной подписи. Вот так вот в недалёком будущем расписался на электронном бланке паспорта при получении онного, а тут из динамика: «Блюм, ваша подпись ненадёжна»)
Осталось прикрутить 2 сервопривода и ручку))
Если кому хочется посмотреть на всякие клевые вещи, которые можно сделать с помощью шарнирных механизмов, то можно заглянуть сюда: www.etudes.ru/ru/
Очень сильно. Но тачскрин подпись программа не ест. А ведь пальцем на экране расписываться так естественно.
не прошло и века и я поддержал тачскрин)
david.wf/linkage
david.wf/linkage
Плюсую за интересную работу.
Мою подпись подделать не смог :)
Сделал несколько попыток, разного размера. Не может.
Мою подпись подделать не смог :)
Сделал несколько попыток, разного размера. Не может.
Выглядит жутко. Но впечатляет. Я бы добавил какое-нибудь сглаживание, чтобы простые фигуры рисовать с помощью более простых конструкций. Хотя не знаю, насколько это реализуемо.
Интересно, почему даже для простой прямой линии (даже для точки) генерируется сложная система шарниров, хотя должна быть такая, как на 4-м рисунке в статье.
Хабра-эффекта на вашем сайте не боитесь?
Круто! А сможет ваша программа нарисовать логотип Хабра? Там внутри будет мешанина из накладывающихся линий, до какого-то предела я думаю сможет, а потом будет каша из сплошного цвета.
В демо линии механизма накладываются друг на друга, а если в реальности создавать механизм, как реализовать, чтобы физические сочленения шарниров не встречались друг с другом, может «многоэтажность» надо делать?
Это охренеть как круто!
хочу такую штуку живьем увидеть.
Нужно еще сделать, чтобы в 3d ее можно было смотреть, с разных ракурсов.
хочу такую штуку живьем увидеть.
Нужно еще сделать, чтобы в 3d ее можно было смотреть, с разных ракурсов.
Всегда мучался вопросом глядя на различные механизмы и траектории движения деталей: Решение было заранее просчитано или это плод проб и ошибок?
Получил ответ. СПАСИБО!
Получил ответ. СПАСИБО!
Чувак, я смотрю через две недели наступит четырехлетняя годовщина дня, когда ты чихнул.
Готовишься к празднованию? Это же будет как раз накануне конца света!
Готовишься к празднованию? Это же будет как раз накануне конца света!
Судя по тому, что при «аппроксимации = 1», устройство явно сложнее того, что на гифке в посте, получаемые механизмы можно еще на порядки упрощать
Нашел баг-не-баг. Недостаток алгоритма наверное. Если написать Hello вытягивая буквы (по оси x) и делать узкие петельки у «l», то рисуется совсем не то изображение.


Спасибо за великолепно написанную статью!
Несмотря на формулы и математические выдержки, читается на одном дыхании! В отличие от материалов по ссылкам :)
Кинематика вообще в большинстве своем завораживает. Будь то паровозный привод или шагающий механизм. Да даже съемки работающей подвески автомобиля.
И вопрос напоследок: а как добиться минимального количества звеньев? Даже прямая дается большим количеством при аппроксимировании 1.
Несмотря на формулы и математические выдержки, читается на одном дыхании! В отличие от материалов по ссылкам :)
Кинематика вообще в большинстве своем завораживает. Будь то паровозный привод или шагающий механизм. Да даже съемки работающей подвески автомобиля.
И вопрос напоследок: а как добиться минимального количества звеньев? Даже прямая дается большим количеством при аппроксимировании 1.
Спасибо большое. Там слева есть ползунок «approximation». Надо его подвигать.
Не я все понимаю, но почему бы не оптимизировать алгоритм?

Порезать на куски и апроксимировать не?
Аппроксимация на максимуме

Порезать на куски и апроксимировать не?
Аппроксимация на максимуме
Ух, спасибо. Всегда хотел знать как высчитывается хитрая траектория рычажных механизмов. (Например того адского механизма который ОДНИМ моторчиком в видаке Электроника ВМЦ8220 делает почти все. От заправки ленты в разные позиции, до выброса и загрузки кассеты).
Класс! Реализация выше всех похвал!
Даа… простейший механизм XY, типа плоттера не так впечатляет… однако делает то же самое ;-)
Заменить 'рваные моменты' на идеальное вращение ценой тысяч рачагов??.. практического смысла в этом конечно — никакого, кроме доказательсятва — возможности.
Заменить 'рваные моменты' на идеальное вращение ценой тысяч рачагов??.. практического смысла в этом конечно — никакого, кроме доказательсятва — возможности.
Шарнирный механизм рисует мою подпись красивее, чем я.
Удивительной красоты пост, математик во мне ликует!
Хочется придти домой и перечитать, разобравшись со всеми доказательствами и нюансами.
Автор, спасибо за доставленное эстетическое удовольствие!
Хочется придти домой и перечитать, разобравшись со всеми доказательствами и нюансами.
Автор, спасибо за доставленное эстетическое удовольствие!
Признаться, я потратил много сил на оптимизацию, чтобы ничего не тормозило на слабых компах, но, скажу честно, особых успехов не достиг.
Спасибо, вы постарались на славу. На моем стареньком ноуте (Pentium-M 740, 512Mb, Firefox 17) рисует исключительно плавно, в отличие от многих других вебприложений.
Судорожно рисует логотип Хабрахабр ))


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