Esto comenzó como un comentario sobre el comentario en la respuesta de @ bummzack, pero creció demasiado.
¿Cómo puedo determinar cuántos segmentos debo tener?
Hay dos enfoques. El primero es solo el algoritmo estándar para representar una curva de Bézier: los puntos de control forman un cuadro delimitador de la curva, por lo que si todos los puntos de control están dentro del épsilon del segmento de línea desde el punto inicial hasta el punto final, usted se aproxima como una línea; de lo contrario, se subdivide usando el algoritmo de de Casteljau. Epsilon se elige según el error que desee en el resultado final. (Para renderizar es generalmente 0.5 píxeles).
El otro enfoque es un refinamiento de eso usando la aritmética de intervalos. Tome la longitud de la línea de principio a fin como el límite inferior y la suma de las longitudes de las líneas a través de los puntos de control como el límite superior. Nuevamente, subdivida según lo requieran sus requisitos de error final.
Uno normalmente se subdivide en t = 0.5, pero el algoritmo de de Casteljau permite la división en cualquier punto, por lo que si tiene un Bézier cúbico con puntos de control C_0 a C_3 y C_2 está mucho más cerca del segmento de línea entre los puntos finales que C_1, puede encontrar que la división en uno de 1/3 o 2/3 da límites más estrechos. No he trabajado en el álgebra para justificar cuál sería mejor, pero puedes experimentar e informar si lo deseas. Si nada más, quería señalar que la opción está ahí.