У меня есть UIBezierPath из массива CGPoint's с помощью функции addCurveToPoint, вот немного кода:Как я могу узнать, близок ли массив CGPoint к другому массиву CGPoint?
UIBezierPath *path = [[UIBezierPath alloc] init];
[path setLineWidth:10];
[path moveToPoint:pts[0]];
for(int i = 0; i<[array count]; i++) {
[path addCurveToPoint:[array objectAtIndex:i] controlPoint1:pts[1] controlPoint2:pts[2]];
}
Когда прикосновение распознается на взгляд, я получаю точку прикосновения и мне нужно сравнить его с GCPoint'ами UIBezierPath и сказать, находится ли он внутри UIBezierPath или нет. То, что я использовал это функция containsPoint но didn't работы, вот мой код:
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
CGPoint p = [touch locationInView:self];
CGPoint point = CGPointMake(p.x, p.y);
NSLog(@"actual point x %f y %f", point.x, point.y);
if ([path containsPoint:point]) {
NSLog(@"it contains the point");
}
}
В конце концов, мне нужно, чтобы получить все множество из затронутых пунктов и сказать, если тронули точки внутри из UIBezierPath (или большинства из них) и добавьте ошибку поля, поэтому touch не нужно так точно, также как я могу сказать, насколько далеко находится точка UIBezierPath?
Что вы имеете в виду под "containsPath не работает"? Он должен работать. Обратите внимание, что путь безье должен быть * закрыт * для теста. –
Вы имеете в виду использование [path closePath]? –
Да, точно. (Он упоминается в документации 'containsPoint:'.) –