Isso começou como um comentário no comentário da resposta de @ bummzack, mas demorou demais.
como posso determinar quantos segmentos devo ter
Existem duas abordagens. O primeiro é apenas o algoritmo padrão para renderizar uma curva de Bézier: os pontos de controle formam uma caixa delimitadora da curva; portanto, se todos os pontos de controle estiverem dentro do epsilon do segmento de linha, do ponto inicial ao ponto final, você se aproxima como uma linha; caso contrário, você subdividirá usando o algoritmo de Casteljau. O Epsilon é escolhido de acordo com o erro que você deseja no resultado final. (Para renderização, geralmente são 0,5 pixels).
A outra abordagem é um refinamento da que usa aritmética de intervalo. Pegue o comprimento da linha do início ao fim como o limite inferior e a soma dos comprimentos das linhas através dos pontos de controle como o limite superior. Mais uma vez, subdividir conforme exigido pelos seus requisitos finais de erro.
Normalmente, um subdivide em t = 0,5, mas o algoritmo de Casteljau permite a divisão em qualquer ponto; portanto, se você tiver um Bézier cúbico com pontos de controle C_0 a C_3 e C_2 estiver muito mais próximo do segmento de linha entre os pontos de extremidade do que C_1, poderá encontrar essa divisão em um de 1/3 ou 2/3 fornece limites mais apertados. Eu não trabalhei na álgebra para justificar qual seria melhor, mas você pode experimentar e informar, se quiser. Se nada mais, eu queria salientar que a opção está lá.