Pull to refresh

Comments 125

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

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


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

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

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

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

Идея и реализация — просто супер!
Лучшая статья за последнее время!
Этот получаемый шарнирный механизм максимально простой или возможна оптимизация для уменьшения количества составляющих?
UFO just landed and posted this here
Хех… Зато какое поле для генетических алгоритмов :)))
UFO just landed and posted this here
Можно ведь просто отключать подачу чернил для имитации отрыва пера от бумаги.
UFO just landed and posted this here
Попробуйте увеличить степень аппроксимации — результат будет больше соответствовать Вашему рисунку.
При дефолтной «approximation: 20» из моей подписи (так же срезая углы и завитушки) получилось примерно то, что выходит у меня, когда расписываюсь небрежно. Реалистично :)
:-D А на моей подписи получился бред, три буквы превратились в волну… Надо было идти учиться на врача…
Видимо, я один такой, кто не понял, как заюзать эту штуку, а не просто смотреть на крутящиеся многогранники…
upd: ну да, надо же было прочитать, что написано в круге…
Подпись Магомета не подделывается
думаю, автор имел в виду байку, по которой магомет расписывался крестиком
У вас подходящая аватара.
Я даже сперва подумал, что то не аватар, а вы картинку вставили, чтобы выразить эмоции рисовальщика (или свои).
UFO just landed and posted this here
ага, и ник тоже по случаю подправил
почерком вы очень смахиваете на тестировщика ПО
А теперь нужно все это распечатать на 3D принтере и собрать вживую!
невозможно такой механизм построить
Теперь нужно добавить кнопочку «создать задание для 3D-принтера», чтобы экспортнуть в печать получившееся устройство из шарниров.
Обновлять комментарии… Обновлять комментарии… Обновлять комментарии… Обновлять комментарии…
Пробовал нарисовать прямую… мышкой,,, под линейку, чтобы увидеть гениальный механизм Липкина-Посселье, который рисует точную прямую в простейшем виде. I failed.
аппроксимация одним членом дает, в принципе, что-то похожее, только наворотов побольше
Можно просто аппроксимацию выставить в 1 :-)
А где можно будет скачать базу данных собранных подписей? :)
«Чтобы скачать что-нибудь ненужное базу данных, надо сначала создать базу данных, а у нас логинов нет...» (с) Шарик
Кстати, чтобы нарисовать идеальную прямую в винде, достаточно нажать 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/
UFO just landed and posted this here
Ага. Приятно, что знаете! Одна хорошая команда все это хозяйство делает.
Как я понял, вы — часть этой команды? Спасибо вам за работу.
Очень сильно. Но тачскрин подпись программа не ест. А ведь пальцем на экране расписываться так естественно.
Плюсую за интересную работу.
Мою подпись подделать не смог :)
Сделал несколько попыток, разного размера. Не может.
Вероятно просто не хватает аппроксимации в 99, если, конечно, вы её не забыли выставить в 99
забыл :) ближе к 80 уже похоже
Выглядит жутко. Но впечатляет. Я бы добавил какое-нибудь сглаживание, чтобы простые фигуры рисовать с помощью более простых конструкций. Хотя не знаю, насколько это реализуемо.
UFO just landed and posted this here
Интересно, почему даже для простой прямой линии (даже для точки) генерируется сложная система шарниров, хотя должна быть такая, как на 4-м рисунке в статье.
К сожалению, универсальный алгоритм устроен так. Конечно, можно было бы отдельно для прямой просто построить шарнир Липкина-Посселье, но я решил так не делать.
Хабра-эффекта на вашем сайте не боитесь?
уже испытал) Пришлось срочно делать зеркало на университетском сервере.
Круто! А сможет ваша программа нарисовать логотип Хабра? Там внутри будет мешанина из накладывающихся линий, до какого-то предела я думаю сможет, а потом будет каша из сплошного цвета.
В демо линии механизма накладываются друг на друга, а если в реальности создавать механизм, как реализовать, чтобы физические сочленения шарниров не встречались друг с другом, может «многоэтажность» надо делать?
Ага. Многоэтажность — отличное решение.
Это охренеть как круто!
хочу такую штуку живьем увидеть.
Нужно еще сделать, чтобы в 3d ее можно было смотреть, с разных ракурсов.
Всегда мучался вопросом глядя на различные механизмы и траектории движения деталей: Решение было заранее просчитано или это плод проб и ошибок?
Получил ответ. СПАСИБО!
Чувак, я смотрю через две недели наступит четырехлетняя годовщина дня, когда ты чихнул.
Готовишься к празднованию? Это же будет как раз накануне конца света!
Судя по тому, что при «аппроксимации = 1», устройство явно сложнее того, что на гифке в посте, получаемые механизмы можно еще на порядки упрощать
Для прямой — согласен. Но для аппроксимации выше чем 1, не уверен.
UFO just landed and posted this here
Нашел баг-не-баг. Недостаток алгоритма наверное. Если написать Hello вытягивая буквы (по оси x) и делать узкие петельки у «l», то рисуется совсем не то изображение.
Тяните аппроксимацию вправо.
Спасибо за великолепно написанную статью!
Несмотря на формулы и математические выдержки, читается на одном дыхании! В отличие от материалов по ссылкам :)

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

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

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


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

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

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

Articles