Коррекция алгоритма нахождения ближайшего цвета в палитре

Была необходимость в одной работе находить в палитре цвет близкий к заданному. Одним словом, цвет наиболее подходящий для замены текущего. Решение очевидно — надо выбрать точку цветового куба ближайшую к искомой. Также и очевидно решение (Пифагор подсказал):

где a, b, c — длины проекций на координатных осях отрезка, соединяющего две точки цветового куба.

 Вроде бы всё ясно, но требуется много вычислений, да ещё со всеми цветами палитры …

Можно ли ускорить работу алгоритма?

Если подумать, то вычисление квадратного корня  и возведение в степень не требуется. На конечный результат это не повлияет: мы ищем самый короткий отрезок, и работа пойдёт быстрее.

Тогда для нахождения наименьшего отрезка достаточно складывать и сравнивать длины проекций этих отрезков (прости, Пифагор 🙁 ), то есть:

Вот и всё!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *