2009-11-18 6 views
0

Я довольно новичок в Quartz 2D.Кварц 2D Вращение пути

Представьте себе следующий сценарий:

У вас есть мини-вид карты окружность-образную форму. Я рисую треугольник (дуга сейчас не важна) поверх карты. Эта форма представляет видимую область.

Мне нужно, чтобы форма треугольника вращалась вдоль мини-карты, когда пользователь меняет ориентацию.

В настоящее время это, как путь втягивается:

CGAffineTransform transform = CGAffineTransformMakeRotation(angleInRadians); 

CGPath visibleAreaPath = CGPathCreateMutable(); 

CGPathMoveToPoint(visibleAreaPath, &transform, miniMapCenter.x, miniMapCenter.y); 
CGPathAddLineToPoint(visibleAreaPath, &transform, 18.0, 8.0); 
CGPathAddLineToPoint(visibleAreaPath, &transform, 66.0, 8.0); 

CGPathCloseSubpath(visibleAreaPath); 

Я тогда нарисовать путь с помощью CAShapeLayer как так:

CALayer *rootLayer = [visibleAreaView layer]; 

visibleAreaShape = [CAShapeLayer layer]; 
[visibleAreaShape setFillColor:[UIColor colorWithHue:0.584 saturation:0.8 brightness:0.9 alpha:0.6].CGColor]; 
[visibleAreaShape setFillRule:kCAFillRuleNonZero]; 
[visibleAreaShape setAnchorPoint:CGPointMake(0.5, 0.5)]; 
[rootLayer addSublayer:visibleAreaShape]; 
[visibleAreaShape setPath:visibleAreaPath]; 

Путь вращается, но не на основе заданной происхождение. Имейте в виду, что установка точки привязки слоя не помогает мне, так что я хочу, чтобы повернуть путь (в конечном счете, я даже не нужно будет отображать его, так как я буду использовать его, чтобы определить, какие точки видны на мини-карта).

Любые идеи о том, как это сделать? Спасибо.

+0

Вы имеете в виду, что путь всегда вращается под тем же углом относительно надзора? Другими словами, вращения не являются накопительными? – TechZen

ответ

0

Я предлагаю вам хранить точки в полярной форме и преобразовывать их в путь по мере необходимости. Очень легко вращаться в полярных координатах (просто измените значение тета).

Смежные вопросы