Что вы просите называется parallel or offset curve в математике. В статье Википедии (приведенной выше другими) на кривых Безье не удалось ссылаться на правильную статью для «кривой смещения», но я исправил ее несколько секунд назад. В мире векторной графики это же понятие называется поглаживание путь.
В целом, для кривой кубика/Безье кривая смещения является полиномом 10-го порядка!Источник: Kilgard, p. 28
Если все, что вы хотите сделать, это растрировать такие кривые смещения, а не вычислять их аналитическую форму, вы можете, например, посмотреть на источники ghostscript. Вы также можете посмотреть this patent application, чтобы посмотреть, как это делает NV_path_rendering.
Если вы хотите скрывать/приближать кривые смещения, то TUG-бумага на MetaFog для покрытия шрифтов METAFONT для PostScript является хорошим показанием. Система METAFONT, которая предшествовала PostScript, разрешала шрифты описываться (более математически сложная) операция поглаживания, но шрифты PostScript Type 1 допускают только заполнение (в отличие от рисунков PostScript в целом) из соображений скорости.
Другой алгоритм для аппроксимации смещений как (всего два) Безье (по одному с каждой стороны) с кодом в PostScript приведен в разделе 7 из this paper by Gernot Hoffmann. (Подсказка для кого-то на форуме OpenGL для его поиска.)
На самом деле таких алгоритмов действительно много. Я нашел 1997 survey различных алгоритмов для аппроксимации кривых смещения. Они предполагают, что кривые прародителя - это Безье или NURBS.
Чистая гипотеза, никогда не сделавшая этого сама, но можете ли вы просто скопировать кривую после того, как она будет отображаться как «изображение», и просто перерисовать ее новым цветом при предпочтительном смещении? – warren
@warren Он не сохранит смещение 1px –
, если вы нарисуете кривую от, скажем, от 0,0 до 2,2 до 0,2', затем скопируйте кривую в изображение и перерисуйте по центру на 4,4 '(вместо' 2,2'), то это не даст смещение 1px? – warren