LINUX.ORG.RU

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

Исправление Chord, (текущая версия) :

То есть один примитив — 10x10 пикселов? Градаций серого нет, строго чёрные или белые пикселы?

да, один примитив 10х10, градации серого могут быть на границах примитива из-за сглаживания

Если при каждом запуске форма примитивов меняется, то, получается, ты сперва составляешь полный набор, с которым впоследствии сравниваешь?

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

Если форма и положение примитива не меняется в течение одного запуска, то можно просто сравнивать с шаблоном

В течение одного запуска форма не меняется, но положение может меняться, поэтому надо просматривать всю картинку 20х20 клеток

Тейк про диагональный хеш, если честно, я не понял — зачем оно надо?

Сравнивать два хэша (uint) быстрее, чем попиксельно сравнивать картинки. И чем больше примитивов - тем более выгодно использовать целочисленное сравнение.

Если читать по горизонтали (или вертикали) к примеру одну линию в пределах клетки 10х10, например по центру клетки, то иногда возникают коллизии, два разных примитива могут давать одинаковый хэш. При чтении по диагонали коллизий нет, однозначно хэш определяет примитив.

В общем скачиваю виндовый qt, посмотрю, если скорость как в моём алгоритме устраивает - так и оставлю. Если будет медленнее, чем в линуксе - буду смотреть буфер

Исходная версия Chord, :

То есть один примитив — 10x10 пикселов? Градаций серого нет, строго чёрные или белые пикселы?

да, один примитив 10х10, градации серого могут быть на границах примитива из-за сглаживания

Если при каждом запуске форма примитивов меняется, то, получается, ты сперва составляешь полный набор, с которым впоследствии сравниваешь?

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

Если форма и положение примитива не меняется в течение одного запуска, то можно просто сравнивать с шаблоном

В течение одного запуска форма не меняется, но положение может меняться, поэтому надо просматривать всю картинку 20х20 клеток

Тейк про диагональный хеш, если честно, я не понял — зачем оно надо?

Если читать по горизонтали (или вертикали) к примеру одну линию в пределах клетки 10х10, например по центру клетки, то иногда возникают коллизии, два разных примитива могут давать одинаковый хэш. При чтении по диагонали коллизий нет, однозначно хэш определяет примитив.

В общем скачиваю виндовый qt, посмотрю, если скорость как в моём алгоритме устраивает - так и оставлю. Если будет медленнее, чем в линуксе - буду смотреть буфер