Здравствуйте, Рома Мик, Вы писали:
РМ>Проблема у меня в пункте 3. А именно: имея три точки A, B, C, получить параметрическое дуги от B до C. РМ>Вроде бы все вполне понятно: находим центр окружности (просто пересечение срединных перпендикуляров AB и BC), находим радиус, углы начальный и конечный. Вопросы возникают в вырожденных случаях: если ABC лежат на одной прямой, то уже радиус бесконечный. РМ>Есть ли какой-то способ получить такое, без условных операторов.
Нужно вместо радиуса использовать кривизну — величину, обратную радиусу. Тогда для прямой значение кривизны будет равно нулю.
Поскольку для angle-based blending нужна даже не кривизна, а угол, то есть смысл оперировать углом касательной дуги к её хорде.
Для дуги, вырожденной в хорду, ясное дело, угол равен 0.
Как находить точки дуги по хорде и углу касательной — тут надо подумать.