Это началось как комментарий к комментарию к ответу @ bummzack, но вырос слишком долго.
как я могу определить, сколько сегментов я должен иметь
Есть два подхода. Первый - это просто стандартный алгоритм рендеринга кривой Безье: контрольные точки образуют ограничивающую рамку кривой, поэтому, если все контрольные точки находятся в эпсилоне от отрезка линии от начальной точки до конечной точки, вы приближаетесь к линии; в противном случае вы подразделяете, используя алгоритм де Кастеляу. Эпсилон выбирается в соответствии с ошибкой, которую вы хотите в конечном результате. (Для рендеринга обычно это 0,5 пикселя).
Другой подход - это уточнение с использованием интервальной арифметики. В качестве нижней границы берется длина линии от начала до конца, а в качестве верхней границы - сумма длин линий через контрольные точки. Опять же, подразделите в соответствии с вашими требованиями к окончательной ошибке.
Обычно делится на t = 0.5, но алгоритм де Кастельхау позволяет расщеплять в любой точке, поэтому, если у вас кубический Безье с контрольными точками от C_0 до C_3 и C_2 гораздо ближе к отрезку линии между конечными точками, чем C_1, вы можете обнаружить, что расщепление в одна из 1/3 или 2/3 дает более жесткие границы. Я не работал с алгеброй, чтобы обосновать, что было бы лучше, но вы можете поэкспериментировать и сообщить, если хотите. Если ничего другого, я хотел бы указать, что вариант есть.