LINUX.ORG.RU

История изменений

Исправление LINUX-ORG-RU, (текущая версия) :

Часто логика работы программы, и идеи лежащие в основе транзита ввод->результат видно буквально глазами или по косвенным признакам. Конкретно эту программу отреверсить можно буквально по скриншоту.

Скорее всего, на холсте одновременно рисуется два слоя, первый произвольный корявый, а второй из прямых/кривых линий (в зависимости от динамики рисования) первый мы видим, а по второму программа определяет фигуру. Например если рисуя линию я резко меняю направление движения «карандаша» это легко заметить и сформировать в этом месте точку от которой идёт другая невидимая линия. А далее просто игнорируем маленькие ломанные линии, и смотрим на углы пересечения и их количество с учётом некой погрешности + отношения углов друг к другу, по итоговому результату можно просто из таблички брать имя фигуры =)

Всё, я отреверсил. Теперь осталась нудятина, записать эти мысли в код, попутно додумывая детали.

Для полноты картины можно ещё сломать алгоритм, чтобы программа не смогла определить фигуру, если посмотреть на это в картинке, то это будет тоже самое что прочитать исходники, через строчку.

Исходная версия LINUX-ORG-RU, :

Часто логика работы программы, и идеи лежащие в основе транзита ввод->результат видно буквально глазами или по косвенным признакам. Конкретно эту программу отреверсить можно буквально по скриншоту.

Скорее всего, на холсте одновременно рисуется два слоя, первый произвольный корявый, а второй из прямых/кривых линий (в зависимости от динамики рисования) первый мы видим, а по второму программа определяет фигуру. Например если рисуя линию я резко меняю направление движения «карандаша» это легко заметить и сформировать в этом месте точку от которой идёт другая невидимая линия. А далее просто игнорируем маленькие ломанные линии, и смотрим на углы пересечения и их количество с учётом некой погрешности + отношения углов друг к другу, по итоговому результату можно просто из таблички брать имя фигуры =)

Всё, я отреверсил. Теперь осталась нудятина, записать эти мысли в код, попутно додумывая детали.