lo que pide que se llama un parallel or offset curve en matemáticas. El artículo de Wikipedia (citado anteriormente por otros) sobre las curvas de Bezier no se pudo vincular al artículo correcto para "curva de compensación", pero lo he solucionado hace unos segundos. En el mundo de los gráficos vectoriales, esa misma noción se llama acariciando la ruta.
En general, para la curva cúbica/Bezier, la curva de desplazamiento es un polinomio de orden décimo.Fuente: Kilgard, p. 28
Si todo lo que quiere hacer es rasterizar tales curvas de desplazamiento, en lugar de calcular su forma analítica, puede, por ejemplo, ver las fuentes de ghostscript. También puede consultar this patent application para ver cómo lo hace NV_path_rendering.
Si desea encubrir/aproximar las curvas de desplazamiento, entonces el documento TUG en MetaFog para cubrir METAFONT a las fuentes PostScript es una buena lectura. El sistema METAFONT, anterior a PostScript, permitía describir las fuentes mediante la operación (más matemáticamente compleja) de stroking, pero las fuentes PostScript Tipo 1 solo permiten el relleno para ser utilizado (a diferencia de los dibujos PostScript en general) por razones de velocidad.
Otro algoritmo para aproximar los desplazamientos como (solo dos) Béziers (uno a cada lado), con el código en PostScript, se da en la sección 7 de this paper by Gernot Hoffmann. (Sombrero de punta a alguien en el foro de OpenGL para encontrarlo.)
De hecho, hay muchos de esos algoritmos. Encontré un 1997 survey de varios algoritmos para aproximar las curvas de desplazamiento. Suponen que las curvas progenitoras son Beziers o NURBS.
conjetura pura, nunca lo he hecho yo mismo, pero ¿podría simplemente copiar la curva después de que se haya mostrado como algún tipo de "imagen", y simplemente volver a dibujarla con un nuevo color en el desplazamiento preferido? – warren
@warren No mantendría un desplazamiento de 1px –
si dibuja una curva de, digamos, '0,0 a 2,2 a 0,2', luego copie la curva en una imagen y vuelva a dibujar centrada en' 4,4 '(en lugar de' 2,2'), ¿no daría esto un desplazamiento de 1px? – warren