Объединение геометрии CGContext

Кто-нибудь знает, можно ли комбинировать (например) разные пути CGContext для создания новой комбинированной формы, как в этом примере?

введите здесь описание изображения

Спасибо!


person Jeshua Lacock    schedule 16.11.2012    source источник


Ответы (2)


Я нашел библиотеку, которая выполняет операции Union на CGPaths:

https://bitbucket.org/martinwinter/vectorbooleancg

Я еще не пробовал, но автор ветки CG Vectorbool, Мартин Винтер, утверждает, что операцию объединения можно использовать в ее текущем виде на iOS. Я добавлю информацию, когда соберусь попробовать ее реализовать.

person Jeshua Lacock    schedule 16.11.2012

Я сомневаюсь, что есть библиотека Apple, поддерживающая эту функцию.

Вам нужно так называемое «объединение двух (или более) полигонов», иногда называемое булевыми операциями над полигонами. Я бы преобразовал CGPath в многоугольник, возможно, вы начнете создавать массив точек, содержащий точки вашего многоугольника. Это означает не использовать CGPathAddEllipse, а аппроксимировать формы, например, правильным многоугольником с числом вершин от 64 до 256.

Вы можете легко вычислить точки круга или эллипса для себя (используя что-то похожее на a*cos(t), b*sin(t) см. википедию для формулы параметра эллипса). Затем вы берете одну из библиотек c, которые предоставляют эти "союзные операции". Одним из них является библиотека LEDA.

person AlexWien    schedule 16.11.2012
comment
Спасибо AlexWien, но на самом деле мне нужны кривые Безье, а не полигоны. - person Jeshua Lacock; 17.11.2012