Аппроксимация окружности полилинией

Почему окружность заменяют на многоугольник?

Это делается по ряду причин:

1. во-первых для унификации представления (и хранения) объектов на сцене. Если вы имеете множество разных объектов на сцене и все они состоят из маленьких линий, то будет проще реализовать все интерактивные механики: поиск пересечений, поиск попадания точки на контур (снеппинг / пикинг), внутрь площади (ховер). Не нужно будет писать специальных отдельных функий для окружности или других параметрических кривых. Чем больше унификации тем легче поддерживать код.

2. Во-вторых, отрисовать линию часто гораздо проще в отличии от окружности, требует меньше математических расчетов. Не нужно использовать тригонометрических функций.

3. В-третьих, если вы осуществляете рендеринг графики на GPU (например использую OpenGL), то нужно понимать что такого понятие как "окружность" для видеокатры не существует. Видео карта может выводить только точки, линии и треугольники. Существуют специальные техники, как отрисовка через шейдер и так далее. Но это опять же заставляет нас прописывать отдельные ветки логики испключительно под узкую задачу, что не всегда возможно и сделать унифицированное решение часто более выгодно, по скорости, по цене поддержки и другим параметрам.

Проблемы аппркоксимации окружности через правильный многоугольник

При аппроксимации окружности через правильный многоугольник проблемы начинают возникать при зумминге. Если сильно приблизить такую псведо-окружность то можно увидеть артефакты в виде нарушения плавности окружности (будут отчетливо видны углы).  Если эта проблема критична для программы (это не всегда является принципиальным), то это можно решать различными техниками LOD (уровнем детализации), можно иметь несколько статичных наборов вершин для одной и той же окружности для разного зумминга.

Существуют и другие техники вроде SDF, геометрического или тесселяционнго шейдера. Но все они имеют свои недостатки.