Это для приложения для iPad, но по сути это математический вопрос.
Мне нужно нарисовать дугу окружности переменной (монотонно увеличивающейся) ширины линии. В начале кривой он будет иметь начальную толщину (скажем, 2 точки), а затем толщина будет плавно увеличиваться до конца дуги, где она будет максимальной толщиной (скажем, 12 точек).
Я считаю, что лучший способ сделать это - создать UIBezierPath и заполнить форму. Моя первая попытка состояла в том, чтобы использовать две дуги окружности (со смещенными центрами), и они отлично работали до 90 °, но дуга часто будет между 90 ° и 180 °, так что такой подход не срезает ее.
Мой нынешний подход состоит в том, чтобы сделать небольшую спираль (одна слегка вырастает из дуги окружности, а другая слегка сокращается) с использованием четырехугольных или кубических кривых Безье. Вопрос в том, где разместить контрольные точки, чтобы отклонение от дуги окружности (также известное как «толщина» формы) было желаемым значением.
Ограничения:
- Форма должна иметь возможность начинаться и заканчиваться под произвольным углом (в пределах 180 ° друг от друга).
- «Толщина» формы (отклонение от круга) должна начинаться и заканчиваться заданными значениями.
- «Толщина» должна монотонно увеличиваться (не может увеличиваться, а потом снова уменьшаться).
- Он должен выглядеть гладким, резких изгибов быть не может.
Я открыт и для других решений.