Ранее по теме:
1,
2
Место действия: Intel Performance Primitives Library.
Есть там такая группа функций, WarpAffine. Берёт картинку и аффинно преобразует заданный четырёхугольник в другой заданный четырёхугольник в другой картинке.
Дико полезная фича.
Вот только, если вы ей дадите целевые координаты (0, 0)–(w, 0)–(w, h)–(0, h), то с некоторой ненулевой вероятностью она вам «забудет» залить нулевую колонку и/или нулевую строку.
Лечится указанием координат (–0.5, –0.5)–(w–0.5, –0.5)–(w–0.5, h–0.5)–(–0.5, h–0.5).
Мораль: Если ты используешь вещественночисленную координатную сетку с пикселами, считай целые числа границами между пикселами, а центры пикселей — значениями Z+0.5, где Z целое. Это естественнее и совместимо с будущим (тем же GDI+, например).
Состояние: хочу категории записей, чтобы все IPP’шные gotchas записать в неё и потом легко находить