Здравствуйте, Рома Мик, Вы писали:
РМ>Читал вот это: http://www.eecs.berkeley.edu/~sequin/TALKS/SIGG03_Csplines.ppt
РМ>Проблема у меня в пункте 3. А именно: имея три точки A, B, C, получить параметрическое дуги от B до C.
РМ>Вроде бы все вполне понятно: находим центр окружности (просто пересечение срединных перпендикуляров AB и BC), находим радиус, углы начальный и конечный. Вопросы возникают в вырожденных случаях: если ABC лежат на одной прямой, то уже радиус бесконечный.
РМ>Есть ли какой-то способ получить такое, без условных операторов.
Вот же цитата из этой статьи:
To handle robustly the case of arcs of arbitrary large radii, including straight-line connections between Pi and Pi+1, the point P(u) traveling on Arc(u) is parametrically described as a distance f(u) = |Pi,Pi+1| sin(u τ(u)) / sin(τ(u)) from endpoint Pi and a deviation angle φ(u) = (1-u) τ(u) from line segment (Pi,Pi+1).
— соответствующий рисунок есть на слайде 43.