Как определить форму, созданную с использованием CAShapeLayer
путем применения UIBezierPath
, является замкнутым контуром или нет? Какой алгоритм используется для определения того же.Алгоритм определения замкнутого контура в iOS
Как показано 2 изображения: один из них представляет собой замкнутый контур, а другой нет.
Изображение с замкнутым контуром:
Изображение не имеющий замкнутый контур:
код, используемый для рисования первое изображение выглядит следующим образом:
UIBezierPath *mainPath =[UIBezierPath bezierPath];
[mainPath addArcWithCenter:CGPointMake(120, 120) radius:50 startAngle:DEGREES_TO_RADIANS(0) endAngle:DEGREES_TO_RADIANS(90) clockwise:YES];
[mainPath addArcWithCenter:CGPointMake(120,120) radius:50 startAngle:DEGREES_TO_RADIANS(90) endAngle:DEGREES_TO_RADIANS(180) clockwise:YES];
[mainPath addLineToPoint:CGPointMake(170, 120)];
CAShapeLayer *sLayer = [CAShapeLayer layer];
sLayer.strokeColor = [UIColor blueColor].CGColor;
sLayer.path = mainPath.CGPath;
sLayer.fillColor = [UIColor clearColor].CGColor;
[[self.view layer] addSublayer:sLayer];
для других есть удаление линия:
[mainPath addLineToPoint:CGPointMake(170, 120)];
Что делать, если форма состоит из нескольких подпутей? – Codo
он будет работать на нескольких подпутьях. – Shrawan
Если путь имеет несколько подпутов и не все из них закрыты, ваш код возвращает * true *. Это правильный ответ? Я сомневаюсь. Хороший код в противном случае. – Codo